【问题标题】:invalid BigNumber value (argument="value", value={"mint":{"type":"BigNumber",..}code=INVALID_ARGUMENT, version=bignumber/5.7.0)无效的 BigNumber 值(argument=\"value\", value={\"mint\":{\"type\":\"BigNumber\",..}code=INVALID_ARGUMENT, version=bignumber/5.7.0)
【发布时间】:2022-12-04 07:11:36
【问题描述】:

当我尝试这段代码时出现错误,我以字符串形式传递参数,也没有以对象形式传递参数,但再次出现 bignumber 或无效错误...

const web3Modal = new Web3Modal()

    const connection = await web3Modal.connect()

    const provider = new ethers.providers.Web3Provider(connection)
    const signer = provider.getSigner()

    //for 1155
    let contract = new ethers.Contract(nftaddress, NFT.abi, signer)
    let transaction = await contract.mint(1,{
      mint:ethers.utils.parseEther("0.005"),
       id:"12",
       amount:"3",
    },
   )
    let tx = transaction.wait()
    let event = tx.events[0]
    let value = event.args[2]
    let tokenId = value.toNumber()
    const price = ethers.utils.parseUnits(formInput.price, "ether")

【问题讨论】:

    标签: blockchain smartcontracts web3js ethers.js lazy-minting


    【解决方案1】:

    看起来错误的发生是因为您试图将 mint、id 和 amount 参数作为字符串而不是对象传递。您需要像这样将它们作为对象传递:

    let transaction = await contract.mint(1,{
    mint: ethers.utils.parseEther("0.005"),
    id: "12",
    amount: "3",
    })
    

    在这里,mint、id 和 amount 参数分别作为键为“mint”、“id”和“amount”的对象传递。这应该可以解决您遇到的错误。

    此外,您似乎正在使用 ethers.js 与您的合约进行交互。在这种情况下,您可以使用 ethers.utils.parseUnits() 方法将价格参数解析为以太币单位。该代码将是:

    const price = ethers.utils.parseUnits(formInput.price, "ether")
    

    这会将价格解析为以太币单位并将其存储在“价格”变量中。然后,您可以将“价格”变量作为参数传递给 mint() 方法。

    我希望这有帮助!如果您有任何其他问题,请告诉我。

    【讨论】:

      猜你喜欢
      • 2022-08-14
      • 2021-12-28
      • 2023-02-15
      • 1970-01-01
      • 1970-01-01
      • 2021-07-28
      • 2020-12-21
      • 2023-02-03
      • 2019-03-25
      相关资源
      最近更新 更多