Go-Ethereum
如何使用 geth 或其他客戶端獲取待處理的交易?
我想使用 geth 獲得待處理的交易。
我嘗試在 geth 控制台上使用“web3.eth.pendingTransactions”。
所以geth返回'
$$ $$'.
> web3.eth.pendingTransactions []
但我訪問了Etherscan 的待處理交易頁面。
他們可以顯示待處理的交易。
顯示“共找到 74,945 筆待處理交易”和交易列表。
為什麼他們可以獲得經過時間的待處理交易?
這可以使用 geth 或其他客戶端嗎?
還是這是他們自己開發的軟體?
我想通過 web3.js 使用 geth (或通過其他 node.js 庫使用其他客戶端)來獲得待處理的交易。
要獲取待處理的事務,您需要一個您自己執行的節點,因為這種類型的操作需要大量資源。
您可以執行自己的 Geth 節點並等待它同步。當我想在主網上執行一個Geth節點並查詢事務池時,我通常是這樣啟動的。
下載 Geth 二進製文件並將其重命名為
geth.bin
.然後執行:
./geth.bin --datadir=./chaindata \ --rpc --rpcapi="eth,net,rpc,web3,txpool,personal,debug,account" \ --rpccorsdomain='*' --port 30303 \ --txpool.globalslots=250000 \ --txpool.globalqueue=50000 \ console
重要的部分是:
--rpc
啟用 rpc 請求,因此您可以連接 web3.js / web3py / …--rpcapi
定義可通過 RPC 使用的 API;在這種情況下,重要的是txpool
它使 Geth 特定的 API 能夠查詢交易池;這通常比標準更快。此處記錄為非標準 RPC 方法;--txpool.globalslots
並--txpool.globalqueue
增加可用於待處理交易的插槽數量;否則,一旦達到特定數字(預設為 4096),它將忽略其他待處理事務console
它將打開一個控制台,您可以在其中執行命令。像這樣啟動 Geth 並等待它同步後,您可以在打開的控制台中執行命令。
txpool.status
doc將顯示待處理和排隊事務的統計資訊。待定是您關心的那些,如果礦工選擇添加它們,可能會包含在下一個區塊中。> txpool.status { pending: 1234, queued: 4321 }
txpool.content
doc將顯示目前列表中每筆交易的詳細資訊。> txpool.content { pending: { 0x0216d5032f356960cd3749c31ab34eeff21b3395: { 806: { blockHash: "0x0000000000000000000000000000000000000000000000000000000000000000", blockNumber: null, from: "0x0216d5032f356960cd3749c31ab34eeff21b3395", gas: "0x5208", gasPrice: "0xba43b7400", hash: "0xaf953a2d01f55cfe080c0c94150a60105e8ac3d51153058a1f03dd239dd08586", input: "0x", nonce: "0x326", to: "0x7f69a91a3cf4be60020fb58b893b7cbb65376db8", transactionIndex: null, value: "0x19a99f0cf456000" } } }, queued: { 0x976a3fc5d6f7d259ebfb4cc2ae75115475e9867c: { 3: { blockHash: "0x0000000000000000000000000000000000000000000000000000000000000000", blockNumber: null, from: "0x976a3fc5d6f7d259ebfb4cc2ae75115475e9867c", gas: "0x15f90", gasPrice: "0x4a817c800", hash: "0x57b30c59fc39a50e1cba90e3099286dfa5aaf60294a629240b5bbec6e2e66576", input: "0x", nonce: "0x3", to: "0x346fb27de7e7370008f5da379f74dd49f5f2f80f", transactionIndex: null, value: "0x1f161421c8e0000" } } } }