工厂合约,顾名思义就是创建合约的工厂。

语法详解

可以根据new关键字来创建合约
new Contract()

示例

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.2;

contract DemoContract {
    string public name;
    constructor(string memory _name) {
        name = _name;
    }
}

contract Test{
    DemoContract[] public ads;
    function create(string calldata _name) external{
        DemoContract dc = new DemoContract(_name);
        ads.push(dc);
    }
}

1、部署合约后执行create方法,填入参数Bob
在这里插入图片描述
2、读取ads数组中的第0个元素,此元素为创建的合约的合约地址
在这里插入图片描述
3、 添加该合约地址
在这里插入图片描述
4、读取出新合约的name值为Bob
在这里插入图片描述

总结

通过new关键字创建新合约必须要有原始合约的全部代码。
可以通过此工厂合约无限制创建新的合约。