Solidity
使用 create2() 創建智能合約有什麼好處?
為什麼有人會使用create2()內聯彙編程式碼以工廠模式創建子合約,而不是使用
newContract()
創建“newContract”的實例?使用其中一種的優點和缺點是什麼?
部署智能合約時預設使用**CREATE操作碼。**部署的合約地址是這樣計算的。
keccak256(senderAddress, nonce)
CREATE2操作碼稍後介紹,允許您預先確定合約地址。合約地址是這樣計算的。
keccak256(0xFF, senderAddress, salt, bytecode)
0xFF
參數是一個常數,以防止與 CREATE 操作碼發生衝突。
salt
參數是發送者在部署合約時發送的值。
bytecode
參數是,你可能猜到了,你要部署的智能合約的字節碼。如果您想在部署之前預先確定合約地址,您可以簡單地遍歷不同
salt
的值並選擇您喜歡(或想要)的一個。在這裡可以看到使用 CREATE2 的一個很好的例子。操作碼的應用
CREATE2
編輯:使用關鍵字創建合約
new
需要您知道合約的原始碼。使用new
關鍵字創建合約後,它會返回創建的合約的地址。這也使用
CREATE
後面的操作碼來創建合約。