首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算RSK上每笔交易的平均天然气成本?

如何计算RSK上每笔交易的平均天然气成本?
EN

Stack Overflow用户
提问于 2022-03-11 11:05:38
回答 2查看 1.3K关注 0票数 10

我想计算一下在过去三个月内RSK上所有交易的平均煤气费。我尝试使用Web3.js库查询RSK块链。要获得仅为单个块高度的事务数据,我必须执行以下操作:

代码语言:javascript
复制
const txsPerBlock = await web3.getBlockTransactionCount(block.height);
const txs = await Promise.all(
    [...Array(txsPerBlock).keys()].map(
        (i) => web3.eth.getTransactionFromBlock(block.height, i))
);

然后计算平均煤气费:

代码语言:javascript
复制
const averageGasFee = txs.reduce(
    (p, c) => p + Number(c.gasPrice) * c.gas,
    0
) / txs.length;

然而,在3个月内,RSK上大约有23万块区块,包括每个区块约3笔交易。因此,我不得不调查了大约60万笔交易,这些交易要花很长时间才能完成。我等了一个小时,然后取消了剧本。是否有更好的查询RSK区块链和计算平均交易气体费用在这么多的区块和交易?

EN

回答 2

Stack Overflow用户

发布于 2022-03-11 11:16:59

您可以使用getBlock()方法(文档),如果将true作为第二个param (returnTransactionObjects)传递,该方法可以立即返回块中的所有事务。

代码语言:javascript
复制
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;

这将导致“仅”230 k请求,而不是以前的600 k请求。

票数 9
EN

Stack Overflow用户

发布于 2022-03-11 12:23:17

使用共价实现这一点要容易得多。您可以通过执行一个PostgreSQL查询来计算所需的煤气费:

代码语言:javascript
复制
SELECT AVG(t.gas_spent * t.gas_price) / 10^18     AS gas_paid
FROM chain_rsk_mainnet.block_transactions t
WHERE
    t.signed_at > (NOW() - INTERVAL '3 month')
    AND t.signed_at <= NOW()
;

该查询的结果是0.000009922904625 (RBTC),执行/获取结果只需4.2秒。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71437556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档