Skip to content

SYSTEMADDRESSES — The Contract Phone Book

One-line pitch: SYSTEMADDRESSES is a one-shot registration contract that dumps the "important addresses by name" directory into CHO during deployment.

What this is

Dysnomia has a lot of external dependencies — stablecoins (DAI, USDC, USDT), Atropa ecosystem tokens (Atropa, EasternLightning, Final, Ka…), system contracts (AFFECTION, RESTRAININGORDER, WITHOUT…), and internal libraries. Instead of hard-coding these into dozens of contracts, the game uses CHO as a phone book: CHO.Addresses("dai") returns the right address.

SYSTEMADDRESSES is the one-time "contact import" contract. At deployment, it gets instantiated once with CHO's address, and its constructor registers every alias in a single transaction. After that, SYSTEMADDRESSES itself is effectively done — CHO owns the data from then on.

If you've played a web3 game before

  • Closest analogy: an init script — runs once at deploy, seeds the registry, never called again.
  • Or: a batch setAddress migration — one tx, many writes.
  • Or: a deployment fixture that populates the system's bootstrap state.
Dysnomia term What it maps to
SYSTEMADDRESSES One-shot registration contract
CHO.Addresses(name) The lookup you actually use
Alias String key ("dai", "Atropa", "WITHOUT", etc.)
WITHOUT The banned-user token — important to know it's discoverable

What you actually do with it

  • Nothing directly — this contract doesn't expose player-facing functions.
  • Use CHO to look things upCHO.Addresses("dai") returns the DAI address.
  • Trust the aliases — they're set once at deploy and never change.

Rewards / costs

  • Cost: none (it's infrastructure).
  • Reward: none.

Requirements & gating

  • None — not a contract you interact with.

Where it connects

Populates CHO's address registry. Referenced indirectly by every game contract that needs a stablecoin, an Atropa token, or a system contract by name.

Quick FAQ

Q: Why not just hard-code the addresses in each contract? A: Gas, readability, and the ability to update if infrastructure moves. (In practice the aliases have been static.)

Q: Can I add new addresses after deployment? A: Not through SYSTEMADDRESSES — but CHO itself has owner-gated add functions.

Q: What's WITHOUT? A: A token flagging banned users. Its address is in the phone book so gating logic elsewhere can check "does this wallet hold WITHOUT?"

Q: Is there a full alias list I can query? A: CHO.Addresses is a mapping — you can iterate known names but there's no "list all" RPC call. Common aliases: dai, usdc, usdt, dead, Atropa, AFFECTION, WITHOUT, libAtropaMath, plus dozens of Atropa ecosystem tokens.


Want the Solidity? The contract reference lives at technical/docs/domain/dan/SYSTEMADDRESSES.md.