YUE¶
Overview¶
YUE is the player's personal bank contract. Each player has a YUE that holds their assets, manages exchange rates, and provides withdrawals. It integrates with the CHAN for opt-in game mechanics.
- Kind: Contract
- License: Sharia
- Solidity: ^0.8.21
- Source:
domain/yue.sol
Inheritance Chain (C3 Linearized)¶
- self — YUE
- DYSNOMIA
- MultiOwnable
Immediate Parents¶
What This Means For Players¶
Plain English Summary: YUE is your personal bank - it holds your winnings and handles exchanges. Every player has their own YUE that stores game tokens, tracks activity, and lets you trade between different currencies. It's like having a private bank account in the game.
Real-World Analogy: Think of YUE as your bank account plus a currency exchange booth. You can deposit earnings, withdraw to your wallet, and exchange one type of game token for another. Your YUE remembers your transaction history and calculates rates for exchanges.
How It Affects Your Gameplay:
- Hold assets - Game rewards and earnings accumulate in your YUE
- Exchange tokens - Use Hong to buy and Hung to sell QING tokens
- Withdraw - Move tokens from your YUE to your actual wallet
- Track activity - Your bar values (Hypobar/Epibar) record your QING interactions
State Variables¶
| Variable | Type | Visibility | Mutability | Initial Value | NatSpec |
|---|---|---|---|---|---|
Type |
string |
public | constant | YUE |
|
Chan |
CHAN |
public | mutable | `` | |
Origin |
address |
public | mutable | `` | |
Hypobar |
mapping(address => uint256) |
private | mutable | `` | |
Epibar |
mapping(address => uint256) |
private | mutable | `` |
Errors¶
| Error | Parameters | NatSpec |
|---|---|---|
InvalidPair |
address SpendAsset, address ReceiveAsset | |
ExchangeRateNotFound |
address SpendAsset, address ReceiveAsset | |
OnlyGameTokens |
address what | |
OnlyChan |
address Sender, address Chan | |
ZeroHoldings |
address Who |
Constructor¶
constructor¶
constructor(string memory name, string memory symbol, address ChanAddress) DYSNOMIA(name, symbol, address(DYSNOMIA(ChanAddress).Xiao()))
- Modifiers:
DYSNOMIA(name, symbol, address(DYSNOMIA(ChanAddress).Xiao())) - Parameters: string memory name, string memory symbol, address ChanAddress
Functions¶
External & Public¶
hasMint¶
- Visibility: public
- State Mutability: view
- Parameters: address _contract
- Returns: bool does
ChangeOrigin¶
- Visibility: public
- Modifiers:
onlyOwners - Parameters: address NewOrigin
IsValidAsset¶
- Visibility: public
- State Mutability: view
- Parameters: address GwatAsset, address Integrative
- Returns: bool
Hong¶
- Visibility: public
- Parameters: address SpendAsset, address QingAsset, uint256 PurchaseAmount
Hung¶
- Visibility: public
- Parameters: address QingAsset, address ReceiveAsset, uint256 RedeemAmount
GetAssetRate¶
- Visibility: public
- State Mutability: view
- Parameters: address GwatAsset, address Integrative
- Returns: uint256 Rate
Withdraw¶
- Visibility: public
- Modifiers:
onlyOwners - Parameters: address what, address To, uint256 amount
MintToOrigin¶
- Visibility: public
- Modifiers:
onlyOwners
Bar¶
- Visibility: public
- State Mutability: view
- Parameters: address Qing
- Returns: uint256 Hypogram, uint256 Epigram
React¶
- Visibility: public
- Modifiers:
onlyOwners - Parameters: address Qing
- Returns: uint256 Charge
Inherited Members¶
This contract inherits the members below from its parents. See each parent's dedicated MD for full signatures, NatSpec, and semantics.
From DYSNOMIA¶
External & Public Functions
| Function | Signature | State Mutability |
|---|---|---|
Rename |
function Rename(string memory newName, string memory newSymbol) public virtual onlyOwners |
nonpayable |
mintToCap |
function mintToCap() public onlyOwners |
nonpayable |
GetMarketRate |
function GetMarketRate(address _a) public view returns (uint256) |
view |
Purchase |
function Purchase(address _t, uint256 _a) public |
nonpayable |
Redeem |
function Redeem(address _t, uint256 _a) public |
nonpayable |
name |
function name() public view virtual returns (string memory) |
view |
symbol |
function symbol() public view virtual returns (string memory) |
view |
decimals |
function decimals() public view virtual returns (uint8) |
view |
totalSupply |
function totalSupply() public view virtual returns (uint256) |
view |
balanceOf |
function balanceOf(address account) public view virtual returns (uint256) |
view |
transfer |
function transfer(address to, uint256 value) public virtual returns (bool) |
nonpayable |
allowance |
function allowance(address owner, address spender) public view virtual returns (uint256) |
view |
approve |
function approve(address spender, uint256 value) public virtual returns (bool) |
nonpayable |
transferFrom |
function transferFrom(address from, address to, uint256 value) public virtual returns (bool) |
nonpayable |
Internal Functions
| Function | Signature |
|---|---|
_addLibraryOwner |
function _addLibraryOwner(VOID Void, string memory what) internal |
_mintToCap |
function _mintToCap() internal |
_addMarketRate |
function _addMarketRate(address _a, uint256 _r) internal |
_transfer |
function _transfer(address from, address to, uint256 value) internal |
_update |
function _update(address from, address to, uint256 value) internal virtual |
_mint |
function _mint(address account, uint256 value) internal |
_approve |
function _approve(address owner, address spender, uint256 value) internal |
_spendAllowance |
function _spendAllowance(address owner, address spender, uint256 value) internal virtual |
Events
| Event | Parameters |
|---|---|
Transfer |
address indexed from, address indexed to, uint256 value |
Approval |
address indexed owner, address indexed spender, uint256 value |
Errors
| Error | Parameters |
|---|---|
MarketRateNotFound |
address asset |
DysnomiaInsufficientBalance |
address origin, address sender, address from, address to, address what, uint256 balance, uint256 needed |
DysnomiaInsufficientAllowance |
address origin, address sender, address owner, address spender, address what, uint256 allowance, uint256 needed |
State Variables (private parent storage is not reachable and is omitted)
| Variable | Type | Visibility | Mutability |
|---|---|---|---|
__name |
string |
internal | mutable |
__symbol |
string |
internal | mutable |
MotzkinPrime |
uint64 |
public | constant |
Xiao |
atropaMath |
public | mutable |
maxSupply |
uint256 |
public | mutable |
From MultiOwnable¶
External & Public Functions
| Function | Signature | State Mutability |
|---|---|---|
owner |
function owner() external view virtual returns (address) |
view |
renounceOwnership |
function renounceOwnership(address toRemove) public virtual onlyOwners |
nonpayable |
addOwner |
function addOwner(address newOwner) public virtual onlyOwners |
nonpayable |
Internal Functions
| Function | Signature |
|---|---|
_checkOwner |
function _checkOwner() internal view virtual |
_changeOwnership |
function _changeOwnership(address cOwner, bool cState) internal virtual |
Events
| Event | Parameters |
|---|---|
OwnershipUpdate |
address indexed newOwner, bool indexed state |
Errors
| Error | Parameters |
|---|---|
OwnableUnauthorizedAccount |
address origin, address account, address what |
OwnableInvalidOwner |
address origin, address owner, address what |
Modifiers
| Modifier | Parameters |
|---|---|
onlyOwners |
(none) |
Contract Interactions¶
Depends On¶
- DYSNOMIA V2 - Base functionality
- CHAN - Player management
Created By¶
- SEI - Player onboarding
Special Mechanisms¶
Asset Chain Traversal¶
function IsValidAsset(address GwatAsset, address Integrative) {
QINGINTERFACE Gwat = QINGINTERFACE(GwatAsset);
while (Type != "QING") {
if(Gwat.Asset() == Integrative) return true;
Gwat = QINGINTERFACE(Gwat.Asset());
}
return Gwat.Asset() == Integrative;
}
Rate Calculation¶
Rates are computed by traversing the QING chain and multiplying rates with a discount modifier:
Mod = (AssetRate / (10 ** (decimals - 2)));
if(Mod < 777) Rate = Rate/((777 - Mod) * 10 ** (decimals - 5));
CHAN Authorization¶
Sensitive operations require the caller to be CHAN:
Bar Accumulation¶
React() accumulates values for later use:
Contract Verification¶
| Property | Value |
|---|---|
| Keccak256 Hash | 0xb3172df3e8180d1cf21f0746a6d7a4e34ab245e5f02ff07dfef2a74184e494d2 |
| Source URL | https://raw.githubusercontent.com/busytoby/atropa_pulsechain/main/solidity/dysnomia/domain/yue.sol |
| Hash Generated | 2026-04-17T20:48:10Z |