debug_storageRangeAt
方法返回指定范围内的合约存储。此方法主要用于调试目的,允许开发人员检查和分析链上存储数据。它通常被 Remix 等开发工具用来实现调试功能,并提供对智能合约原始存储槽的直接访问。
此方法返回指定范围内合约的存储条目。
获取存储的区块哈希
区块内的交易索引
要检索其存储的合约地址
起始存储键的哈希
返回的最大存储条目数
包含键值对存储条目的对象
每个存储条目的对象
十六进制字符串形式的存储键
十六进制字符串形式的存储值
用于下一次范围查询的键,如果没有更多条目则不存在
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"storage": {
"0x0000000000000000000000000000000000000000000000000000000000000000": {
"key": "0x0000000000000000000000000000000000000000000000000000000000000000",
"value": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
"0x0000000000000000000000000000000000000000000000000000000000000001": {
"key": "0x0000000000000000000000000000000000000000000000000000000000000001",
"value": "0x000000000000000000000000d7acd2a9fd159e69bb102a1ca21c9a3e3a5f771b"
},
"0x0000000000000000000000000000000000000000000000000000000000000002": {
"key": "0x0000000000000000000000000000000000000000000000000000000000000002",
"value": "0x0000000000000000000000000000000000000000000000000000000000000064"
}
},
"nextKey": "0x0000000000000000000000000000000000000000000000000000000000000003"
}
}
在以太坊智能合约中,存储以 32 字节的槽组织:
keccak256(key . slot)
位置,其中 .
是连接。slot
,数据在 keccak256(slot) + index
。