Nodes
儘管已完全同步,Geth 輕節點仍返回 0 個待處理/排隊的事務。無法合理訪問 tx-pool 數據
以下兩個命令被輸入到 Javascript 實時控制台,但從 HTTP 請求返回相同的結果(其方法看起來略有不同)。
該節點已完全同步,如以下結果所示,並且塊計數與預期的同步節點保持一致。
> eth.syncing false
然而,交易池仍然是空的(這意味著該
txpool.content
命令是無用的)。> txpool.status { pending: 0, queued: 0 }
這是我用來啟動節點的咒語。
~geth --config ./config.toml --datadir ./node/ --cache 18000 --txlookuplimit 0 --syncmode light --rpcapi txpool_content --txpool.globalslots=2500 --txpool.globalqueue=250 --http --http.api eth,net,web3,txpool console
奇怪的是,在控制台中,我可以使用以下咒語來查看待處理的交易。
eth.getTransaction(eth.getBlock("pending").transactions[0])
但這並不能幫助我從控制台外部訪問 tx-pool,也不清楚如何訪問整個資料結構,而不是從控制台內部訪問單個索引。嘗試顯示整個結構(省略索引)會得到以下結果:
> eth.getTransaction(eth.getBlock("pending").transactions) Error: invalid argument 0: json: cannot unmarshal non-string into Go value of type common.Hash at web3.js:6405:37(47) at web3.js:5115:62(37) at <eval>:1:19(9)
我的印像是
txpool.status
全域的——如果txpool
命名空間僅用於本地事務,如何查看全域 txpool 和/或從控制台外部訪問它?謝謝。
如果我的來源仍然適用,輕節點
cannot maintain a pool of pending transactions
(除了它自己的交易)。輕客戶端只維護自己的事務。它無法維護待處理交易池,因為它無法檢查這些交易的有效性(沒有狀態,從網路中提取每筆交易的成本很高)。
編輯:
另外,去年已經在這裡問過了。所以它似乎仍然是正確的。