ERC-3643: The Security Token Standard (T-REX)
ERC-3643 adds on-chain identity checks, transfer restrictions and issuer controls to ERC-20 security tokens. A Final Ethereum standard.
ADAM'S ROLE
Named author (1 of 5). At Tokeny, I built compliant token infrastructure and on-chain identity components.
What is it?
ERC-3643 specifies identity checks and token-management interfaces for permissioned securities. The contracts enforce configured rules; legal and compliance teams still define the requirements for each issuance.
SIMPLE ANALOGY
Regular tokens are like cash. Anyone can pass them around. ERC-3643 tokens are like regulated stocks. You need to prove who you are before you can own or trade them.
How it works
Identity Verification
Investors complete the required checks with claim issuers. Claims live on their identity contracts; the Identity Registry links wallets to those contracts and verifies the required claims.
Compliance Module Setup
The token issuer configures compliance rules: which countries are allowed, investor accreditation requirements, maximum holder counts, lock-up periods.
Token Issuance
Tokens are minted and distributed to verified investors. Each recipient must already be in the Identity Registry with valid claims.
Transfer Validation
When someone tries to transfer tokens, the contract checks: Is the receiver verified? Do they meet all compliance rules? If yes, transfer executes. If no, it reverts.
Ongoing Management
Agents can freeze tokens, force transfers for legal compliance, update compliance rules, and manage the identity registry as regulations evolve.
Key concepts
Identity Registry
The registry links wallets to identity contracts and checks the required claims from trusted issuers. For ordinary transfers, recipient eligibility is checked alongside balances, freezes and configured transfer rules.
Compliance Rules
Modular smart contracts that define who can hold, trade, and transfer tokens. Rules can enforce country restrictions, investor accreditation, maximum holder counts, and more.
Agent Roles
Designated addresses with special permissions. Agents can freeze tokens, force transfers (for legal compliance), and manage the token lifecycle. Think of them as on-chain compliance officers.
Transfer Restrictions
Ordinary transfer and transferFrom calls check the compliance module. Minting and forced transfers have different permissions: the specification requires recipient verification but bypasses canTransfer. Burning bypasses eligibility checks.
Illustrative use cases
Real Estate Tokenization
Permissioned property-interest tokens with configured transfer restrictions.
Real Estate Tokenization
Permissioned property-interest tokens with configured transfer restrictions.
Equity Tokens
Permissioned share tokens integrated with a shareholder register.
Equity Tokens
Permissioned share tokens integrated with a shareholder register.
Bond Tokens
Permissioned bond tokens with separately implemented payment logic.
Bond Tokens
Permissioned bond tokens with separately implemented payment logic.
Carbon Credits
Verified carbon offset certificates with transparent provenance.
Carbon Credits
Verified carbon offset certificates with transparent provenance.
Technical specification
Selected declarations from ERC-3643, shortened for explanation. Referenced interfaces and omitted methods are in the full specification linked below.
// SPDX-License-Identifier: MIT
interface IERC3643 {
// Token transfers with compliance checks
function transfer(address to, uint256 amount) external returns (bool);
function transferFrom(address from, address to, uint256 amount) external returns (bool);
// Identity registry
function identityRegistry() external view returns (IIdentityRegistry);
function setIdentityRegistry(address _identityRegistry) external;
// Compliance
function compliance() external view returns (ICompliance);
function setCompliance(address _compliance) external;
// Agent actions (freeze, force transfer)
function freezePartialTokens(address addr, uint256 amount) external;
function unfreezePartialTokens(address addr, uint256 amount) external;
function forcedTransfer(address from, address to, uint256 amount) external returns (bool);
// Recovery
function recoveryAddress(address lostWallet, address newWallet, address investorOnchainID) external returns (bool);
}Frequently asked questions
Who created ERC-3643?
How is ERC-3643 different from ERC-20?
Who controls the compliance rules?
Can tokens be frozen or seized?
Is ERC-3643 used in production?
What is T-REX?
Writing on ERC-3643
SEC Transfer Agent Proposal: Is Wallet Approval Their Job?
The SEC’s transfer agent proposal names wallet whitelisting once, as an example. What the text says, what it doesn’t, and why the question stays open for now.
SEC Innovation Exemption: Where Is the Wallet Check Done?
The SEC lets tokenized US stocks trade in pools only approved wallets can use, on a public chain. It names two places for the wallet check and requires neither.
Hidden Token Balances: How Can a Freeze Still Work?
When a permissioned token hides balances, how does a freeze still work? One OpenZeppelin check step by step, and why a successful transfer can move nothing.
ERC-3643 on a Cosmos Chain: Why a Freeze Can Miss Holders
Converting ERC-3643 tokens on a Cosmos EVM chain parks them in one escrow account. Why the agent’s freeze then misses the people holding the bank coins.
Know Your Agent: Checking an AI Bot’s Permission to Trade
An investor lets an AI agent trade her security tokens. ERC-3643 checks the holder, not the bot. Here is how an integration following the ERC-8226 draft can check a mandate on each trade.
ERC-3643, ERC-1400 or CMTAT: Which Token Rules to Pick?
Three ways to build a security token, and the one question that separates them: where each transfer gets checked. A plain guide to picking ERC-3643, ERC-1400 or CMTAT.
AI Agents That Move Money: How to Limit What They Can Do
Prompt injection is not solved, so contain it. Why the permission check for a money-moving AI agent belongs in the payment system, not in the agent.
Tokenizing Real Assets: Do You Need Your Own Blockchain?
Lessons from preparing a Cosmos EVM chain at Integra: choosing between contracts, an L2 and an application chain, with explicit costs and permission boundaries.