[英]Ethers js set noonce when using contract object
我使用以太币与ethers
合约进行交互。 我想同时执行多个事务。 要做到这一点,我知道我必须定义noonce
,它对于每个下一个交易都是 +1。 当我这样做时,我知道该怎么做
await signer.sendTransaction()
但是当我创建Contract
对象并在其上执行函数时,如何使用自定义noonce
执行多个事务? 我试过
contract.methodName(methodParams, {
gasLimit: gasLimit,
gasPrice,
value: ethers.utils.parseEther(
"0.01"
),
noonce: nextNoonce
})
但它不起作用,我得到错误cannot override "noonce"
。 我怎样才能在这里定义它?
要使用ethers.js设置 nonce 值,您可以通过提供程序获取它,如下所示:
阅读更多关于nonce的信息。
import { ethers } from "ethers";
const { ethereum } = window;
const provider = new ethers.providers.Web3Provider(ethereum);
const signer = provider?.getSigner();
const contract = new ethers.Contract(
CONTRACT_ADDRESS,
CONTRACT_ABI,
signer
);
const nonce = await provider.getTransactionCount(contract.address);
const tx = await contract.methodName(param1, param2, {
gasLimit:gasLimit,
gasPrice:gasPrice,
value: ethers.utils.parseEther("0.01"),
nonce:nonce,
});
第 2 步:重置您的 Metamask 帐户。
有时问题出在您的元掩码帐户上,需要重置才能获得正确的客户随机数值。
要重置您的帐户:
单击 Metamask 图标 > 高级设置 > 重置帐户
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.