使用js或者脚本发布合约是我们经常操作的,但是在solidty中如何发布新的合约呢? 比如,我要做一个储蓄池,池子中需要每个调用者都可以从外部发布自己的 erc20 token,就遇到了这种需求。
最主要的就是使用 new 关键字,无论是想创建一个合约的多个实例,还是只想创建一个,都可以使用Solidity 文档new中简要描述的关键字来做到这一点。
附上代码
pragma solidity ^0.8.4;
import "./myErc20Token.sol";
import "hardhat/console.sol";
contract MomContract {
function createToken(string memory name_, string memory symbol_) publiv onlyOwner {
// 创建合约
myErc20Token tokenObj = new myErc20Token(name_, symbol_);
// 发币
tokenObj._mint(0x000000..., 21000000 * 10 ** 8);
// 可以得到合约地址
console.log(address(tokenObj))
}
}