Как получить подтверждения блока для конкретной транзакции с помощью JSON RPC?
Это информация, которая приходит в транзакцию JSON в биткойнах, но, похоже, ее нет в эфириуме.
Что мне не хватает?
Когда вы отправляете транзакцию, вы получаете обратно хэш транзакции.
Используйте команду getTransactionByHash({хэш транзакции}) для получения сведений о транзакции. Ваш blockNumber не должен быть нулевым, если транзакция была добыта и включена в блок.
Вызов задокументирован в https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_gettransactionbyhash со следующим примером:
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":1}'
// Result
{
"id":1,
"jsonrpc":"2.0",
"result": {
"hash":"0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b",
"nonce":"0x",
"blockHash": "0xbeab0aa2411b7ab17f30a99d3cb9c6ef2fc5426d6ad6fd9e2a26a6aed1d1055b",
"blockNumber": "0x15df", // 5599
"transactionIndex": "0x1", // 1
"from":"0x407d73d8a49eeb85d32cf465507dd71d507100c1",
"to":"0x85h43d8a49eeb85d32cf465507dd71d507100c1",
"value":"0x7f110" // 520464
"gas": "0x7f110" // 520464
"gasPrice":"0x09184e72a000",
"input":"0x603880600c6000396000f300603880600c6000396000f3603880600c6000396000f360",
}
}
Затем вызовите eth_blockNumber ( https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_blocknumber ), чтобы получить текущую высоту блока. Ваше количество подтверждений равно результату eth_blockNumber за вычетом результата eth_getTransaction blockNumber.
Ответ, данный BokkyPooBah, идеален, и что касается того, как это связано с подтверждениями, я поднял тот же вопрос здесь: как (текущий номер блока - номер блока данной транзакции) дает количество подтверждений? .
Вы также можете обратиться к комментариям к вопросу: Покрытие подтверждения транзакций в сети Ethereum . Идея состоит в том, что если ваша транзакция была включена в блок номер 100 (только предположим), а текущий номер блока равен 160, это означает, что 60 случайных майнеров приняли блок 100 как действительный и добавили в эту цепочку, и поэтому вы можете сказать, что у вас есть 60 подтверждений. Все дело в консенсусе.
Нико
Нико
конфиденциальностьisahumanright.eth
Слава Фомин II