Solidity

使用 ethers js 的 Safemint

  • March 23, 2022

我的 ERC721 程式碼安全薄荷是這樣的:

function mint(address _to, uint256 _mintAmount) public payable {
   uint256 supply = totalSupply();

   {some requires}

   for (uint256 i = 1; i <= _mintAmount; i++) {
     _safeMint(_to, supply + i);
   }
 }

我如何將相同的 ethers js 程式碼放在可以與合約程式碼互動的反應網站中?

我試過類似的東西:

const SmartContract = new ethers.Contract(
           address,
           abi,
           signer
         )

await SmartContract.mint(
                   to,
                   amount
                   )

where to:接收方地址,amount 是鑄幣金額。

但它不起作用。它給出了錯誤:

RPC Error: execution reverted: ether value is invalid

由 require 方法處理:

require((cost.mul(_mintAmount)) <= msg.value, "ether value is invalid");

請讓我知道如何解決此問題。

問題是您沒有發送乙太幣,要使用 etherjs 發送乙太幣,您將一個對像作為最後一個參數傳遞給帶有屬性值的函式呼叫,該值應該是 wei 中的乙太幣數量,這是一個範例await SmartContract.mint(to,amount,{value: cost})

引用自:https://ethereum.stackexchange.com/questions/124455