使用 Parity 的 JSON RPC 呼叫。Infura和Geth之間的區別?
我首先嘗試關注有關使用 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" \
我真的很想了解我做錯了什麼,但我不知道在哪裡可以找到自學的資源,感覺有點卡住了。提前感謝任何可以為我指明正確方向的事情。
像這樣稱呼它
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"
您提供的呼叫似乎是正確的,它適用於我的本地平價 - 您可能沒有完全同步區塊鏈。