Erc-20
使用 Hardhat 部署 ERC20,嘗試鑄造代幣但得到“TypeError:_mint 不是函式”
有點搞亂安全帽和 ERC20 部署。我已經部署了一個創建並嘗試使用以下程式碼片段為帳戶鑄造令牌:
const ERC20 = await hre.ethers.getContractFactory("ERC20"); const deployUSDC = await ERC20.deploy("USD Coin", "USDC"); console.log("USDC token address: ", deployUSDC.address); const mintToken = await deployUSDC._mint(deployer.address, { value: ethers.utils.parseEther("2048") }) console.log(mintToken.hash)
但是,在嘗試呼叫該
_mint
函式時出現此錯誤:TypeError: deployUSDC._mint is not a function
我也試過打電話
mint
以防萬一,但我得到了同樣的錯誤。任何人都可以解決或解釋我在這裡做錯了什麼嗎?這樣我就可以鑄造代幣了。
我很確定
_mint
是一個內部函式。它不能像你正在做的那樣在外部呼叫,這就是它不能被看到的原因。在solidity程式碼中你沒有預設
mint
函式,但你可以像這樣添加它:// import OpenZeppelin ERC20 here // ... contract MyToken is ERC20 { constructor(string memory name, string memory symbol) ERC20(name, symbol) {} function mint(address to, uint256 amount) public { _mint(to, amount); } }
現在你可以使用它了:
const ERC20 = await hre.ethers.getContractFactory("MyToken"); const deployUSDC = await ERC20.deploy("USD Coin", "USDC"); const mintToken = await deployUSDC.mint(deployer.address, ethers.utils.parseEther("2048"))
我還添加了鑄幣金額作為參數,而不是發送 ETH。