gpt4 book ai didi

javascript - 在 ethers.js 中设置合约方法的气体限制

转载 作者:行者123 更新时间:2023-12-05 00:25:34 25 4
gpt4 key购买 nike

问题
我正在尝试在测试网络(ropsten)中使用契约(Contract)方法,但由于此错误而失败:

reason: 'cannot estimate gas; transaction may fail or may require manual gas limit',code: 'UNPREDICTABLE_GAS_LIMIT'


代码
我创建了一个智能合约的实例并想调用它的注册方法:
const registrationContract = new ethers.Contract(ADDRESS, abi, signer);
const hashedDomain = utils.keccak256(utils.toUtf8Bytes(domain));

const register = await registrationContract.register(hashedDomain, walletAddress);
ethers.js 是否提供了设置合约限制的功能?或者这可以通过其他方式完成吗?我在 documentation 中没有找到.

最佳答案

您可以使用对象作为最后一个参数来设置气体限制,对于简单的转账交易,您可以执行以下操作:

const tx = {
to: toAddress,
value: ethers.utils.parseEther(value),
gasLimit: 50000,
nonce: nonce || undefined,
};
await signer.sendTransaction(tx);
如果您正在对智能合约进行交易,想法是相同的,但请确保在您的 abi 方法之一中设置最后一个参数,例如:
const tx = await contract.safeTransferFrom(from, to, tokenId, amount, [], {
gasLimit: 100000,
nonce: nonce || undefined,
});
这可以修复 UNPREDICTABLE_GAS_LIMIT 错误,因为手动通知它 ethers 会跳过向提供程序请求计算的 gas_limit 的 rpc 方法调用。

关于javascript - 在 ethers.js 中设置合约方法的气体限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70622074/

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