给插件装安检门:ERC-7484 模块注册表
模块化智能账户允许像装 App 一样给钱包装插件:限额模块、恢复模块、订阅模块。方便的另一面是灾难——恶意模块加载进来的那一刻,就能以账户名义转走钱包里的 NFT。ERC-7484(Registry Extension for ERC-7579)提出在钱包与模块之间插一道”安检门”:一个记录安全证明的模块注册表,账户加载模块前先查询、不通过就拒绝。该提案状态为 Draft(草案),创建于 2023 年 8 月 14 日,依赖 ERC-7579。本文只讲防御机制,不构成投资建议。
三方各管什么
注册表(Registry)存两份账:哪个模块被哪些证明方(Attester)盖过章、账户自己信任哪些证明方。核心接口有 check(module) 与 checkForAccount(smartAccount, module)——通过则正常返回,不通过直接回滚;trustAttesters(threshold, attesters) 让账户声明”达到几家证明方认可我才算安全”。适配器(Adapter)是钱包侧的接线员,负责把查询安全地转发给注册表并正确执行回滚结果。规范还提供了无所有者的单例注册表参考实现,但并未强制所有人都用它。

这道门能拦什么、拦不住什么
拦得住的:把来源不明的模块地址添加进账户的调用会被适配器拦下;证明方名单与阈值公开可查,用户可以核对某模块拿到过谁的章。拦不住的同样要说清:注册表验证的是”这份证明是谁签的”,不是”这个模块现在有没有漏洞”——模块出事后证明可能没有及时撤销;证明方本身也可能被收买或失误,阈值设成 1 等于单点信任;已安装模块的恶意升级属于注册表视野之外,模块可升级性要单独审查。
钱包里管 NFT 时的实操清单
- 启用任何新模块前,看账户界面是否展示注册表校验结果,没有校验提示的安装流程等于裸奔。
- 用
trustAttesters口径问一句:我的账户信任哪些证明方?阈值几家?默认值未必符合你的风险偏好。 - 模块地址、注册表地址、适配器实现三者都从官方文档核对,仿冒注册表在理论上可以给任何模块盖章。
- 大仓位 NFT 的地址,能少装模块就少装;模块化便利的性价比要用持仓价值来衡量。
证明的有效期问题
注册表里的证明带时间戳与撤销标记:证明方发现模块出问题时,可以链上撤销那份证明,账户的下一次 check 随即失败。规范的取舍讨论很坦率:全生态共用一个无所有者单例注册表,好处是撤销信号一秒传遍所有人;坏处是这枚注册表本身成了单点——攻击者若能冒用受信任证明方的身份盖章,影响的范围也是全部账户。多注册表并存则相反,撤销传播变慢,给漏洞留出窗口期。对普通用户,这意味着”通过注册表检查”读起来像绿灯,实际语义是”若干被信任的签名者,在某个时间点,各自签了名字”。
规范的参考实现思路源自以太坊证明服务(EAS),但为模块场景做了改造:证明按”模块地址加证明方”二维存储,检查时按账户信任的证明方名单与阈值统计有效数量,不足即回滚(AttestationThresholdNotMet)。还有一条对账户方很关键的细节——规范提供了 checkForAccount,同一个模块在不同账户名下可以要求不同强度的证明,账户自己的信任配置被直接编进检查路径。
模块注册表把”这个插件安全吗”变成链上可查的命题,但答案的质量取决于证明方;把它当成安检门而不是保险箱,是合理的预期。本文为安全机制科普,不构成投资建议。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。