跳到正文
原文
Ethereum Magicians · 标准与升级讨论· Zealynx·精选

如何核验已部署合约仍运行审计过的 commit

原标题

Checking that a deployed contract still runs the audited commit

行业观察 · 协议与网络,根据标题制作的内容信息图,非新闻现场图片
内容信息图

内容摘要

作者 Zealynx 在 Ethereum Magicians 发文,说明如何核验可升级合约仍运行其审计覆盖的代码。浏览器 verified 徽章只证明源码能编译出地址上的字节码,不指明来自哪个 commit。方法是按相同 solc 版本、optimizer runs、viaIR 和 evmVersion 重建审计 commit 并比对 runtime bytecode,有 immutables 时需用 evm.deployedBytecode.immutableReferences 将对应区段清零再比对。尾部 32 字节是元数据 IPFS 哈希,改一行注释只改这 32 字节,对应 Sourcify 的 exact match 与 match 区别。代理需读 EIP-1967 implementation 与 admin 槽位,旧代理如 ZeppelinOS 与 EternalStorage 用不同存储位置和事件主题;Diamond 通过 facets() 查看,EIP-7702 账户代码为 0xef0100 加委托地址且无变更事件。作者引用 Arbitrum 10 月 30 日冻结事件称,在区块 26301885 与 26301886 之间,一笔交易曾两次将 Inbox 指向其他代码再改回,仅四个 Upgraded 日志可见,因此监控需同时读日志和状态,读取失败应记为 unknown。

推荐理由

字节码比对需区分 exact 与 match,尾部 32 字节 IPFS 元数据哈希不同说明源码已变而逻辑未变。

来源:Ethereum Magicians · 标准与升级讨论 · ethereum-magicians.org

打开原文

所属事件

如何核验已部署合约仍运行审计过的 commit

读懂这条消息

来自 Learn 的概念与核对方法,帮助理解新闻中的机制和口径。