以太坊的“CREATE”和“CREATE2”都是用于开展智能合约的代码,但生成合约地址的方法不同。
1. CREATE操作代码:
“CREATE”操作码用于早期的以太坊虚拟机(EVM),用于创建新的智能合约。
它根据缔造者的地址和合同交易的计数器(oce)计算合同的地址。oce是地址发送的交易总数,合约帐户每创建一个合约,oce就加1[[13]]。
[[24]]在使用“CREATE”操作代码的情况下,由于它是基于每笔交易中变化的oce的,所以它不确定客户。
2. CREATE2的代码。
“CREATE2”代码在2019年2月28日的君士坦丁堡硬分叉中启用[[5]][[14]]。
开发商可以在引入合同之前决定地址。具体来说,“CREATE2”操作代码如下所示生成签约对象。0xff address sal keccak256(i_code))[12:]其中address是部署人员地址,sal是可选的32字节数据,i_code是合同初始化代码及其参数。
使用“CREATE2”操作码的话,合同地址是确定的。这意味着不同的oce也可以以相同的部署地址和sal值生成相同的合同地址[[24]]。