为工厂合同生成的令牌设置初始供应



我写了一个工厂合同来生成一些令牌,它能够成功地创建令牌。然而,当我将生成的令牌地址导入钱包时,即使我将其设置为一个值,供应量也是0:

工厂合同片段:

contract TokenFactory {
event MyTokenCreated(address contractAddress);
function createNewMyToken() public returns (address) {
MyToken myToken = new MyToken(2000000);
emit MyTokenCreated(address(myToken));
return address(myToken);
}

MyToken.sol

pragma solidity ^0.8.7;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract MyToken is ERC20 {
constructor (uint256 initialSupply) ERC20("MyToken", "MY") {
_mint(msg.sender, initialSupply * 10 ** 18);
}
}

在从TokenFactory生成MyToken并将生成的令牌地址导入我的钱包后,我预计供应量为200000,但它是0。

有人知道为什么会发生这种情况吗?

请注意,您正在向msg发送令牌。Sender,这里是msg。发件人将永远是工厂合同。因此,如果您想将这些令牌铸造到您自己的钱包中,您可以为MyToken提供一个新的地址参数,您的工厂合同将传递您的地址,或者仅使用txt .origin,以便它引用交易的原始创建者地址。