首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在工厂合同中部署/克隆合同的最佳方法是什么?

在工厂合同中部署/克隆合同的最佳方法是什么?
EN

Stack Overflow用户
提问于 2022-08-04 08:33:28
回答 1查看 113关注 0票数 1

我签订了一份工厂合同,但不知道在createContract函数中使用什么方法是最好的:

代码语言:javascript
复制
function createContract(uint256 x, uint256 y) external returns (address contractAddress) {
        MyContract contract = new MyContract(x, y);
        contractAddress = address(contract);
}

还是这种方法更好:

代码语言:javascript
复制
function createContract(uint256 x, uint256 y) external returns (address contractAddress) {
        bytes memory bytecode = type(MyContract).creationCode;
        bytecode = abi.encodePacked(bytecode, abi.encode(x, y));
        bytes32 salt = keccak256(abi.encodePacked(x, y));
        assembly {
            contractAddress := create2(0, add(bytecode, 0x20), mload(bytecode), salt)
        }
}

哪一个会更高效,有更少的时间复杂度和更少的代码大小?

EN

回答 1

Stack Overflow用户

发布于 2022-08-04 09:57:15

第一种方法使用原始的create操作码,而第二种方法使用create2操作码。

因为你的目标是降低汽油价格,所以第一个片段对你的情况更有用。

具体来说,如果MyContract接受构造函数中的2个uint256参数,否则是空的,并且没有编译器优化,那么事务成本如下:

  • 第一段: 67,720个气体
  • 第二段: 69,789个气体

如果您的目标是基于MyContracty值的确定性地址,那么第二种方法是合适的,因为第一种方法不允许它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73232746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档