解释Diamond将函数选择器映射到多个Facet的方式、diamondCut升级流程与Loupe查询接口,覆盖共享存储和权限风险。
围绕“ERC-2535 Diamond怎么升级Facet、Selector和Loupe接口详解”,本文只处理ERC-2535 Diamond能被一手资料直接证明的部分,并把部署差异、客户端支持和治理权限留在各自边界内。
ERC-2535 Diamond:先画组件,不先谈升级
Diamond在一个外部地址上把四字节函数选择器映射到多个Facet地址,调用通过fallback与delegatecall在Diamond存储上下文中执行。
ERC-2535 Diamond的地址、路由对象和共享状态分别承担不同职责。ERC-2535 Diamond把它们全部画成一个“合约框”,会掩盖调用究竟在哪个代码地址执行。
ERC-2535 Diamond:调用怎样穿过系统
diamondCut可一次添加、替换或移除选择器,并可在变更后执行初始化调用;升级权限必须由实现单独保护。
selector迁移清单必须包含添加、替换、删除三类动作,不能只比较Facet地址。
ERC-2535 Diamond的调用路径需要同时记录入口、回调或delegatecall、最终结算以及失败回滚点。
ERC-2535 Diamond:变更面清单
selector迁移清单必须包含添加、替换、删除三类动作,不能只比较Facet地址。
初始化delegatecall与diamondCut在同一升级交易里发生,初始化失败应让整次变更回滚。
Loupe展示的是当前路由,不会证明旧存储已经被正确解释。
ERC-2535 Diamond每次变更都要比较“路由发生了什么”和“旧状态会怎样被新代码解释”,两份差异不能互相替代。
ERC-2535 Diamond的三条硬事实
Diamond在一个外部地址上把四字节函数选择器映射到多个Facet地址,调用通过fallback与delegatecall在Diamond存储上下文中执行。
diamondCut可一次添加、替换或移除选择器,并可在变更后执行初始化调用;升级权限必须由实现单独保护。
Loupe接口用于枚举Facet与选择器,但共享存储布局不由标准自动隔离,Facet升级仍可能覆盖其他模块的状态。
ERC-2535 Diamond不能替你保证什么
ERC-2535不规定唯一的存储库或治理方式,审计必须结合具体DiamondCut权限、初始化器和存储约定。
ERC-2535 Diamond遇到这项不确定性时,结论应停在“待部署核验”,不能把规范接口继续外推成收益、法律合规、身份可信或永久可用。
ERC-2535 Diamond审计证据包
ERC-2535 Diamond审计证据包不只收集“成功交易”。第一组证据证明选择器路由图怎样读取,第二组证据证明diamondCut操作表由谁触发,第三组证据保留Loupe核验步骤被拒绝时的原始错误,第四组证据说明共享存储风险如何从前述材料推出。ERC-2535 Diamond四组材料都绑定同一网络、对象和版本,避免跨快照拼接出一个表面一致的答案。
ERC-2535 Diamond审计后的持续监控
ERC-2535 Diamond如果包含管理员、代理、Mint权限、网关或可升级模块,监控应覆盖角色变化、实现变化、关键配置变化和异常失败率。ERC-2535 Diamond的标准页面发生状态或版本更新时,内容进入人工复核队列;部署侧变化则按链上事件触发复查。两条线分开,才能判断是规范变化还是具体项目变化。
ERC-2535 Diamond证据出处
- Ethereum Improvement Proposals用于确认ERC-2535 Diamond的正式接口、字段与规范语义。
- Solidity Storage Layout用于确认ERC-2535 Diamond的实现路径、兼容性或安全边界。
ERC-2535 Diamond不能只依赖本文转述;涉及签名、授权或资金动作时,应从以上入口重新取证。可继续阅读Solidity存储槽位、合约权限模型。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。