Storage Layout(存储布局)
将状态变量映射到 EVM Storage Slot,并解码指定区块中的变量值。
Storage Layout 显示状态变量在 EVM storage 中的位置和类型。每一行对应一个变量;横向的 0–31 表示 slot 内的字节位置。
界面
| 区域 | 说明 |
|---|---|
| Slot | 变量所在的 storage slot。 |
| 字节网格 | 显示变量在该 slot 中占用的字节范围。 |
| 变量行 | 显示变量名和 Solidity 类型;点击类型区域展开详情。 |
| 详情 | 查看 slot、offset、大小及 mapping 或数组的查询路径。 |
示例
示例使用本地 Storage Layout 和返回值,不会发送请求。
- 点击
owner的address区域。它从 slot0的第 0 个字节开始,占 20 个字节。 - 查看
paused。它也在 slot0,紧接在owner后面,占 1 个字节。 - 点击
balances。这是mapping(address => uint256),先输入地址 key,再点击 Query Slot。 - 展开真实合约中的变量后,可选择最新区块或填写区块高度,再查询对应的链上值。
使用其他布局
当前地址没有布局,或需要用实现合约、同版本合约解释变量时,可以临时替换 Storage Layout。
| 方式 | 适用场景 |
|---|---|
| Use Info From Other Address | 输入另一个链和地址,使用该合约的布局。适合实现合约或同版本部署。 |
| Use Storage Layout JSON | 粘贴编译产物中的布局 JSON。适合已有构建文件或 forge inspect 输出。 |
示例使用本地地址和 JSON,不会发送请求。
- 选择一种来源并应用布局。
- 页面会显示当前布局来源;State address 仍是最初打开的地址。
- 使用替换后的布局查看变量或查询 slot;完成后点击 Reset 恢复原始布局。
注意
- 同一个 slot 可以存放多个较小的变量;
offset表示变量在 slot 中的起始字节。 - mapping 和动态数组没有固定的连续存储位置,需要先提供 key 或索引。
- 布局来自合约编译信息。没有布局时,仍可查看原始 slot 数据。
- 替换布局只改变 slot 的解释方式,不会切换状态读取的目标地址。
