Go-Ethereum

從 txpool.getContent() 的響應中獲取每筆交易

  • March 19, 2020

我正在嘗試從 txpool.getContent() 的響應中獲取每個事務。

響應結構在這裡。

> pending: {
'0x0000000186c96Ab17A967d7A3033db82efcA587B': { '11': [Object] },
'0x00000004888f25bb2a792e78D5a6dF392d59e140': { '39': [Object] },
'0x000000057c695b6Af389Ff5b7542c7e01333981A': { '13': [Object] },
'0x000000084115EdEB2c9484b490F7AC89F8980E5F': { '12': [Object] },
'0x000000086aD594b50486A68246D506E5DE24EBD8': {
 '12087': [Object],
 '12088': [Object],
 '12089': [Object],
 '12090': [Object],
 '12091': [Object],
 '12092': [Object],
 '12093': [Object],
 '12094': [Object],
 '12095': [Object],
 '12096': [Object],
 '12097': [Object],
 '12098': [Object],
 '12099': [Object],
 '12100': [Object],
 '12101': [Object],
 '12102': [Object]
},
'0x0000000A453D2De5Dd31Be7Bce57D5550a9CF964': { '16': [Object] },
'0x0000000Ae22EDb6fa815aBF4F32E4d4c3CD4944A': { '11': [Object] },
'0x0000000Ba1365f06809Ebc4A9086913696810268': { '19': [Object] },
'0x0000000FA550De25e3AEBE8CB0f06a803CEE8f81': { '16': [Object] },
.........

因此,我想將上述響應劃分為每個事務。

從同一地址發出的交易也希望被拆分到每個交易中。

例如,我嘗試了以下程式碼。

let res = await txPool.getContent();
let adrOfKey = Object.keys(res.pending);

console.log(res.pending[adrOfKey[0]]);

這段程式碼可以獲得一筆交易。像

 {
 '43': {
   blockHash: null,
   blockNumber: null,
   from: '0x000000057c695b6af389ff5b7542c7e01333981a',
   gas: '0x2a54f3',
   gasPrice: '0x3b0fb351',
   hash: '0x4ab292e6bf9b87df4e36d49c4f1f3a3b78a94c8cce2231f8391fcce838e0867c',
   input: '0xa0712d68000000000000000000000000000000000000000000000000000000000000004b',
   nonce: '0x2b',
   to: '0x0000000000b3f879cb30fe243b4dfee438691c04',
   transactionIndex: null,
   value: '0x0',
   v: '0x26',
   r: '0xfdf317f738171c5ff13c72ddc6457309abe99b711e428afa74789daf7e985f07',
   s: '0x7564970af16d59d6593b7c73f8222fc3aca55675df336036d1703a097bec63d3'
 }
}

但是,這無法判斷是否有任何其他交易由同一地址發出。

我嘗試使用幾個函式,如 json.parse、map、forEach 和一些庫,如 underscore.js、lodash.js。

但我無法獲得交易。

我的開發環境如下:

IDE:IntelliJ(2019.3.3)

node.js:ver 13.6

web3.js:ver 2.0.0-alpha.1

web3-eth-txpool:1.0.0-beta.55

geth:ver 1.9.11-stable

改變這個:

console.log(res.pending[adrOfKey[0]]);

對此:

for (const key of adrOfKey)
   console.log(res.pending[key]);

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