“与其感慨路难行,不如马上出发。”
在同一地址部署不同合约

工厂合约 一文中,我们了解了两种创建合约的方式:

  • CREATE 创建的合约地址由 创建者地址创建者Nonce 确定
  • CREATE2 创建的合约地址由 创建者地址salt合约字节码 确定

在同一地址部署不同合约的步骤:

  1. 使用 CREATE2 部署 代理合约
  2. 代理合约 使用 CREATE 部署 合约A
  3. 销毁 合约A 和 代理合约
  4. 第二次使用 CREATE2 部署 代理合约
  5. 代理合约 使用 CREATE 部署 合约B

在上面的过程中,在第1步和第4步,只要保证 salt合约字节码 不变,代理合约地址就不变。第2步和第4步中,代理合约 地址和Nonce都没有变,所以即使 合约A 和 合约B 不同,它们部署的地址也是相同的。

参考