← /dysnomia · dev index

This contract was never deployed — the doc describes the designed system as recovered from source. No code exists at any candidate address [chain].

Nym — “Champion” — the acronym game — NOT DEPLOYED

NOT DEPLOYED — complete in source (old-era folder); no code onchain [chain]. AND incompatible with the deployed CHO revision (below).

1. Identity

Source domain/old/nym.sol (contract Nym, name “Champion” / “NYM”)
Onchain absent [chain]
Cap hand-set maxSupply = 11111111111111111111 (11.111111111 tokens) — NOT a constructor lottery, one of the few hand-set caps in the family [src]

2. Role

A full on-chain party game: timed rounds, a generated 2–6-letter acronym (via LibStrings.RandomAcronym), players submit expansions + vote, 100 NYM to the winner (split on ties), 5 per submission, 1 for voting; idle non-voters (2 rounds) get kicked. The constructor embeds the entire game description as a string — the contract is its own manual.

3. Dependencies

Constructed with CHO (claims a Luo() coordinate + CHO ownership); uses the CHOINTERFACE surface including Cho.CYUN() (LibStrings accessor), Cho.Shio(), Cho.Omicron(), Cho.Reactor(), Cho.React(uint64) — a RICHER interface than the deployed CHO.

Interface-drift finding [chain, 2026-09-21]: the deployed CHO 0xB6be11F0A788014C1F68C92F8D6CcC1AbF78F2aB reverts on CYUN(), Log(uint64,uint64,string) and OperatorSendMSG(string). NYM as written — whose Chat path calls Cho.CYUN() on every message — could not run against the live CHO. Either NYM predates a CHO revision that had these selectors, or the interface was written against a planned surface that never shipped. (Live CHO getters verified present: Gua(), Void(), On(), Entropy(), Reactor().)

4. State

Cho, Waat (its venue coordinate claim), round state (RoundNumber, AcronymCount, Acronyms, LastUserVote, _users, _players, Active, Acronym, RoundStartTime), Prize (100), RoundMinutes (10), MinPlayers (5), MaxAcronymLength (6).

5. Functions

Function table extracted mechanically from domain/old/nym.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 ChoAddress) deployer — — —
SetDescription(string memory _d) owners — — —
SetMaxAcronymLength(uint8 _m) owners — — —
SetRoundMinutes(uint8 _m) owners — — —
SetMinPlayers(uint8 _m) owners — — —
ActivePlayers() returns (uint256) public — — —
GetPlayerBySoul(uint64 Soul) returns (User memory) owners — — —
Join(address UserToken) public — JoinedUser —
Leave() public — — —
_removeUserBySoul(uint64 Soul) internal — — —
Kick(uint64 _soul) owners — KickedUser —
Start() owners — — NotPlaying
NewRound() internal — InactiveUser —
Vote(uint16 Id) public — — assert
EndRound() internal — Winner —
GetAcronym(uint16 idx) returns (ACRONYM memory) public — — —
Submit(User memory Alpha, string memory Beta) internal — AcronymSubmission —
NewAcronym() internal — NewRoundAcronym —
Chat(string memory chatline) public — — —
Log(uint64 Soul, uint64 Aura, string memory LogLine) internal — LogEvent —
OperatorSendMSG(string memory chatline) owners — — —
ReactPlayer(uint64 Soul, uint64 Theta) returns (uint64 Omicron, uint64 Omega) public — — NotPlaying

Events declared: JoinedUser(uint64 Soul, string Username) · KickedUser(uint64 OperatorSoul, string OperatorUsername, uint64 UserSoul, string Username) · InactiveUser(uint64 UserSoul, string Username) · Winner(uint64 Soul, string Username, string Phrase, uint16 Prize) · AcronymSubmission(uint64 Soul, string Username, uint16 Id, string Phrase) · NewRoundAcronym(string Acronym) · LogEvent(uint256 Waat, uint64 Soul, uint64 Aura, string LogLine)

Errors declared: NotPlaying(uint64 Soul)

Effects: Join(UserToken) — enters via CHO, registers, and starts a round at MinPlayers. Vote(id) — 1 NYM per round voted, advances entropies, ends the round on timeout. Submit (internal, via Chat when the line matches the acronym!) — up to 5 NYM per player per round. EndRound — tallies, splits the prize among tied winners, emits Winner. NewRound — kicks 2-round-idle players (InactiveUser), regenerates the acronym. Kick — owners-gated removal with chat log. Chat(line) — the game input surface: acronym-matching lines become submissions, others become venue chat. NOTE: ReactToTalk(User memory) results are DISCARDED here (call by value, no reassignment) — a latent bug in the undeployed design [src: lib/reactions_core.sol ReactToTalk + nym.sol Chat].

6. Integration notes

7. Provenance