ERC-RegulatoryTag
看论文了。核心思路是:
在保持ERC-1155兼容性的前提下,通过协议层的修改可以在链上对风险地址打上不可篡改、不可拒收、不可察觉的风险标签,并支持风险继承与合約动态生命周期管理。
3. 不可拒收、不可感知、不可查询是怎么实现的?
- 不可拒收:用
_forceMint绕过任何ERC-1155的接收方回调,写入状态。 - 不可感知:
- 不发标准的ERC-1155事件(或仅通过特殊事件、日志方式),使持有人或链上常规工具无法察觉自己被标记。
- 不开放常规
balanceOf等余额查询接口,只有监管系统/Controller有权限查。
- 不可查询:
- 只提供受控的
queryRisk方法,外部不能随意查询谁被标记(保护合规隐私)。
- 只提供受控的
- 不可篡改:
- 一旦mint到链上,只有特殊权限(burnRegulatory)才能解除,且所有操作都有链上日志可溯源,普通用户或目标无法干预或删除标签。
4. 和常规ERC-1155合约的本质区别
- 常规ERC-1155 mint流程受合约回调保护,可被目标拒绝,资产归属透明、可查。
- ERC-RegulatoryTag强制绕过回调,且标签不可见,不可查,不可删,适用于风险/监管用途。
老师我看了论文有几个问题。
- 不明白该方法的实际意义
传统的监管方案通常是通过给黑产地址发一个“污点币”作为监管标记,但是由于 ERC-1155 允许合约拒收代币,所以可以被黑产规避监管。
我们这篇论文通过 _forceMint 绕过 onERC1155Received 回调铸造 token,来实现不可篡改、不可拒收、不可察觉的隐性监管代币。
但是这个“发污点币”的过程,代码里表示为:该合约的_balance[污点币ID][黑产地址] = 100
这不就相当于,在合约的存储里存了个黑名单数组吗?一个链上的去中心化黑名单?
黑名单不就很好的实现了不可篡改、不可拒收、不可察觉吗?
如果就是一个链上的去中心化黑名单,这个方法就没什么创新点了?
- 如何实现兼容 ERC-1155 的强制铸造?(已解决)
ERC-RegulatoryTag合约,如何在兼容ERC-1155的情况下绕过onERC1155Received 回调强制铸造RLS token吗?
function _mint(address to, uint256 id, uint256 value, bytes memory data) internal {
if (to == address(0)) {
revert ERC1155InvalidReceiver(address(0));
}
(uint256[] memory ids, uint256[] memory values) = _asSingletonArrays(id, value);
_updateWithAcceptanceCheck(address(0), to, ids, values, data);
}
function _forceMint(address to, uint256 id, uint256 value) internal {
if (to == address(0)) {
revert ERC1155InvalidReceiver(address(0));
}
(uint256[] memory ids, uint256[] memory values) = _asSingletonArrays(id, value);
_update(address(0), to, ids, values);
}
- 引入ERC-1820的意义?(已解决)
说是增加兼容性,允许其他合约查询当前合约是否实现了IRlsRegulatoryReceiver接口。但是这有什么用?
实际应用中,ERC-165只能被别的合约调用检查。而ERC-1820能直接让钱包调用合约代码来检查。
引入ERC-1820后:
- 合约钱包可自愿实现IRlsRegulatoryReceiver接口,并通过ERC-1820注册表告诉全世界:“我能处理RLS回调”。
- 监管Tag合约在铸造RLS Token时,查注册表,如果目标合约声明了“我支持IRlsRegulatoryReceiver”,就额外通知一声(onRegulatoryERC1155Received)。
比如你是一个合约钱包平台,支持RLS体系——
- 你注册了 IRlsRegulatoryReceiver 接口。
- 某一天,监管系统强制给你某个用户地址 mint 了RLS Token。
- 你的合约被回调通知后:
- 自动记录该用户被风险标记。
- 给用户发送链下通知或弹窗提示。
- 可以主动限制该用户参与某些敏感操作,或者上报链下风控系统。
- 但RLS Token无论如何都已经写到链上,无法拒绝。
合约钱包应该是一个平台,类似一个网站交易所之类的,合约钱包兼容了这个接口就可以得知名下的用户是否有问题。RLS标记的是具体的用户钱包地址。
- 论文里对这个币的名字没统一,前面是CRT,代码里是RLS
今天简单任务对齐一下
算法设计和合约的编写,论文里
如果要对可以钱包进行标记,