身份
IdentityRegistry 是链上关于钱包事实的唯一来源。它为其他所有合约回答同一个问题:我们对这个地址了解什么? 它不决定某项资产允许什么——那由每个代币决定。
保存了什么
| 字段 | 含义 |
|---|---|
kycCleared | 登记机构已完成该钱包持有人的 KYC/AML |
kycExpiresAt | KYC 失效时间(0 表示永不过期)。过期后所有 KYC 校验都会失败 |
accredited | 经登记机构评估,持有人属于合格 / 专业投资者 |
jurisdiction | 简短代码,如 US、DE、US-NY(空表示未知) |
status | 正常或已冻结。被冻结的账户在所有代币上都无法通过任何关卡 |
did | 可选的 W3C DID(did:…),指向链下凭证 |
registrar、createdAt、updatedAt | 最后写入者及时间 |
个人数据不上链。 姓名、证件和住址都留在登记机构。链上只保存上述标记——这足以让合约执行规则,也足以让监管方审计决策。
complianceOf(address) 一次返回代币所需的全部信息:known、sanctioned、frozen、kycValid、accredited、jurisdiction。其中 kycValid 已经考虑了是否存在、是否冻结和是否过期。
登记机构
- 治理方通过
addRegistrar(address, displayName)任命登记机构,通过removeRegistrar移除;登记机构数量有上限。 - 登记机构可以通过
setAccount(subject, did, kycCleared, accredited, jurisdiction, kycExpiresAt)设置或更新任何账户,并附原因冻结或解冻任何账户。 - 登记机构不能制裁地址、创建代币或移动资金。
所有登记机构受到同等信任:任何一家都可以覆盖另一家写入的记录,或冻结任何账户。每次写入都会发出带登记机构地址的 AccountSet、AccountFrozen 或 AccountUnfrozen 事件,滥用行为清晰可见;移除登记机构是治理方的补救手段。
制裁
- 只有治理方可以添加或移除制裁:
addSanction(address, listSource, reason)、removeSanction(address)。 - 制裁集合可枚举(
sanctionedCount、sanctionedAt),排序器的限制名单就是据此构建的。见合规。 - 被制裁地址无法通过任何应用层关卡:代币转账、认购、分红领取、赎回、退款和创建代币;名单刷新后,排序器过滤还会阻止它发起任何交易。
- 制裁按设计是公开的,包括历史记录(
SanctionAdded/SanctionRemoved事件)。
投资者如何使用身份
- 在登记机构完成开户(链下)。
- 登记机构把你的记录写到链上;账户页面会精确显示保存了什么。
- 每个资产页面都会在你操作前显示你的钱包是否满足该资产的规则。
- 保持 KYC 有效。在需要 KYC 的代币上,KYC 过期会阻止转出、接收、领取分红和完成赎回,直到登记机构为你续期。
事件
RegistrarAdded、RegistrarRemoved、AccountSet、AccountFrozen、AccountUnfrozen、SanctionAdded、SanctionRemoved。