Go-Ethereum

如何使用 geth 或其他客戶端獲取待處理的交易?

  • April 16, 2021

我想使用 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"
     }
   }
 }
}

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