繁体   English   中英

如何通过 web3 从块中获取交易历史记录?

[英]how to get transaction history from blocks via web3?

我现在有一个私有链,我想查询交易历史。我知道 web3 提供了这些方法web3.eth.blockNumber / web3.eth.getBlockTransactionCount / web3.eth.getTransactionFromBlock 所以我可以通过获取最新的块号(假设它是 n)来获取交易历史记录。 范围从 n 到 0 调用 web3.eth.getBlockTransactionCount(i),然后通过 web3.eth.getTransactionFromBlock 获取交易。 但这只是浪费时间且效率低下。 所以我想知道如何通过 web3 或 rpc 或其他方式从有效的块中获取交易历史记录?

对于每个块,您可以将true作为第二个参数传递给getBlock

web3.eth.getBlock(blockHashOrBlockNumber [, returnTransactionObjects] [, callback])

此代码将按块号提供Transactions详细信息。

async function GetBlocks(BlockNumber){
    Block =await web3.eth.getBlock(BlockNumber)
    Block.transactions.forEach(async(transaction) => {
        let t=await web3.eth.getTransaction(transaction)
        console.log(t)
    })
}
GetBlocks(26154210)

如果你有块数组。 例如块=[10000,10001,10002,10003...]。 然后像这样使用 for 循环:-

Blocks.forEach(e => {
    GetBlocks(e)
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM