rpc - 如何在 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
) 很有趣,例如,您可以使用它来查询历史值,并查看存储中该位置的数据如何随时间变化。
推荐阅读
- kotlin - 如果 when 用作表达式而不是语句,则在 when 表达式中使用密封类的原因是什么?
- reactjs - 如何更改影子根关闭以打开,React
- c# - C# WPF 应用程序中的 Log4Net 控制台附加程序
- ios - iOS 13 及更高版本未收到来自 Firebase 的推送通知
- api - 使用超级用户访问云上商务中心 sanbox (api v2.0) 中的公司列表
- python - 使用 cmp_to_key 的 Python 排序不会交换某些项目
- firebase - Firebase 聚合属性值而不获取所有相关文档
- python-3.x - 在Python中修改CSV文件中特定行的特定列
- python - 在 Pandas 中用 groupby mean 替换基于多个条件的值
- aframe - 在 aframe 中添加指向 GLTF 对象的链接