跳到主要内容

02 · 核心概念

上一章说明了 Project RWA 的用途和接入层次。本章从一项资产和一个投资者出发,依次解释后续流程中会用到的核心对象。

2.1 Token:资产份额

每项 RWA 资产都有一个独立的 ERC-3643 Token。

它兼容常用 ERC-20 接口:

name / symbol / decimals
totalSupply / balanceOf
transfer / approve / transferFrom
Transfer / Approval

同时增加:

  • 投资者资格校验;
  • 合规规则校验;
  • 暂停和冻结;
  • Agent 增发、销毁和强制转移;
  • 丢失钱包恢复。

因此,外部应用可以像读取 ERC-20 一样读取 Token,但不能假设“余额足够就一定能转账”。

金额使用链上整数:

链上 amount = 展示数量 × 10^decimals

PRWAdecimals 为 6,因此 1 PRWA = 1,000,000。接入其他资产时必须动态调用 decimals()

2.2 钱包:签名和持有资产

投资者钱包是 EOA 地址,用于:

  • 签署链上交易;
  • 支付 gas;
  • 持有 Token;
  • 控制自己的 ONCHAINID。

钱包地址本身不保存 KYC 结论。是否具备持有资格,需要通过钱包关联的 ONCHAINID 和目标资产的 IdentityRegistry 判断。

2.3 ONCHAINID:投资者链上身份

ONCHAINID 是智能合约地址,不是另一个普通钱包。

钱包与 ONCHAINID 的区别:

钱包ONCHAINID
类型EOA智能合约
主要作用签名、付 gas、持有 Token管理身份密钥和 Claim
是否直接保存 KYC 明文不应保存
创建入口钱包工具ONCHAINID Gateway

投资者通常调用 ONCHAINID Gateway.deployIdentityForWallet(wallet) 创建身份。IdFactory.getIdentity(wallet) 可查询钱包是否已经有关联身份。

2.4 Claim:机构签名的资格结论

Claim 表示“某个资格签发机构确认该身份满足某项条件”。

常用字段:

字段含义
topic资格类型,例如 KYC 已通过
scheme签名方案
issuerClaimIssuer 合约
signature资格机构生成的签名
data被签名的资格数据
uri可选链下引用

Claim 的形成分成两步:

  1. 资格机构在链下审核并生成签名;
  2. 投资者将签名和 Claim 字段写入自己的 ONCHAINID。

签名由资格机构生成,但 addClaim 链上交易通常由投资者发起并支付 gas。

Claim 中不应写入姓名、证件号、住址、证件照片等明文材料。链上只需要保存可验证的资格结论。

2.5 ClaimIssuer:资格签发机构

ClaimIssuer 代表可被资产认可的资格机构。

它负责:

  • 在链下完成 KYC/AML 或其他审核;
  • 使用受控签名密钥生成 Claim 签名;
  • 必要时撤销资格;
  • 保护签名密钥。

普通应用自行生成的签名不会自动获得认可。目标资产必须在 TrustedIssuersRegistry 中登记该 ClaimIssuer,并允许它签发目标 Topic。

2.6 IdentityRegistry:某项资产的资格入口

Claim 写入 ONCHAINID 后,投资者还需要登记到目标资产的 IdentityRegistry。

IdentityRegistry 组合四类信息:

必须区分两个结果:

  • contains(wallet):钱包是否已经登记;
  • isVerified(wallet):钱包是否满足当前资产的全部资格要求。

已登记不代表资格一定有效。外部应用应以 isVerified 作为最终判断。

2.7 为什么资格与资产绑定

不同资产可以要求不同资格:

因此:

  • 同一个 ONCHAINID 可以被多项资产使用;
  • Claim 能否复用取决于资产是否认可相同 Topic 和 ClaimIssuer;
  • registerIdentity 是对具体资产的 IdentityRegistry 执行;
  • 参与多项独立资产时,通常需要分别登记;
  • 查询资格时,应先通过 Token.identityRegistry() 找到正确的注册表。

不要用“资产 A 验证通过”推断“资产 B 也验证通过”。

2.8 ModularCompliance:交易规则

IdentityRegistry 回答“这个钱包是否可以持有”;ModularCompliance 回答“这笔交易是否可以发生”。

规则模块可以表达:

  • 国家或地区白名单;
  • 单地址持仓上限;
  • 总发行量上限;
  • 锁定期;
  • 投资者类别;
  • 转账额度或其他限制。

具体规则以目标资产的链上配置和公开说明为准,不能根据其他资产推断。

2.9 一笔转账的完整检查

部分冻结时:

可用余额 = balanceOf(wallet) - getFrozenTokens(wallet)

2.10 Suite:一项资产的一组合约

一项资产不只有 Token。完整 Suite 通常包含:

合约作用
Token资产份额和持有人操作入口
IdentityRegistry判断钱包是否具备持有资格
IdentityRegistryStorage保存钱包、身份和国家码映射
ClaimTopicsRegistry保存该资产要求的资格 Topic
TrustedIssuersRegistry保存该资产认可的 ClaimIssuer
ModularCompliance组合该资产的交易规则

外部应用最常使用 Token 和 IdentityRegistry。其他合约用于解释资格要求和规则。

2.11 代理地址

Project RWA 的业务合约使用代理模式:

接入方应保存公开地址表中的代理地址,不要把实现合约地址当作业务地址。

2.12 ERC-3643 约定与术语

说明
T-REXERC-3643 的参考实现体系;一项资产的配套合约集合称为 Suite
Topic协议不固定 1 = KYC;每个项目应公开 Topic 名称、数值和版本
国家码uint16,通常使用 ISO 3166-1 numeric,例如中国 156、新加坡 702
IR / IRSIdentityRegistry / IdentityRegistryStorage
CTR / TIRClaimTopicsRegistry / TrustedIssuersRegistry
MCModularCompliance
IAImplementation Authority,代理合约使用的实现版本入口

链上保存的是资格结论、地址映射、资产余额和规则参数,不应保存姓名、证件号、照片等 KYC 明文资料。

2.13 接下来阅读什么

现在已经理解单个对象的含义。下一章将把这些对象放进完整系统,说明哪些合约平台共享、哪些合约属于具体资产,以及每个角色负责什么:

继续阅读:03 · 系统架构与角色