Web3js

使用 Parity 的 JSON RPC 呼叫。Infura和Geth之間的區別?

  • June 5, 2018

我首先嘗試關注有關使用 Python 執行 bancor 的文章。 我認為將 api 請求發送到我的完整節點然後在 Python 中複製相同的請求會很容易——所有這些都按照教程進行。唯一的區別是作者使用了 Geth,而我正在執行 Parity。無法弄清楚如何使用 JSON RPC 讓我陷入了困境。我真的不知道(1)我做錯了什麼,或者(2)我現在是否在概念上理解 JSON RPC。

問題:

我應該能夠執行這個 curl 命令:curl -X POST --data \ '{"jsonrpc":"2.0","method":"eth_getTransactionByHash", \ "params":["0x314e0246cfc55bc0882cbf165145c168834e99924e3ff7619ebd8290e713386d"], \ "id":123}' localhost:8545

並得到這樣的結果:

{"jsonrpc":"2.0","id":123, "result":{ "blockHash":"0x42ea1578c23b159186853961dfbdfcdec6b40d23d8f1d971827412bc6948386b", "blockNumber":"0x3dfb88", "From":"0xcaf82fcb3a0323566c0f306684376e3e66d6284b", "To":"0x77a77eca75445841875ebb67a33d0a97dc34d924", "gasPrice":"0xba43b7400", "hash":"0x314e0246cfc55bc0882cbf165145c168834e99924e3ff7619ebd8290e713386d", "value":"0x6c6b935b8bbd400000", ...}}

但是,當我使用連接到奇偶校驗的 localnode 執行它時,我只得到:

Supplied content type is not allowed. Content-Type: application/json is required

我找到了 Parity JSON-RPC API 文件並意識到格式不同。

在此處輸入圖像描述

所以我重新格式化了 curl 命令,如下所示:

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

我解決了內容類型錯誤,但結果為空:

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

然後看這篇堆棧交換文章,我意識到 Parity 有它自己的 Web3 控制台。所以,我想也許我根本不需要使用 curl,可以直接執行。

web3.eth.getTransaction('0x314e0246cfc55bc0882cbf165145c168834e99924e3ff7619ebd8290e713386d')

在此處輸入圖像描述

我仍然得到空回報。

作為旁注,我還嘗試使用 Infura 的api進行通話

curl --include \
--header "Content-Type: application/json" \
--header "Accept: application/json" \

https://api.infura.io/v1/jsonrpc/mainet/getTransaction?params=0x314e0246cfc55bc0882cbf165145c168834e99924e3ff7619ebd8290e713386d '

英富拉 但是我得到了 404 回報。

我真的很想了解我做錯了什麼,但我不知道在哪裡可以找到自學的資源,感覺有點卡住了。提前感謝任何可以為我指明正確方向的事情。

像這樣稱呼它

curl --data '{"method":"web3_clientVersion","params":[],"id":1,"jsonrpc":"2.0"}' \
-H "Content-Type: application/json" \
-X POST localhost:8545

它需要

-H "Content-Type: application/json"

您提供的呼叫似乎是正確的,它適用於我的本地平價 - 您可能沒有完全同步區塊鏈。

引用自:https://ethereum.stackexchange.com/questions/29279