Ожидающие транзакции Ethereum Go-ethereum

ПОЛУЧИТЬ ВЕРСИЮ

Гет

Версия: 1.8.10-стабильная

Git Commit: eae63c511ceafab14b92e274c1b18bf1700e2d3d

Архитектура: amd64

Версии протокола: [63 62]

Идентификатор сети: 1

Версия Go: go1.10.1

Операционная система: linux

GOPATH = / home / myuser / go

GOROOT = / usr / lib / go-1.10

Узел работает под:

geth --testnet --rpc --rpcapi "eth, net, web3, personal, parity" --syncmode = "light"

Проблема 1:

Когда я пытался запустить узел с помощью --syncmode = "full" или --syncmode = "fast", CurrentBlock всегда отставал от HighestBlock, примерно на 64 блока. Итак, Node работает под управлением --syncmode = "light".

Моя цель - найти все незавершенные транзакции в моих аккаунтах.

Действия по воспроизведению

  • eth.getBlock('pending').transactions

    ["0x2e6d5273fa29e892313166b8de458793fb0728f13a9077ab2295c1dc2371529c", "0xcc2e659ea3f8b6f6c1b812d559198427b0b2adf0316213c903e08c277384a1c6", "0x6a194f095f3b9ee65fa2eb9765617edda8ea99c2f8ad3e09d03d61735acd3a34", "0x604f53727f6ad056d82f57ce07b4e28cfae16c098dca909bffeaa51fb3584843"]
    
  • Curl eth_getTransactionByBlockHashAndIndex

        curl -X POST -H "Content-Type: application/json" --data'{"id":8,"jsonrpc":"2.0","method":"eth_getTransactionByBlockHashAndIndex","params":["0xc0a9a6075081add64ac2f69b52f40de7b3d726281fc00a9ab23f90c892ae3346", "0x0"]}' http://localhost:8545
    

    Возвращается:

    { "jsonrpc":"2.0",

     "id":8,
     "result":
         {"blockHash":"0xc0a9a6075081add64ac2f69b52f40de7b3d726281fc00a9ab23f90c892ae3346",
    
        "blockNumber":"0x344c3b",
        "from":"0x40e0b46c7a461c02ab6e70d5536e23a9d727f9f8",
        "gas":"0x927c0",
    
        "gasPrice":"0x218711a00",
        "hash":"0x2e6d5273fa29e892313166b8de458793fb0728f13a9077ab2295c1dc2371529c",
    
        "input":"0xfe6362ae000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000c3332353136303935323130370000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3037363832333538353537300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e516d54755334664370664531563444784c547079507074596874664845446f5734774c745159675837375a376378000000000000000000000000000000000000",
    
        "nonce":"0x161",
        "to":"0xabe486e0ad5319d8047d5ef83e8c1cb1dce0d8c5",
        "transactionIndex":"0x0","value":"0x0","v":"0x2a",
        "r":"0xd1c106a22480e173784267c4da3db1707e2efd7598d9c55c6e060842d8e42390",
        "s":"0x15786e1f7f4bd53e402d4911b0334b38973609415868687f171501b64770331e"}}
    

все работает отлично. Теперь давайте запросим эту транзакцию с помощью getTransactionByHash

  • Теперь давайте проверим eth_getTransactionByHash:

       curl -X POST -H "Content-Type: application/json" --data '{"id":8,"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0x2e6d5273fa29e892313166b8de458793fb0728f13a9077ab2295c1dc2371529c"]}' http://localhost:8545
    

    Он возвращается

    {"jsonrpc":"2.0","id":8,"result":null}
    

Мне нужно получить тот же результат, но я получил ноль!

Есть идеи? Или есть предложения по другому способу получения входящих ожидающих транзакций?


person user9931607    schedule 13.06.2018    source источник
comment
Привет, есть ли у вас какое-нибудь решение для этого. Я также получаю null при вызове eth_getTransactionByHash.   -  person Pradeep Agrawal    schedule 21.08.2018
comment
Привет, тебе следует синхронизировать его с быстрым режимом.   -  person user9931607    schedule 30.08.2018


Ответы (1)


Вы всегда можете проверить детали транзакции с помощью getTransactionReceipt. Не могли бы вы попробовать это и вернуться, если иногда вы получаете null?

Также, что касается вашего вопроса о получении ожидающих транзакций, имейте в виду, что эти ожидающие транзакции не для вашей учетной записи или вашего узла (если вы их еще не опубликовали). Поскольку вы подключены к общедоступной версии Ethereum, вы получаете эти транзакции, которые на более поздний момент времени собираются каким-то майнером и добавляются в реестр. В качестве ответа вы можете написать бэкэнд, который сохраняет данные ожидающей транзакции, непрерывно опрашивая их, и, следовательно, служит вашей цели. Надеюсь, я ответил на ваш вопрос.

person Subhasis    schedule 19.11.2018