有没有一种工具可以在提交到 NEAR 网络之前估算合约调用会产生多少 gas?
2 回答
目前最好的估计是使用runtime-standalone,它可以处理事务而不必担心共识/网络。这意味着您可以创建账户、部署合约并调用它们,返回的结果包括燃烧和使用了多少气体。不同之处在于燃烧的气体用于执行函数调用,而使用的气体是合约承诺调用使用了多少。
但是,它目前是一个 MVP 原型,只用来测试我们的核心合约,这里是用来测试锁仓合约的。
如果你的合约方法不调用任何批量承诺而只调用普通承诺,near-sdk-as 中的模拟运行时提供了一种创建帐户和“部署”合约的方法。它通过在内部使用二进制文件来做到这一点near-vm-runner-standalone
,这是一个 rust crate。该二进制文件提供了一个 CLI 来调用单个事务,该事务将被调用合约的当前状态、合约的二进制文件、定义当前上下文的配置文件(谁在调用合约、预付多少 gas 等)作为输入),以及不同费用成本的配置。然后它返回更新后的状态、交易的结果(例如,使用了多少gas,以及由promise 调用排队的交易的任何收据)。
Near-vm-runner-standalone 也以包名: 发布到 npm near-vm
,这是模拟运行时使用的。
这仍然是一个活跃的开发领域,我们希望将独立运行时变成一个有用的易于使用的测试和气体估计工具。
最简单的方法是提交附加了超过所需气体的示例交易,然后在资源管理器中检查使用了多少气体,例如参见 https://explorer.testnet.near.org/transactions/23dgV15pydiVhirWJ4He7TMoyRJM2DUXtcWb7VXFSy2G
附加了 300 Tgas,47 Tgas 用于该给定交易。