3.Create2
CREATE2 操作码使我们在智能合约部署在以太坊网络之前就能预测合约的地址
如何计算地址
Create2的目的是为了让合约地址独立于未来的时间。不管未来发生生么,都可以吧合约部署在事先计算好的地址上。用Create2创建的合约地址由四个部分决定::
- 0xFF:一个常数,避免和CREATE冲突
- CreatorAddress: 调用 CREATE2 的当前合约(创建合约)地址。
- salt(盐):一个创建者指定的bytes32类型的值,它的主要目的是用来影响新创建的合约的地址。
- initcode: 新合约的初始字节码(合约的Creation Code和构造函数的参数)。
新地址 = hash("0xFF",创建者地址, salt, initcode)
CREATE2 确保,如果创建者使用 CREATE2 和提供的 salt 部署给定的合约initcode,它将存储在 新地址 中。