Как получить ценность данных в конкретном месте смарт-контракта, развернутого на RSK?
Я хотел бы получить информацию о конкретном смарт-контракте, который развернут в тестовой сети RSK, чтобы получить значения данных из его хранилища. Как я могу это сделать? я использую
eth_getStorageAt
JSON-RPC, но получаю неожиданные результаты.
1 ответ
Решение
Для этого вы действительно используете запрос 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
- шестнадцатеричная строка для позиции в хранилище смарт-контракта - - шестнадцатеричная строка номера целого блока для значений в определенных блоках или строка
latest
за последнее значение
Последний параметр (
BLOCK_PARAMETER
) интересен, так как вы можете использовать его для запроса исторических значений и, например, посмотреть, как данные в этом месте в хранилище меняются с течением времени.