HomeThe Standard
How ERC-3643 works.
What an ERC-3643 token relies on, the two checks it runs on every transfer, and the controls it adds to ERC-20.
What it is
An open token standard for assets that come with rules, like fund units, bonds and shares.
It is
- Public and free to implement
- ERC-20 compatible
- Built on by many organisations
It isn’t
- A blockchain
- A product or a company
- A regulator’s approval
ONCHAINID and the compliance module
Who the investor is
ONCHAINID
An onchain identity contract that each investor controls. Their wallets are linked to it, and it holds signed claims from verifiers such as KYC providers: KYC passed, accredited investor, country of residence. The documents behind a check stay off chain.
Because the identity belongs to the investor, not to one token, the same verified claims can be checked by every ERC-3643 token that trusts the verifier. Investors are verified once, not once per platform.
What the offering allows
Compliance module
A contract attached to the token that holds the offering’s rules: permitted countries, maximum number of holders, lock-up periods, investment limits. Rules are added as separate modules, so the issuer can change them without reissuing the token.
Every transfer must pass it. If a transfer would break a rule, it fails before anything moves.
Two checks on every transfer
Who is receiving?
The receiver’s wallet must be linked to an ONCHAINID that holds the claims the token requires, such as KYC, from a verifier it trusts.
isVerified()Do the rules allow it?
The compliance module checks the transfer against the offering’s rules, such as permitted countries, holder limits and lock-ups.
canTransfer()- Both passUnits move and the register updates.Either failsNothing moves.
What an ERC-3643 token can do that an ERC-20 can’t
Freeze a wallet
Sanctions hit, legal hold or a compromised wallet.
setAddressFrozen()Freeze part of a balance
Some units are pledged or in dispute.
freezePartialTokens()Pause the token
A corporate action or an incident.
pause()Recover a holding
An investor has lost their key.
recoveryAddress()Force a transfer
A court order or a booking error.
forcedTransfer()Issue and cancel units
Subscriptions and redemptions, singly or in batches.
mint()burn()
Try it
Result
- From
- To
- Token is activepaused()
- Wallets are not frozenisFrozen()
- Balance is free to movegetFrozenTokens()
- Receiver is a verified investorisVerified()
- The offering’s rules allow itcanTransfer()
Investor A lost the key to their wallet. They’ve set up a new wallet and linked it to their on-chain identity. An agent recovers the holding.
Register · Fund A, Class I
| Holder and wallet | ONCHAINID | Country | Units | Frozen |
|---|
Inside the standard
Who may hold it
IIdentityRegistryLinks wallets to identities. Answers isVerified().IIdentityRegistryStorageStores those links. Shareable across tokens.ITrustedIssuersRegistryWhich verifiers the token trusts.IClaimTopicsRegistryWhich claims a holder needs.The token
IERC3643Transfers, agent controls, issuance. Extends ERC-20.IAgentRoleWho can act as an agent.The rules
IComplianceThe offering’s rules. Answers canTransfer().The eleven requirements, quoted from the specification
- MUST be ERC-20 compatible.
- MUST be used in combination with an onchain Identity system
- MUST be able to apply any rule of compliance that is required by the regulator or by the token issuer
- MUST have a standard interface to pre-check if a transfer is going to pass or fail before sending it to the blockchain
- MUST have a recovery system in case an investor loses access to his private key
- MUST be able to freeze tokens on the wallet of investors if needed, partially or totally
- MUST have the possibility to pause the token
- MUST be able to mint and burn tokens
- MUST define an Agent role and an Owner (token issuer) role
- MUST be able to force transfers from an Agent wallet
- MUST be able to issue transactions in batch
History
- Created as T-REX (Token for Regulated EXchanges) by Tokeny.
- Proposed to Ethereum as EIP-3643.
- Merged into the Ethereum proposals repository as pull request 3643.
- ERC3643 Association founded as a non-profit in Luxembourg.
- Final status in Ethereum’s standards process.
- ISO standardisation work announced via ISO TC 307.
Questions
Does ERC-3643 make a token legally compliant?
How is it different from ERC-20?
Is it only for Ethereum?
Who owns it?
How does it relate to T-REX?
ERC-3643 is the open standard authored by the founders of Tokeny and T-REX Network.
The standard began as the T-REX protocol (Token for Regulated EXchanges), created in 2018 and proposed to Ethereum as ERC-3643 in 2021. It is now governed by the ERC3643 Association, not by T-REX Network.
T-REX Network is built on top of the ERC-3643 standard. It is shared market infrastructure that keeps an ERC-3643 asset’s ownership and compliance state coherent across multiple EVM and non-EVM chains.