如何在发送交易前估算燃料费?

How can I estimate gas fees before sending a transaction?

我想在发送之前代表我的用户估算特定交易的汽油费。

如果我知道 Chainweb 区块链上当前的 gas 费率,并且我知道一笔交易将消耗多少单位的 gas,那么我可以将它们相乘以提供发送费用的估算值特定交易。

如何获取这两条信息?

首先,如何获取 Chainweb 上当前的 gas 价格?

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

对于当前的价格,我只确定如何获得当前的最低汽油价格。它在 Kadena 节点的默认配置中设置。当前:0.00000001。这一直让我能够进行交易。

要估算气体量,您可以使用 Pact 气体日志功能。在本地 pact executable 上加载你的合约,并使用带有测试的 .repl 文件来模拟你将执行的特定合约调用的 gas 单位成本。 在你的 repl 测试脚本中,你附上了你需要用

来衡量的合同调用
(env-gas 0)(env-gaslog)

重置气体日志并开始,

(env-gaslog)

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

在开始记录之前,您需要将气体模型设置为 table 和足够高的气体限制。

假设您正在处理硬币合约,并且您需要知道交易将消耗多少单位的气体,您可以使用如下测试:

 (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.pact)和fungible-v2标准(fungible-v2.pact)的源代码一起复制到带有此 repl 的文件夹。您可以 运行 以上:

$ pact -t test.repl

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