Solidity

使用 create2() 創建智能合約有什麼好處?

  • June 5, 2021

為什麼有人會使用create2()內聯彙編程式碼以工廠模式創建子合約,而不是使用newContract()創建“newContract”的實例?

使用其中一種的優點和缺點是什麼?

部署智能合約時預設使用**CREATE操作碼。**部署的合約地址是這樣計算的。

keccak256(senderAddress, nonce)

CREATE2操作碼稍後介紹,允許您預先確定合約地址。合約地址是這樣計算的。

keccak256(0xFF, senderAddress, salt, bytecode)

0xFF參數是一個常數,以防止與 CREATE 操作碼發生衝突。

salt參數是發送者在部署合約時發送的值。

bytecode參數是,你可能猜到了,你要部署的智能合約的字節碼。

如果您想在部署之前預先確定合約地址,您可以簡單地遍歷不同salt的值並選擇您喜歡(或想要)的一個。

在這裡可以看到使用 CREATE2 的一個很好的例子。操作碼的應用CREATE2

編輯:使用關鍵字創建合約new需要您知道合約的原始碼。使用new關鍵字創建合約後,它會返回創建的合約的地址。

這也使用CREATE後面的操作碼來創建合約。

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