← /dysnomia · dev index

At cap [chain] — entity data (deployment, supply/cap, liveness):/dysnomia/contracts/0xe250bf97… · plain-language: guide/economy

CHAN — “Dysnomia Chan” — the YUE directory + player-consent escrow

Wave 4 · 2025-05-30 08:08 UTC · deployed [chain] · at cap · active this month [chain]

In player terms

The bank’s front desk AND its compliance department CHAN keeps the directory (which wallet owns which YUE account) and, separately, the consent ledger: YOU choose which contracts may touch your account, via OptIn(contract, allow).
Nothing moves without two yeses A contract holding your account can only act if (a) you opted it in AND (b) it is itself trusted by the system (a CHAN owner). Player consent + system membership, both required, both onchain.
Withdrawals ride through here Your YUE’s vault exits (and its 1-unit drip) only execute when CHAN calls them — YUE trusts exactly one address. The consent design means “which tools may move my funds” is your choice, recorded forever.
Where to find anyone’s account Chan.Yan(wallet) — public view, one read.

1. Identity

Address 0xe250bf9729076B14A8399794B61C72d0F4AeFcd8
Creation block 23,599,003 — 2025-05-30 08:08 UTC (tx 0x92beaae002d97106d815c4587e74549866f08017d45e8d48e900fe95e1a1b5e1)
Deployer 0x0474606332105A1dA6FC8EF7De2470551D389Cb9
Name / symbol Dysnomia Chan / CHAN [chain]
Supply / cap 86,623 / 86,623 — at cap [chain]

2. Role

Two jobs. (i) The YUE directory: Yan: origin → YUE maps every player wallet to their account/vault token (SEI writes it; TransferYue re-keys it, origin-gated). (ii) The player-consent escrow: OptIn(contract, allow) grants a contract the right to YueWithdraw / YueMintToOrigin / YueForceTransfer that player’s YUE holdings — an allowance system at the account layer. CHAN is the only caller YUE trusts (OnlyChan checks inside YUE), making it the custodian of record for the vault layer.

3. Dependencies

4. State

Xie, Yan (public mapping), _optInList (yue → contract → bool).

5. Functions

Function table extracted mechanically from domain/sky/01_chan.sol. Gate: public = anyone · owners = MultiOwnable set, msg.sender OR tx.origin · bouncers = QING bouncer rule · single-owner = classic owner · deployer = constructor wiring. meter = the call self-mints one unit via _mintToCap() (a call-counter against the constructor-lottery maxSupply).

signature gate meter events reverts
constructor(address XieAddress) deployer meter — —
AddYue(address Origin, address Yue) owners meter — AlreadyAdded
TransferYue(address Yue, address NewOrigin) public meter — AlreadyAdded, NotOrigin
ReactYue(YUEINTERFACE Yue, address Qing) returns (uint256 Charge) owners — — —
OptIn(address Contract, bool Allow) public meter NewSpenderContractOptIn —
OptedIn(YUEINTERFACE Yue, address Contract) returns (bool) public — — —
YueWithdraw(YUEINTERFACE Yue, address Asset, address To, uint256 Amount) owners meter — PlayerMustOptIn
YueMintToOrigin(YUEINTERFACE Yue) owners meter — —
YueForceTransfer(YUEINTERFACE Yue, address From, address To, uint256 Amount) owners meter — PlayerMustOptIn

Events declared: NewSpenderContractOptIn(address Origin, address Yue, address Contract, bool Allow)

Errors declared: AlreadyAdded(address Origin, address Yue, address New) · NotOrigin(address YueOrigin, address Requestor) · PlayerMustOptIn(address Player, address Yue, address Contract)

Effects: AddYue — owners-gated, one YUE per origin (AlreadyAdded). TransferYue — the CURRENT origin (tx.origin must be YUE.Origin) re-keys the directory + calls Yue.ChangeOrigin. ReactYue — owners-gated pass-through to Yue.React (returns the venue Charge). OptIn — public, emits NewSpenderContractOptIn. YueWithdraw/YueForceTransfer — owners-gated AND player-opt-in-gated (PlayerMustOptIn); YueMintToOrigin — owners-gated (no opt-in needed for the 1-unit self-mint path).

6. Integration notes

7. Provenance