作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想计算为 RSK 上的所有交易支付的平均汽油费最近三个月内。我尝试使用 Web3.js 查询 RSK 区 block 链图书馆。要获取单个区 block 高度的交易数据,我必须这样做:
const txsPerBlock = await web3.getBlockTransactionCount(block.height);
const txs = await Promise.all(
[...Array(txsPerBlock).keys()].map(
(i) => web3.eth.getTransactionFromBlock(block.height, i))
);
然后计算平均gas费用:
const averageGasFee = txs.reduce(
(p, c) => p + Number(c.gasPrice) * c.gas,
0
) / txs.length;
然而,在 3 个月内,RSK 上大约有 230,000 个区 block ,其中每个区 block 大约有 3 笔交易。因此,我不得不对大约 600,000 笔交易进行轮询,这些交易需要很长时间才能完成。我等了一个小时,然后取消了脚本。
最佳答案
您可以使用 getBlock()
方法(docs),如果您通过 true
,则能够立即返回 block 中的所有事务作为第二个参数( returnTransactionObjects
)。
const block = await web3.eth.getBlock(blockNumber, true);
const averageGasFee = block.transactions.reduce(
(p, c) => p + Number(c.gasPrice) * c.gas,
0
) / block.transactions.length;
这导致“仅”230k 请求而不是之前的 600k。
关于javascript - 如何计算 RSK 上每笔交易的平均 gas 成本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71437556/
我是一名优秀的程序员,十分优秀!