
明确核验对象与适用范围
基于区块链合约的研究证据,应拆成可以分别验证的命题:公布的代码是否对应链上合约,关键操作是否受权限约束,以及这些结果是否足以支撑研究结论。本文适用于以太坊及相关EVM合约的技术证据,不涉及链外实验数据或现实身份的真实性认证。
研究记录需要明确网络、合约地址和观察区块。只有对象与观察时点一致,代码、权限状态和结论才具有可比性;相同名称或页面截图不足以确认研究对象。

源码证据:区分对应关系与正确性
Ethereum.org的合约验证文档区分了源码验证和形式化验证:前者检验源码重新编译后是否对应链上字节码,后者围绕预期行为检验正确性。结合元数据哈希的完整匹配,还能强化对源文件及编译信息一致性的确认。

据此,研究附件应保留源文件、编译器版本、优化设置、依赖库信息和匹配结果。涉及构造参数或不可变变量时,需要记录验证工具如何处理这些差异,不能把简单的字节比较当成所有合约都适用的方法。
权限证据:检查谁能操作和授权
OpenZeppelin的访问控制文档说明,Ownable通过所有者约束操作,AccessControl则按角色管理权限。角色管理员可以授予或撤销相关角色,因此仅检查业务角色并不充分。基础AccessControl不支持链上枚举成员,可结合RoleGranted、RoleRevoked事件追踪。
核验时应将关键功能、执行角色、角色管理员和实际持有账户对应起来。例如,“没有账户持有某项业务权限”与“该权限无法再次授予”是不同命题。后者还需要检查授权路径,不能仅凭当前成员为空得出结论。
让结论能够复核
每项研究结论宜对应一组可定位证据,包括合约地址、观察区块、源码匹配记录以及相关状态或事件。对权限变更的判断,应交代记录覆盖范围,并在条件允许时用同一区块的状态查询交叉检查。
存在缺口时应收窄表述。例如,仅完成源码匹配,可写明“源码与该地址的字节码匹配”;尚未检查权限与逻辑,就不应进一步宣称“没有管理风险”或“系统安全”。
常见问题与证据边界
显示“已验证”是否等于没有漏洞?不是。它首先回答代码对应关系,不能代替逻辑审查。完整匹配也不自动证明注释中的承诺成立。
放弃所有权是否等于所有管理权限消失?不能直接这样推断,仍需检查其他角色及其授权机制。某一时点的权限结果也不能自动代表历史状态。可靠核验的核心,是让每个结论都不超出其证据覆盖的对象、时间和技术范围。