How does ERC-3643 enforce compliance on a public blockchain?
Every ERC-3643 transfer runs checks before it executes. The token confirms it isn’t paused, neither wallet is frozen and the sender has enough unfrozen units. It then checks that the receiver holds valid claims from a trusted verifier, and that the offering’s compliance rules allow the transfer. If any check fails, the transaction reverts and nothing moves.
Key facts
- Identity check:
isVerified()on the token’s identity registry. - Rules check:
canTransfer()on the token’s compliance contract. - Both run inside every
transfer(), before units move. - The specification requires a standard way to pre-check a transfer before sending it.
Why does this work on a public network?
The network is open, but the token isn’t. Anyone can see the token, yet it only accepts transfers that pass its checks. A wallet without valid claims simply can’t receive units.
Who decides the rules?
Law and regulation set them; the issuer and its advisers apply them. The token’s owner attaches a compliance contract containing the offering’s rules, such as permitted countries or holder limits, and chooses which verifiers’ claims to trust.
Can a transfer be checked in advance?
Yes. A broker or venue can call the same read-only checks before sending a transaction, so trades that would fail don’t reach the network.