在以太坊链上,用户(外部账户,EOA)可以创建智能合约,智能合约同样也可以创建新的智能合约。去中心化交易所uniswap就是利用工厂合约(PairFactory)创建了无数个币对合约(Pair)。
有create和create2两种方法在合约中创建新合约
create用法很简单:new一个新合约,并传入合约构造函数所需的参数
Contract x = new Contract{value: _value}(params)
其中Contract是要创建的合约名,x是合约对象(地址),如果构造函数是payable,可以创建时转入_value数量的ETH,params是新合约构造函数的参数。