04 · 完整业务流程
前面章节已经介绍核心对象、系统结构和参与角色。本章把它们串成一项 RWA 资产从发行到退出的完整生命周期。
4.1 生命周期总览
| 流程 | 主要责任方 | 链上结果 |
|---|---|---|
| 资产发行 | 平台 + 资产发行方 | 新资产 Suite |
| 投资者准入 | 投资者 + 资格机构 + 发行方 | isVerified == true |
| 增发 | Token Agent | 投资者余额增加 |
| 转账 | Token 持有人 | 合格钱包之间余额转移 |
| 销毁 | Token Agent | 投资者余额和总量减少 |
4.2 第一步:发行资产
资产发行方先确定资产、资格、规则和角色,再通过平台准入入口创建 Suite。
发行前需要确定:
| 类别 | 内容 |
|---|---|
| 资产 | 名称、代号、decimals、现实权益 |
| 资格 | 投资者必须持有哪些 Claim Topic |
| 签发机构 | 哪些 ClaimIssuer 可签发对应 Topic |
| 规则 | 国家、持仓、发行量、锁定期等限制 |
| 角色 | Owner、Token Agent、IR Agent |
| 环境 | 测试网或 BOT 主网 |
发行后需要公开:
- Token 和 Suite 的代理地址;
- Chain ID、RPC 和浏览器;
- 资格要求与交易规则;
- 合约版本和源码验证状态;
- Token 是否暂停;
- 资产生效时间。
新 Token 默认处于暂停状态。暂停期间可以增发和销毁,但普通投资者转账会失败。开放流转前应完成上线检查并由 Token Agent 调用 unpause()。
4.3 第二步:投资者准入
投资者准入不是一次调用,而是三方共同完成的流程:
每一步由谁完成
| 步骤 | 发起方 | 是否上链 | gas 支付方 | 完成标志 |
|---|---|---|---|---|
| 提交和审核材料 | 投资者、资格机构 | 否 | 无 | 审核结论 |
| 创建 ONCHAINID | 投资者 | 是 | 投资者 | 钱包关联身份 |
| 生成 Claim 签名 | 资格机构 | 否 | 无 | 签名和 Claim 字段 |
| 写入 Claim | 投资者 | 是 | 投资者 | ClaimAdded |
| 登记到目标资产 | IR Agent | 是 | 资产发行方 | IdentityRegistered |
| 查询最终资格 | 任意应用 | 只读 | 无交易 gas | isVerified == true |
为什么 ClaimSigner 不直接调用 addClaim
ClaimSigner 的职责是证明资格结论,投资者的职责是控制自己的 ONCHAINID。
因此通常采用:
ClaimSigner 链下签名
↓
投资者取得签名
↓
投资者调用自己的 ONCHAINID.addClaim
这样资格机构无需为每位投资者支付链上 gas,也不需要控制投资者身份。
应用如何判断准入完成
不要只检查某一笔交易是否成功,应按顺序确认:
IdFactory.getIdentity(wallet)返回有效身份;- ONCHAINID 中存在目标 Topic 的 Claim;
IdentityRegistry.contains(wallet) == true;IdentityRegistry.isVerified(wallet) == true。
最终以目标 Token 绑定的 IdentityRegistry 为准。
4.4 第三步:增发
投资者准入完成并满足线下业务条件后,由 Token Agent 增发份额。
应用应:
- 先确认申购或发行条件已经满足;
- 再次查询接收方资格;
- 按
decimals换算金额; - 由 Token Agent 发起交易;
- 等待交易回执和
Transfer事件; - 最后更新业务订单状态。
交易仅广播时,不应把资产标记为已到账。
4.5 第四步:投资者转账
Token 已开放转让后,持有人可以向另一名合格投资者转账。
提交前建议:
校验 Chain ID 和 Token 地址
→ 读取 decimals
→ 检查 paused 和冻结状态
→ 查询接收方 isVerified
→ 可选调用 canTransfer 预检查
→ 持有人签名发送
→ 等待回执
canTransfer 只是预检查。交易确认前链上状态可能变化,最终结果仍以实际交易为准。
授权转账使用标准 ERC-20 流程:
4.6 第五步:赎回与销毁
销毁通常对应赎回或份额注销:
链上销毁和链下兑付是两个不同状态。应用应分别记录,不应仅凭 burn 成功推断现实资金已经到账。
4.7 Transfer 事件如何解释
from | to | 含义 |
|---|---|---|
| 零地址 | 投资者 | 增发 |
| 投资者 | 零地址 | 销毁 |
| 非零地址 | 非零地址 | 普通转账或强制转移 |
如果需要区分普通转账和 Agent 强制转移,还应结合交易调用方法及管理事件。
4.8 常见失败
| 现象 | 常见原因 | 处理方式 |
|---|---|---|
isVerified == false | 未登记、Claim 缺失/失效、Issuer 不受认可 | 定位准入步骤,不要直接重试增发 |
Identity is not verified. | mint 接收方资格不通过 | 完成资格流程 |
Compliance not followed | 触发资产规则 | 查询规则并联系发行方 |
Pausable: paused | Token 尚未开放转让 | 停止提交并展示暂停状态 |
| 钱包被冻结 | 发行方冻结该地址 | 联系发行方 |
| 余额不足 | 金额换算错误或可用余额不足 | 重新读取 decimals 和冻结数量 |
| 权限错误 | 调用方不是 Agent/Owner | 交由对应角色处理 |
| 交易长时间 pending | RPC、gas 或网络问题 | 按交易哈希查询,避免重复业务指令 |
4.9 接下来阅读什么
现在已经理解完整业务流程。进入编码阶段后,可按调用方和用途查询接口与事件: