繁体   English   中英

Ethers js 在使用合约对象时设置 noonce

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM