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
Confidential Balances: Freeze Rules, Transfer Results and Disclosure
When a permissioned token hides amounts: an OpenZeppelin freeze example, pre-check leakage and auditor access, without assuming all confidential tokens behave alike.
ERC-3643 Across a VM Boundary: What Escrow Changes
How Cosmos token conversion changes the scope of ERC-3643 freeze and recovery controls, and what ERC-7943 does and does not standardize.
Know Your Agent: Who Authorized the Bot That Moved a Security Token
Investor eligibility vs agent authority: how ERC-3643 and the ERC-8226 draft fit together, where to enforce mandates, and what still needs implementation.
ERC-3643 vs ERC-1400 vs CMTAT: Security Token Standards
Compare identity registries, partitioned balances and modular transfer restrictions before selecting a security-token implementation. Includes ERC-7943 interoperability.
Agent Payments, x402, and Who Is Liable When an Agent Pays
x402 handles payment authorization and settlement. Agent apps still need records of delegation, spending policy and outcomes, which alone do not decide liability.
Least Privilege for Agents That Move Money
Prompt injection is not solved, so contain it. Least privilege for money-moving agents, from a smart-contract engineer who wrote the transfer rules.
When Does RWA Tokenization Need Its 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.
How to Get an ERC (Ethereum Standard) Proposal Accepted
How to scope, implement and discuss an Ethereum standard. Lessons from my work on ERC-3643, ERC-6960 and ERC-7410, with the formal EIP lifecycle explained.