如何获取部署在 RSK 上的智能合约特定位置的数据价值?

How to get value of the data at a particular location of a smart contract deployed on RSK?

我想获取特定智能合约的信息——部署在 RSK 测试网上——以从其存储中获取数据值。我怎样才能做到这一点? 我正在使用 eth_getStorageAt JSON-RPC,但我得到了意想不到的结果。

为此,您确实使用了 eth_getStorageAt RPC 请求。 这是一个例子:

curl \
  -X POST \
  -H "Content-Type:application/json" \
  --data '{"jsonrpc":"2.0","method":"eth_getStorageAt","params":["0x19f64674d8a5b4e652319f5e239efd3bc969a1fe", "0x1", "latest"],"id":1}' \
  https://public-node.testnet.rsk.co/

这将产生以下响应

{
  "jsonrpc": "2.0",
  "id": 1,    "result":"0x0000000000000000000000000000000000000000033b2e3c9fd0803ce8000000"
}

工作原理 - eth_getStorageAt RPC 需要 3 个参数:

  • ADDRESS - 智能合约地址串
  • STORAGE_POSITION - 智能合约存储中位置的十六进制字符串
  • BLOCK_PARAMETER - 特定块值的整数块号的十六进制字符串,或最新值
  • 的字符串latest

最后一个参数 (BLOCK_PARAMETER) 很有趣,因为您可以使用它来查询历史值,例如查看存储中该位置的数据如何随时间变化。