我如何在发送交易之前估计gas费用?

  • 本文关键字:gas 费用 交易 pact-lang
  • 更新时间 :
  • 英文 :


我想在发送之前代表我的用户估计一笔特定交易的gas费。

如果我知道Chainweb区块链上当前的天然气价格,并且我知道一笔交易将消耗多少单位的天然气,那么我可以将它们相乘,以提供发送特定交易所需成本的估计。

我怎么得到这两条信息?

首先,我如何在链网上获得当前的汽油价格?

第二,是否有一种粗略的方法来估计一笔交易将消耗的天然气单位数?例如,将Ether从一个地址转移到另一个地址需要21,000单位的gas。我如何确定将KDA从一个钱包转移到另一个钱包需要多少单位的gas ?或者说执行合约的N步需要多少单位的天然气?

对于现行价格,我只确定如何获得目前的最低汽油价格。在嘉手纳节点的默认配置中设置。目前:0.00000001。这总能让我做交易。

对于估计气体量,您可以使用Pact气体日志功能。将您的合同加载到本地的可执行协议中,并使用带有测试的.repl文件来模拟您将执行的特定合同调用的gas单位成本。在您的repl测试脚本中,您将需要使用

度量的契约调用包含在内。
(env-gas 0)(env-gaslog)

重置气体测井并启动,

(env-gaslog)

显示自上次重置以来消耗的气体单位。

在你可以开始记录之前,你需要设置气体模型为表和一个足够高的气体限制。

假设你正在处理硬币合约,你需要知道交易将消耗多少单位的天然气,你可以使用下面的测试:

(env-gasmodel "table")
(env-gaslimit 150000)
(load "fungible-v2.pact")
(load "coin.pact")
(env-gas 0)  (env-gaslog)
(create-table coin.coin-table)
(env-gaslog)

如果你想运行上面的代码,你需要将coin合约(coin.pact)和fungibble -v2标准(fungibble -v2.pact)的源代码一起复制到一个文件夹中。您可以运行上面的命令:

$ pact -t test.repl

完整参考:https://pact-language.readthedocs.io/en/stable/pact-functions.html#env-gas

相关内容

  • 没有找到相关文章

最新更新