Solidity

是否可以在 Solidity 中使用 create2 部署合約?

  • April 15, 2021

我可以使用 Solidity(不是內聯彙編)部署契約create2嗎?

是的。Solidity 0.6.2 版引入了一種使用操作碼的高級方法create2。從發布文件:

創建合約時,您可以將 salt 指定為“函式呼叫選項”:new Contract{salt: 0x1234}(arg1, arg2)

例如,以下函式將使用of和建構子參數來deploy()部署Test合約。salt``0x1234``123

pragma solidity 0.6.2;

contract Test {
   uint256 public a;
   constructor (uint256 _a) public {
       a = _a;
   }
}

contract DeployTest {
   function deploy() public {
       new Test{salt: 0x1234}(123);
   }
}

注意: salt必須是bytes32. 請參見此處:如何將字元串轉換為 bytes32?

例如:ethers.utils.formatBytes32String("test");➡️0x7465737400000000000000000000000000000000000000000000000000000000

引用自:https://ethereum.stackexchange.com/questions/79567