Go-Ethereum
web3.eth.filter({fromBlock:0, toBlock: ’latest’, address: account}) 不工作?
我的目標是列出來自給定帳戶的所有交易,但尚未成功。
我想知道為什麼我在使用 this 時總是有一個空結果
web3.eth.filter
。我知道有一個有效的解決方案:在私有區塊鏈中列出交易,但每次遍歷所有塊都需要相當長的時間,所以它在使用者端並沒有真正響應。所以我想知道我的程式碼有什麼問題:
web3.eth.defaultAccount = web3.eth.accounts[0]; var account = web3.eth.accounts[0]; console.log('Account: '+ account); var filter = web3.eth.filter({fromBlock:0, toBlock: 'latest', address: account}); filter.get(function(error, result) { if(!error) { for (i=0; i<result.length; ++i) { var block = web3.eth.getBlock(i, true); block.transactions.forEach( function(e) { console.log(" tx hash : " + e.hash + "\n" + " nonce : " + e.nonce + "\n" + " blockHash : " + e.blockHash + "\n" + " blockNumber : " + e.blockNumber + "\n" + " transactionIndex: " + e.transactionIndex + "\n" + " from : " + e.from + "\n" + " to : " + e.to + "\n" + " value : " + e.value + "\n" + " time : " + block.timestamp + " " + new Date(block.timestamp * 1000).toGMTString() + "\n" + " gasPrice : " + e.gasPrice + "\n" + " gas : " + e.gas + "\n" + " input : " + web3.toAscii(e.input))+"\n"; }) } } else { console.log('Error: '+error); } });
我也試過了
filter.watch
,但結果還是一樣:結果仍然是空的。謝謝
該
web3.eth.filter
命令僅通過塊的日誌。當您創建(或接收)從(或接收)您的地址的事務時,並不會確保已創建日誌條目。創建日誌條目是需要明確完成的操作。所以掃描所有的塊確實是要走的路。
為了避免每次都掃描,您應該將您的發現保存在正常數據庫中。