Tokens
Ethers.js - 使用 eth 值呼叫 mint 函式時出錯
我開始使用智能合約和 ERC721 Collectible NFT,我使用乙太幣作為提供者和Metamask來連接使用者。
我正在使用 React 網站上的 Mint 功能,當我是所有者時它執行良好(因此無需發送 Eth)但是當我嘗試實現它時,我收到一個錯誤:
index.ts:225 Uncaught (in promise) Error: overflow (fault="overflow", operation="BigNumber.from", value=70000000000000000, code=NUMERIC_FAULT, version=bignumber/5.5.0) at Logger.makeError (index.ts:225) at Logger.throwError (index.ts:237) at throwFault (bignumber.ts:358) at Function.from (bignumber.ts:249) at index.ts:263 at Generator.next (<anonymous>) at fulfilled (index.ts:1)
這是我的智能合約鑄幣功能:
function mint(uint256 _mintAmount) public payable { uint256 supply = totalSupply(); require(!paused); require(_mintAmount > 0); if (msg.sender != owner()) { require(msg.value >= cost * _mintAmount); } for (uint256 i = 1; i <= _mintAmount; i++) { _safeMint(msg.sender, supply + i); } }
這是一個工作程式碼(當我是契約的所有者時)
await contract.mint(1);
但是這個不起作用(即使我是所有者與否)
await contract.mint(1, {value: cost});
這是我試圖遵循的文件。
Metamask 和 Ethers 已使用
connect(ethers.providers.Web3Provider, "any");
並且使用以下命令創建(並簽署)契約:
const signer = (new ethers.providers.Web3Provider(window.ethereum)).getSigner(); const contract = new ethers.Contract(address, ABI, signer);
變數為 0.07Eth(鑄造一個 NFT 所需的
cost
數量),並且已使用 contract.cost 函式檢索
const cost = parseInt((await contract.cost()).toString())
我真的不明白如何解決它?謝謝大家的幫助!:)
該
value
參數將字元串作為輸入,因此您無需將成本轉換為 int。當您嘗試轉換它時,它變得太大而不能成為正常整數,這就是您得到溢出的原因。因此,如果您
parseInt
從中刪除cost
,並將其mint
作為字元串發送,它應該可以工作。