Back to Blog
RWA Security Standards: ERC-3643 vs ERC-1400 Comparison
Web3 SecurityAudit

RWA Security Standards: ERC-3643 vs ERC-1400 Comparison

8 min
In the DeFi sandbox, we lived by a simple creed: "Code is Law." If the transfer() function executed, the transaction was valid. But as institutional capital moves toward Real-World Assets (RWAs), we are hitting a hard architectural wall. In the regulated world, Law is Law. The blockchain is merely a settlement layer that must remain subordinate to off-chain legal frameworks, court orders, and regulatory mandates.
For a CTO, this isn't just a compliance headache; it’s a security crisis. If you try to shoehorn regulated assets into a standard ERC-20, even with a "whitelist wrapper", you are building on a foundation of architectural fragility.
Here is why your current approach to RWA security is likely a liability, and how to choose a standard that actually survives a regulatory audit.

The "permissionless liability"

The ERC-20 standard was architected for fungibility and permissionless movement. Its core invariant is simple: if the signature matches the address, the ledger updates.
In TradFi, this is a bug, not a feature. As an issuer, you hold strict liability for who owns your asset. If a tokenized U.S. Treasury ends up in an OFAC-sanctioned wallet, "the code allowed it" is not a valid legal defense. Standard ERC-20s lack three non-negotiables:
  1. Identity Awareness: They recognize 0x addresses, not legal identities. They have no concept of KYC status or tax residency.
  2. Granular Restrictions: They cannot natively enforce logic like "maximum 2,000 investors" (SEC Rule 12g) or volume limits.
  3. Sovereign Recourse: If a private key is lost or stolen, an ERC-20 balance is effectively gone. In RWAs, legal ownership persists. The blockchain must be mutable by a higher authority to reflect legal reality via "Forced Transfers."

The "wrapper trap" and the ACT vulnerability

Many teams try to "wrap" ERC-20s by overriding transfer to check an on-chain whitelist. This creates a "Check-Then-Act" gap.
The Wrapper Trap
The most dangerous manifestation of this is the Approved Controllable TransferFrom (ACT) vulnerability. In a naive wrapper, you might check if the destination is whitelisted, but fail to verify the spender’s compliance status or whether the owner is currently in a "frozen" state for indirect transfers.
An attacker can route funds through a compromised (but approved) DeFi protocol, effectively laundering the asset through a trusted path and bypassing your compliance hooks entirely.

Architecture of trust: ERC-3643 (T-REX)

If your primary constraint is who can hold an asset, ERC-3643 is the current "Final" EIP standard for a reason. It moves the industry from a "Token-Centric" model to an "Identity-Centric" model.

The decoupled identity model

Instead of a monolithic contract, ERC-3643 uses a modular suite.
ERC-3643 Architecture
The cornerstone is ONCHAINID. Users don’t just whitelist a wallet; they link it to a self-sovereign identity contract.
  • Key Rotation: If a user’s wallet is hacked, they can use a management key to swap the linked wallet on their ONCHAINID.
  • Result: The issuer doesn't have to re-KYC the user or manually update dozens of whitelists. The identity persists independently of the access key.

The compliance engine

ERC-3643 uses a "Strategy Pattern." Compliance rules (like CountryRestrictionModule) are separate contracts. If regulations change, you deploy a new module and update a pointer. You don't migrate balances.

Architecture of control: ERC-1400

While ERC-3643 focuses on identity, ERC-1400 focuses on the structure of the asset. It introduces Partitions (tranches).

The partitioned model

In ERC-1400, a user doesn't just have a balance; they have a collection of tranches:
  • Partition A: Unlocked shares.
  • Partition B: Locked (vesting) shares.
  • Partition C: Reg D restricted (12-month hold).
ERC-1400 Partition Logic
The Trade-off: ERC-1400 is computationally expensive. To calculate a balance, the contract must iterate through partitions. If your cap table becomes complex, you risk hitting block gas limits.

Comparative security analysis: Choosing your standard

FeatureERC-3643 (T-REX)ERC-1400 (Security Token)
Primary FocusIdentity (Who holds it?)Asset Structure (What is held?)
ComplianceDecoupled (Modular)Tightly Coupled (Partitions)
RecoverySelf-Sovereign (Key Rotation)Manual Issuer Intervention
Gas EfficiencyHighLow (Partition iteration)
Best ForPrivate Credit, Real Estate, FundsComplex Equity, Vesting Tranches

The "god mode" agent role

Both standards implement administrative roles (Agents or Controllers) for forced transfers.
  • Security Warning: This is your single point of failure. If an EOA holds this key, you are one phishing attack away from a total asset seizure.
  • The Fix: Assign the Agent role to a Multi-Sig (Gnosis Safe) with a time-lock. For high-assurance assets, integrate a Legal Oracle that requires a signed "Court Order Hash" to be submitted on-chain before a forcedTransfer can execute.

Implementation: The compliance hook

