ERC-4886 代理所有权登记:冷钱包当金库、热地址当跑腿的地址登记处
“资产放冷钱包,日常交互用一个空热钱包”是老牌安全实践,但链上生态并不配合:白名单 mint 看的是地址里的持仓,社区角色按代币余额发放,交互记录只认发起交易的地址——冷钱包里的资产帮不上热地址的场。ERC-4886 提出一个登记处合约,把”这个热地址替那个主地址办事”的委托关系写成链上记录,认这套登记处的合约就可以把主地址的持仓”投影”到代理地址上。按照以太坊 ercs 仓库的记录,这份提案状态为 Stagnant(停滞),创建于 2022 年 9 月 3 日。
提名、确认与三种角色
流程分两步:主地址(Nominator)先调用 makeNomination(proxy, provider) 提名一个代理地址并锁定登记处实例;被提名的代理地址(Proxy)随后调用 acceptNomination 完成确认,登记方才生效。登记处维护三种角色状态,通过 getRole(address) 查询返回字符串形式的角色标签,围绕地址还能查 getAddresses、getProxyRecord、getNominatorRecord、getNomination 等一系列函数(每个都另有 ForCaller 变体,用 msg.sender 代替地址参数)。标准的红线写在显眼处:登记处对”Nominator 直接来调”必须拒绝——若主地址自己还能自由交互,两个地址同时代表同一份持仓,身份映射就乱了。主地址随时可以删除登记(deleteRecordByNominator 一类函数),删除后代理地址立刻失去全部关联权益。

它解决的是身份映射,不是资产控制
这份标准最容易被误读的地方在此:提名不转移任何资产,冷钱包里的币一枚也不会动,代理地址拿到的只是”可以被认账合约识别为与主地址同源”的身份。反过来说,任何需要签名的动作仍然要冷钱包自己签;登记处不发放钥匙,只张贴关系证明。这与 approve 授权有本质区别——approve 让被授权方能动你的币,ERC-4886 只让认账的合约多看一眼你的持仓名单。理解这条线,才能理解提案举的例子:代理地址可以凭主地址的持仓拿 Discord 角色、参与要求持币条件的 mint,而攻击者即使控制了这个热地址,也碰不到金库分毫。
交付地址这个第二参数
提名流程里还有一个常被忽略的字段:acceptNomination 同时接收一个 delivery 地址,用于登记”新收到的资产送到哪里”。这让方案能覆盖一个真实痛点——把冷钱包设为交付地,日常资金流先进金库,代理地址保持轻装;资产搬运和交互身份解耦,被攻破的热地址连”过路资金”都不沉淀。标准为此专门定义了带交付地址的查询函数族(ForCaller 系列),工具端可以直接问登记处:给这个代理地址转资产时,实际应该投递到哪个地址。
使用与核验清单
主地址侧:提名前先确认登记处合约地址来自项目官方文档,同一份提名必须锁定 provider 实例,避免”同一登记处版本多家部署”造成的指错门;确认操作由冷钱包完整签名发出;记住撤销路径,弃用代理时先把登记记录删掉、再处理代理地址的私钥,顺序反了会让代理地址在过渡窗口里继续顶着权益。代理地址侧:接受提名意味着主动进入”公开代表某人”的角色,交互记录会长期把两个地址绑在一起做链上画像,隐私取舍值得提前想清。认账合约侧:addressIsActive 一类查询要在每次发权益的时点现查,不要缓存历史登记状态——登记关系是随时可能被删除的活数据。
现状
按 ercs 仓库口径,ERC-4886 处于 Stagnant,落地登记处与认账合约稀少,主流钱包未内建这套流程。它与 MPC、智能账户等方案在”冷热分离”目标上殊途同归,区别是这条路线几乎不动资产、只加一层公开登记,退出成本低但覆盖面取决于多少合约愿意来查这张登记表。本文为机制说明,不构成任何投资建议。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。