這是我 RWA 系列裡技術含量最高的一篇,寫給正在評估證券代幣架構的工程師與技術主管。如果你還不熟悉 RWA 標準的整體脈絡,建議先讀 〈RWA 代幣化標準演進史〉,再回來看這篇的設計細節。
受監管的金融資產代幣化,核心只有一個技術問題:transfer 不能總是放行。 KYC 沒過的人不能持有、凍結帳戶不能轉出、鎖定期內不能提早轉、黑名單地址要擋下來。問題是——這個「准不准」的判斷邏輯,該放在哪裡? 圍繞這個問題,業界演化出兩種截然不同的哲學。
一、簡化派:ERC-1404 的極簡主義
ERC-1404(2018 年起草,至今仍是 draft EIP)給出的答案極簡。它的全部介面只有兩個函數:
interface IERC1404 {
function detectTransferRestriction(address from, address to, uint256 value)
external view returns (uint8); // 0 = 放行,非 0 = 拒絕碼
function messageForTransferRestriction(uint8 restrictionCode)
external view returns (string memory); // 把拒絕碼轉成人類可讀訊息
}
它的主張是:標準只規範「怎麼問」,不規範「怎麼判斷」。 至於規則邏輯是白名單、Merkle proof、ZK proof 還是外部 oracle,全由實作者自己決定。
這種設計的優點是彈性極大、相容性負擔極小——任何 ERC-20 加上這兩個函數就能接上 ERC-1404 工具鏈,連 Etherscan、MetaMask 都能自動顯示「為什麼這筆轉帳被擋」。缺點則是它幾乎什麼都沒幫你做:沒有身分概念、沒有 claim 撤銷、沒有跨代幣互通,甚至連「transfer 前一定要呼叫這個函數」都不強制——標準只說「這個函數存在可被呼叫」,實際的攔截要實作者自己 wire 進 _update 或 _beforeTokenTransfer。
二、整合派:ERC-3643 的完整框架
ERC-3643(前身是 Tokeny 的 T-REX,2024 年成為唯一 Final 的證券代幣標準)走的是完全相反的路。它不只規範一個介面,而是規範身分、合規、代幣三層的完整框架,由六個合約組成:
| 合約 | 角色 |
|---|---|
| Token | ERC-20 相容代幣,每筆轉帳前強制檢查合規 |
| Identity Registry (IR) | 合格投資人的鏈上身分入口 |
| IR Storage | 身分資料儲存(可跨代幣共用) |
| Claim Topics Registry | 定義此代幣需要哪些聲明(KYC、合格投資人…) |
| Trusted Issuers Registry | 定義哪些聲明發行者可信 |
| Modular Compliance | 可插拔的合規模組(國別、持倉上限…) |
關鍵差異在「強制程度」。ERC-3643 規範白紙黑字寫著:代幣在任何 transfer 或 mint 之前,必須(MUST)透過 Identity Registry 驗證接收方身分。實作者沒有選擇權。每個投資人在鏈上有一個身分合約(ONCHAINID),上面掛著由受信任第三方簽章的聲明,可驗真偽、可撤銷、可過期。
這套框架的好處是「opinionated」——開發者不必再煩惱身分系統怎麼設計、合規模組怎麼接,而且不同代幣可以共用同一套身分基礎設施。代價則是「重」:哪怕你只想發一個沒有 KYC 要求的穩定幣,也得部署五個(大多是空的)合規合約;每筆轉帳要跨多個合約做五次以上的函數呼叫,gas 成本明顯較高;加上 T-REX 實作採 GPL-3.0、合規模組採 CC-BY-NC(禁商用),對商用平台並不友善。
三、一張表看懂兩派取捨
| 維度 | ERC-1404(簡化派) | ERC-3643(整合派) |
|---|---|---|
| 介面規模 | 2 個函數 | 6 個合約、數十個函數 |
| 強制程度 | 弱(只規範介面) | 強(規範整合方式) |
| 身分概念 | 無,自理 | IR + ONCHAINID 完整框架 |
| Claim 簽章 | 無 | ✅ 內建可撤銷/過期 |
| 跨代幣共用 | ❌ | ✅ 共用身分儲存 |
| 每筆轉帳 gas | 1 次呼叫 | 5+ 次呼叫 |
| 學習曲線 | 數小時 | 數天 |
| 適用場景 | 輕量受限代幣、特殊規則 | 機構級 RWA、跨機構 KYC |
本質上,這就是軟體工程裡老掉牙的辯論——「unopinionated library」對上「opinionated framework」——在 RWA 領域的具體呈現。Library 給你自由與責任,framework 給你規範與約束。沒有絕對的對錯,只有適不適合。
四、CMTAT 的解法:不選邊站
最有意思的,是瑞士 CMTA 推出的 CMTAT 給出的第三條路。它的策略是:所有介面我都實作,讓外部生態自己選用哪個。
CMTAT v3.0.0 同時實作了 ERC-1404、ERC-3643(部分介面)、以及最新的 ERC-7943(uRWA)。所以對外部觀察者,同一個 CMTAT 代幣會同時暴露:
detectTransferRestriction(from, to, value) → uint8(ERC-1404 介面)canTransfer(from, to, value) → bool(ERC-3643 介面)
這兩個函數內部其實呼叫同一條檢查鏈(部分凍結餘額 → 暫停/凍結狀態 → RuleEngine 自訂規則),只是回傳格式不同。也就是說,不論對接方支援哪個介面,CMTAT 都能溝通。
但 CMTAT 有一個刻意的留白:它實作 ERC-3643 的合規介面,卻不實作 ERC-3643 的鏈上身分部分(IdentityRegistry、ONCHAINID 那一套)。官方文件明寫「without on-chain identity」。這個取捨很關鍵:
- 不綁定特定身分系統——你可以接 ERC-3643 的 IR、自寫一套、或完全不用,透過 RuleEngine 外掛規則即可;
- 授權乾淨——CMTAT 採 MPL-2.0(弱 copyleft、允許商用),不必 fork T-REX 的 GPL-3.0 程式碼;
- 解耦——代幣核心與合規規則分離,規則可插拔升級,不必動到代幣本身。
這正是為什麼 UBS、Taurus、21Shares 等機構在生產環境裡選擇 CMTAT 當代幣核心、再視需求外接 ERC-3643 風格的身分層。它取了整合派的架構優勢,又保留了簡化派的彈性與乾淨授權。
五、所以該怎麼選?
如果要我給一個務實的建議,會是這樣:
- 發輕量、規則單純的代幣(例如內部積分、簡單受限代幣):ERC-1404 足矣,別過度工程。
- 發機構級、需要跨機構 KYC 互認的證券代幣:直接採用 ERC-3643 框架,享受它成熟的生態與工具。
- 想要長期彈性、又在意授權與 gas:CMTAT 作為代幣核心 + RuleEngine 外接規則,是目前國際機構最常見、也最平衡的組合。
值得一提的是,標準還在演進。ERC-7943(uRWA)試圖統一所有 RWA 代幣的最小介面(涵蓋 ERC-20/721/1155),CMTAT 已率先實作。整合派的下一代,可能會比 ERC-3643 更輕、更通用。
結語
合規型代幣標準的演進,其實是一部「如何讓區塊鏈聽法律的話」的工程史。ERC-1404 與 ERC-3643 不是對立,而是光譜的兩端;CMTAT 則證明了——好的架構不必選邊站,而是把選擇權留給使用者。 這對任何在設計受監管系統的工程師,都是一個值得記住的設計哲學。
延伸閱讀本系列:〈RWA 是什麼〉、〈標準演進史〉、〈債券代幣化〉。