合规
Primcast 在彼此独立的多个层面执行监管约束:无论交易从哪里进入系统,受限方都无法完成交易;每项资产还可以在此之上叠加自己的投资者规则。
三层防线
| 层 | 位置 | 拦截什么 |
|---|---|---|
| 1. 排序器准入 | Nitro 排序器(ArbOS 61 交易过滤) | 发送方、目标或任何被触及的地址在限制名单上的交易,以及涉及受限地址的 ERC-20/1155 Transfer/Approval 事件——这类交易根本不会进入区块 |
| 2. 延迟收件箱执行 | 监控以太坊收件箱的哨兵 + ArbOS 过滤交易管理器 | 涉及被制裁地址的强制打包交易:打包时失败,Gas 被销毁 |
| 3. 应用层关卡 | IdentityRegistry 事实 + 每个 RWAToken 的规则 | 不合格、被冻结或被制裁方的转账、铸造、认购、分红领取和赎回 |
限制名单的来源
- 治理方通过
IdentityRegistry.addSanction(address, listSource, reason)在链上添加制裁,链上关卡立即生效。 - 合规发布器每 5 分钟读取链上名单(以及可选的静态导出名单,如 OFAC SDN),每次用新的盐值生成加盐 SHA-256 哈希列表。
- 排序器在下一次轮询时重新加载名单。
链上登记表是唯一事实来源,排序器名单最多滞后约 5 分钟。
事实与规则分离
IdentityRegistry 保存关于钱包的事实:KYC 状态与有效期、合格投资者、辖区、登记冻结和制裁。规则在每个代币上:requireKyc、requireAccredited、allowedJurisdictions。因此同一条链上的两个代币可以凭同一次 KYC 面向不同市场销售。
代币如何校验一笔转账
代币状态(暂停/到期?)→ 本代币冻结(双方)
→ 对每一方调用一次 complianceOf():
被制裁?→ 登记冻结?→ 是场所吗?(该方到此为止)
→ requireKyc 且 KYC 无效?
→ 仅接收方:requireAccredited 且非合格投资者?→ 辖区不在允许列表?
→ 单人持有上限(场所、系统合约和代币托管地址豁免)
- 合格投资者与辖区只校验接收方。 失去合格投资者资格或迁往资产不允许的辖区的投资者,仍然可以卖出(转出,包括转入 DEX 资金池)。代币支付给他的一切——新份额、分红领取、赎回兑付——都适用接收方规则,需等资格恢复后才能进行。
- KYC 过期同样生效:过期的 KYC 与没有 KYC 一样无法通过校验,发送方和接收方都一样。在需要 KYC 的代币上,KYC 过期的持有人在续期前无法转出份额。
- 错误类型明确:
Sanctioned、AccountFrozen、KYCRequired、AccreditedRequired、JurisdictionDenied、LimitExceeded。 canReceive(to, amount)是不回滚的查询版本,供前端使用;本门户在允许你认购前会调用它。
场所与第三方协议
DEX 资金池或借贷市场没有身份。代币管理员通过 setVenue(pool, true) 标记这类合约:
- 场所本身跳过 KYC、合格投资者、辖区和持有上限校验。
- 每个交易对手仍被校验。 一笔会把份额发给不合格钱包的兑换或借款,会像直接转账一样回滚——场所是规则的传递者,而不是漏洞。
- 制裁、登记冻结和本代币冻结对场所地址仍然有效。
- 默认情况下场所余额不参与分红,收益归真实持有人。能够把分红转交出去的场所可以通过
setVenueDividends(pool, true)重新纳入;Primcast DEX 交易对就是如此,它会把分红并入资金池,归流动性提供者所有。 - 到期后,份额仍可以从场所转给合格持有人,让流动性提供者和借款人能取回份额并赎回;其他转账全部停止。
- 只有合约才能成为场所。未标记的资金池需要满足资产要求的全部资格,其累积的分红将无法领取。
Primcast DEX 还对 LP 代币设限:只有 RWA 会接受的钱包才能在 RWA 交易对中持有流动性。
强制措施
| 措施 | 执行者 | 事件 |
|---|---|---|
| 持有人之间的强制转移 | 代币管理员(发行方)或治理方 | ForceTransferred |
| 销毁(追回) | 代币管理员或治理方 | Burned |
| 本代币冻结 | 代币管理员或治理方 | FrozenSet |
| 暂停 / 恢复代币 | 代币管理员或治理方 | TokenStatusSet |
| 全局冻结某账户 | 任一登记机构 | AccountFrozen |
| 制裁某地址 | 治理方 | SanctionAdded |
每一项特权操作都会发出事件。审计记录就是事件日志,任何人都能重建。
结算端
USDC 和 USDT 不由 Primcast 发行。Primcast 无法冻结或没收稳定币余额,只有 Circle 或 Tether 可以。Primcast 在结算端执行的是:每个入口(Offering.subscribe、distributeDividend、claimDividends、赎回)的身份关卡,以及把被制裁方排除在兑付之外。所有兑付都由接收方主动领取;稳定币发行方拉黑某个持有人时,只有该持有人的领取会失败。
已知限制
- 以太坊上受限地址的 ETH 充值 无法丢弃,否则 ETH 会滞留在桥中。哨兵会报告这类充值,且该地址在 Primcast 上仍无法发起交易。
- 排序器过滤滞后 链上名单最多约 5 分钟;链上关卡即时生效。
- 制裁是公开的。 排序器名单经过哈希处理,但
IdentityRegistry中的制裁及其历史按设计在链上可读。 - 认购只校验制裁和 KYC。 合格投资者、辖区和持有上限在领取时铸造份额才校验。见认购。