Erc-20

使用 Hardhat 部署 ERC20,嘗試鑄造代幣但得到“TypeError:_mint 不是函式”

  • September 23, 2022

有點搞亂安全帽和 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。

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