如何將智能合約部署到特定選擇的可用地址?
好吧,我不是在談論主網,而是與 ᴇᴠᴍ 兼容的 ʟ2 仍在使用乙太坊智能合約來儲存其狀態:樂觀乙太坊。
最近在 Optimism 上創建的合約似乎證明可以在任意地址或系統地址創建合約,因為系統合約從
0x42
Optimism 開始。但問題是,通過查看區塊瀏覽器的數據,該交易看起來就像一個普通的CREATE
交易,沒有任何合約互動,也沒有在他們的 Geth 分支中更改程式碼。然而,0x4200000000000000000000000000000000000014
絕對看起來不是一個隨機生成的地址。那麼,我如何將契約部署到
0x4200000000000000000000000000000000000015
例如?0x53A6eecC2dD4795Fcc68940ddc6B4d53Bd88Bd9E
或者,如果它是一項特權操作,它是如何像普通主網地址一樣實施的,其 Optimism 資金已從乙太坊橋接 ?
0x4200000000000000000000000000000000000014
是為未來預部署保留的系統地址。見:https ://twitter.com/scottfits/status/1531798505198481408/photo/1
並且開始的合約
0x42
被認為是標記為由 Genesis 創建的預部署,這意味著它們從區塊鏈的開始就可用。因此,我認為您不能將合約部署到 address0x4200000000000000000000000000000000000015
。地址0x53A6eecC2dD4795Fcc68940ddc6B4d53Bd88Bd9E
是L1賬戶的錢包地址。請參閱:https ://dashboard.tenderly.co/wallet/mainnet/0x53a6eecc2dd4795fcc68940ddc6b4d53bd88bd9e
Chainstack的開發倡導者在這裡!
Solidity 允許通過使用加鹽創建和 CREATE2功能預先計算合約地址。
這使您可以更新合約並將其始終部署在同一地址,這適用於需要大量維護的大型項目。
這篇關於部署確定性智能合約的文章解釋瞭如何做到這一點!