地址与合约分析
从一个地址查看合约源码、只读方法、存储布局、代理关系和命名空间存储。
输入合约地址后,可以查看源码、读取公开状态,或定位变量所在的 storage。代理和命名空间存储也可以在这里继续分析。
只查函数或变量时,直接进入对应页面即可。需要从代码一路看到状态时,可按下面顺序查看。
地址分析的 4 步
1. 先确认代码来自哪里
打开 Sources 查看合约文件。代理合约会显示实现合约;加载后可继续查看它的源码和布局。
2. 读取公开状态
打开 Read Contract,调用 ABI 中的 view 函数。例如用 owner() 查看管理员,或用 balanceOf(address) 查询余额。这里不会发送交易。
3. 查看变量在 storage 中的位置
打开 Storage Layout,查看变量所在的 slot、字节范围和类型。mapping 或数组需要提供 key / index;也可以用其他地址或 JSON 的布局解释当前地址的状态。
4. 处理代理和命名空间存储
代理地址保存状态,代码和布局通常来自实现合约。使用 Proxy Storage 加载实现合约;遇到 @custom:storage-location 时,用 EIP-7201 Decoder 查看对应 namespace 的布局。
按问题查看
| 想知道什么 | 从这里开始 |
|---|---|
| 合约有哪些文件、函数定义在哪里 | Sources |
| 某个只读函数返回什么 | Read Contract |
| 一个变量占用哪个 slot、如何解码 | Storage Layout |
| 为什么地址指向实现合约,或如何加载实现合约 | Proxy Storage |
| namespace 的根 slot 和结构体布局是什么 | EIP-7201 Decoder |
