What a production implementation adds
The standard says what a token exposes. It does not say where permission comes from, how
the code is upgraded, or who is allowed to seize units.
| Contract | What it closes |
RWAToken |
The instrument. An ERC-20 implementing ERC-7943, with ERC-2771 so an investor can transfer without holding native currency, and a role for each privileged operation rather than one administrator who can do everything. |
ComplianceRegistry |
Where canSend and canReceive get their answers. Permission lists of wallets with separate send and receive flags, attachable to several tokens at once. A token with no list attached cannot be minted or moved, so the untouched state is inert rather than open. |
RWATokenFactory |
Deploys each token as a beacon proxy using CREATE2, so the address is known before the transaction is mined and can appear in documents drafted in advance. |
RWATokenBeacon |
Where every token reads its logic from. One upgrade migrates an issuer's whole book, upgrade authority lives here alone, and no token role can reach it. |
Roles, granted one at a time
- MINTER_ROLE
- BURNER_ROLE
- FREEZER_ROLE
- ENFORCER_ROLE
- COMPLIANCE_ADMIN_ROLE
Deploying a token grants administration and nothing else. Minting, burning, freezing and
forced transfer are separate grants, which is inconvenient exactly once and the reason a
compromised service cannot quietly do all four. Both the administrative and the upgrade
authorities are held by you, not by Tokenistry.
There is no pause function. The equivalent, and a stronger one because it stops minting
too, is detaching every compliance list, which makes the token's own checks fail closed.
The meta-transaction forwarder cannot reach the beacon, so the path that lets an investor
transfer without gas is not a path to the code behind their token.