Solidity
是否可以在 Solidity 中使用 create2 部署合約?
我可以使用 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