gpt4 book ai didi

web3js - 您如何估计智能合约调用所需的气体量?

转载 作者:行者123 更新时间:2023-12-03 14:12:59 26 4
gpt4 key购买 nike

我想在 RSK 网络中发送交易,并在日志中收到此消息:Not enough gas for transaction execution.我从我的测试环境中获得了 gas 限制参数,使用 web3.eth.estimateGas .

最佳答案

RSK 节点具有用于 eth_estimateGas 的 JSON-RPC ,
这是进行气体估计的最可靠方法。
您可以使用 curl 从终端执行此操作:

curl \
-X POST \
-H "Content-Type:application/json" \
--data '{"jsonrpc":"2.0","method":"eth_estimateGas","params":[{"from": "0x560e6c06deb84dfa84dac14ec08ed093bdd1cb2c", "to": "0x560e6c06deb84dfa84dac14ec08ed093bdd1cb2c", "gas": "0x76c0", "gasPrice": "0x3938700", "value": "0x9184e72a", "data": "" }],"id":1}' \
http://localhost:4444
{"jsonrpc":"2.0","id":1,"result":"0x5208"}
或者,使用 web3.js :
web3.eth.estimateGas({"to": "0x391ec8a27d29a42c7601651d2f38b1e1895e27a1", "data": "0xe26e496319a16c8ccae126f4aac7e3010123927a4739288cd1ace12feafae9a2"})
23176
虽然这与 geth 中的 JSON-RPC 相同(以太坊)和其他与以太坊兼容的节点,
请注意,RSK 和以太坊中的 gas 计算是不同的。
因此它们的实现不同。
例如,某些 VM 操作码的价格不同。
另一个与气体估计相关的显着差异点,
是以太坊实现 EIP-150 ,
而 RSK 没有。
这意味着 1/64 减少 气体估计不适用于 RSK。
( detailed implications of this on gas estimation 可能超出了这个问题的范围。)
这意味着在针对 ganache-cli 运行时,您将期望得到不正确的值。 (以前是 testrpc ),
默认情况下,它在常见的开发工具中使用,例如 Truffle。
为了获得正确的气体,
使用特定于 RSK 的计算,
最好的方法是使用 RSK Regtest
调用时 eth_estimateGas用于本地开发和测试。
在其他场景中你也可以使用
RSK 测试网和主网。

以下其他场景也相关,但与您的问题没有直接关系,但也很高兴知道:
调用智能合约函数时
pureview修饰符,
不需要气体(因此气体估计)。
在执行某些具有定义不变 gas 价格的交易时,
只是您可以将其用作硬编码常量。
例如,本地货币(在这种情况下为 RBTC)的转移,
不变的gas价格是 21000 .
这假设没有 data (有时称为“消息”)
与交易一起发送。

关于web3js - 您如何估计智能合约调用所需的气体量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65920751/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com