The registry / tx.origin ownership model
Normative from recovered sources
[src]; registry state verified onchain for every census child[chain].
Every minter keeps a single mapping — TreasuryTokens(address child) => address owner — written at creation time to tx.origin, not
msg.sender [src]. Consequences:
- Ownership is the EOA that initiated the creation transaction, even when creation is routed through another contract. This is the load-bearing convention of the whole system: creators remain claimable parties no matter what intermediaries they used.
- Re-assignment exists on every minter head:
Transfer(ctx, newOwner)— callable only whenTreasuryTokens[ctx] == tx.origin[src]. - Cross-minter fallbacks: V2 exposes
GetTreasuryTokenOwner(address), V3GetStandardTokenParent(address); V2’sClaim/withdrawconsult these when the local registry has no entry. The V4 template binds toPersonalMinter, V3’s toIndexMinter, with a fallback chain V4 → V3 → V2 → V1 for ownership lookups[src]. - One unregistered child exists in the whole census: SEMIOTIC
(V4 genesis) — the source’s final constructor line deliberately skips
the registry write
[src,chain].
The registry is also the claim infrastructure: a “claim key” is a sibling
token identified through the registry (see
claim & publish). The minter
registries are plain immutable mappings — no admin surface exists on any
of them (zero admin selectors anywhere in the deployed bytecode [bc]).