To prevent the "Check-Then-Act" vulnerability, you must intercept every state change. Here is how the ERC-3643 reference implementation handles the _beforeTokenTransfer hook to ensure both the sender and receiver are verified at the moment of transfer.
Compliance Hook Flow
1// ERC-3643: The Compliance Hook Architecture
2
3function _beforeTokenTransfer(
4 address from,
5 address to,
6 uint256 amount
7) internal virtual override {
8 super._beforeTokenTransfer(from, to, amount);

Get the DeFi Protocol Security Checklist

15 vulnerabilities every DeFi team should check before mainnet. Used by 40+ protocols.

No spam. Unsubscribe anytime.

1// 1. Recipient Identity Check: Must be verified via ONCHAINID
2require(identityRegistry.isVerified(to), "Receiver not verified");
3
4// 2. Sender Identity Check: Crucial to prevent ACT/Spender exploits
5// We check the 'from' address, not just the msg.sender (spender)
6require(identityRegistry.isVerified(from), "Sender not verified");
7
8// 3. Modular Compliance Check: Satisfies specific rules (e.g., Investor Caps)
9require(compliance.canTransfer(from, to, amount), "Compliance violation");
10
11// Pattern: Check (Identity) -> Check (Rules) -> Act (Transfer)
}
1
2## The CTO’s decision matrix
3
4If you are building an [institutional-grade RWA platform](https://zealynx.io/blogs/audit-investors), stop trying to fix the ERC-20.
5
61. **Use ERC-3643** if your primary risk is regulatory compliance and KYC/AML enforcement. It is the most resilient against key compromise because it decouples identity from the wallet.
72. **Use ERC-1400** if you are managing a complex cap table where tokens within the same wallet must behave differently (e.g., different vesting schedules).
83. **Hardcode Recourse:** Ensure your `forcedTransfer` events emit a data hash (as seen in ERC-1644) to provide an immutable audit trail for every administrative action.
9
10The future of RWAs isn't just about putting assets on a ledger; it’s about architecting a system where the digital state can never deviate from the legal reality. Choose the standard that treats identity as a first-class citizen.
11
12## Get in touch
13
14Building an RWA platform? Don't let compliance be your bottleneck. At Zealynx, we specialize in auditing institutional-grade protocols, ensuring your architecture can withstand both hackers and regulators.
15
16**[Secure your RWA Launch](/quote)**
17
18---
19
20## FAQ: RWA security & audits
21
22<details>
23<summary><strong>1. What is the difference between ERC-20 and ERC-3643?</strong></summary>
24
25ERC-20 is designed for permissionless transfer (anyone can send to anyone), making it risky for regulated assets. ERC-3643 is an "Identity-Centric" standard that natively embeds compliance checks (KYC/AML) into every transfer, ensuring that only verified identities can hold the token.
26
27</details>
28
29<details>
30<summary><strong>2. Why can't I just use an ERC-20 with a whitelist wrapper?</strong></summary>
31
32Wrappers often suffer from the "Check-Then-Act" gap or the **Approved Controllable TransferFrom (ACT)** vulnerability. If you whitelist a destination but fail to check the sender's status during a `transferFrom` call, an attacker could bypass your compliance rules.
33
34</details>
35
36<details>
37<summary><strong>3. What is a "Forced Transfer" and why is it required for RWAs?</strong></summary>
38
39In traditional finance, legal ownership supersedes possession. If a court orders the seizure of assets (e.g., due to fraud or divorce), the issuer must be able to move tokens without the owner's private key. Standards like ERC-1400 and ERC-3643 implement this "Sovereign Recourse" capability.
40
41</details>
42
43<details>
44<summary><strong>4. How much does an RWA smart contract audit cost?</strong></summary>
45
46Audit costs vary based on complexity (e.g., number of compliance modules). For a detailed breakdown of pricing benchmarks in 2026, check our guide on [Smart Contract Audit Costs](https://zealynx.io/blogs/audit-pricing-2026).
47
48</details>
49
50<details>
51<summary><strong>5. Does ERC-1400 support vesting schedules?</strong></summary>
52
53Yes. ERC-1400 uses a "Partitioned" model, allowing you to split a single user's balance into different tranches (e.g., "Locked," "Unlocked," "Reg D Restricted"). This makes it ideal for managing complex cap tables and vesting logic on-chain.
54
55</details>
56
57<details>
58<summary><strong>6. Is ERC-3643 compatible with DeFi protocols?</strong></summary>
59
60Yes, but with friction. Because every transfer requires the recipient to have a valid ONCHAINID, a DeFi pool (like Uniswap) must be whitelisted or registered as a verified entity to hold the token. This ensures compliance liquidity but restricts permissionless composability.
61
62</details>
63
64## Glossary
65
66| Term | Definition |
67|------|------------|
68| [ONCHAINID](/glossary/onchainid) | Self-sovereign identity contract used in ERC-3643 that links verified legal identities to blockchain wallets, enabling key rotation without re-KYC. |
69| [Forced Transfer](/glossary/forced-transfer) | Administrative capability allowing issuers or controllers to move security tokens without the holder's private key, required for regulatory compliance and legal enforcement. |
70| [Compliance Hook](/glossary/compliance-hook) | A `_beforeTokenTransfer` override pattern that intercepts every token state change to enforce identity verification and regulatory rules at the moment of transfer. |
71| [ACT Vulnerability](/glossary/act-vulnerability) | The Approved Controllable TransferFrom exploit where attackers bypass compliance wrappers by routing tokens through approved spenders that skip sender verification checks. |
72| [Legal Oracle](/glossary/legal-oracle) | An on-chain verification mechanism that requires a cryptographic proof of a legal instrument (e.g., court order hash) before authorizing privileged administrative actions like forced transfers. |
73| [Sovereign Recourse](/glossary/sovereign-recourse) | The principle that legal ownership supersedes blockchain possession, requiring token standards to support administrative overrides that reflect off-chain legal reality. |
74| [Self-Sovereign Identity](/glossary/self-sovereign-identity) | A decentralized identity model where users own and control their digital identity independently of any single platform, wallet, or service provider. |
75
76*[View complete glossary →](/glossary)*

Get the DeFi Protocol Security Checklist

15 vulnerabilities every DeFi team should check before mainnet. Used by 40+ protocols.

No spam. Unsubscribe anytime.

oog
zealynx

Subscribe to Our Newsletter

Stay updated with our latest security insights and blog posts

© 2024 Zealynx