Contract-Deployment

如何將智能合約部署到特定選擇的可用地址?

  • November 8, 2022

好吧,我不是在談論主網,而是與 ᴇᴠᴍ 兼容的 ʟ2 仍在使用乙太坊智能合約來儲存其狀態:樂觀乙太坊。

最近在 Optimism 上創建的合約似乎證明可以在任意地址或系統地址創建合約,因為系統合約從0x42Optimism 開始。但問題是,通過查看區塊瀏覽器的數據,該交易看起來就像一個普通的CREATE交易,沒有任何合約互動,也沒有在他們的 Geth 分支中更改程式碼。然而,0x4200000000000000000000000000000000000014絕對看起來不是一個隨機生成的地址。

那麼,我如何將契約部署到0x4200000000000000000000000000000000000015例如?0x53A6eecC2dD4795Fcc68940ddc6B4d53Bd88Bd9E或者,如果它是一項特權操作,它是如何像普通主網地址一樣實施的,其 Optimism 資金已從乙太坊橋接 ?

0x4200000000000000000000000000000000000014是為未來預部署保留的系統地址。

見:https ://twitter.com/scottfits/status/1531798505198481408/photo/1

並且開始的合約0x42被認為是標記為由 Genesis 創建的預部署,這意味著它們從區塊鏈的開始就可用。因此,我認為您不能將合約部署到 address 0x4200000000000000000000000000000000000015。地址0x53A6eecC2dD4795Fcc68940ddc6B4d53Bd88Bd9E是L1賬戶的錢包地址。

請參閱:https ://dashboard.tenderly.co/wallet/mainnet/0x53a6eecc2dd4795fcc68940ddc6b4d53bd88bd9e

Chainstack的開發倡導者在這裡!

Solidity 允許通過使用加鹽創建和 CREATE2功能預先計算合約地址。

這使您可以更新合約並將其始終部署在同一地址,這適用於需要大量維護的大型項目。

這篇關於部署確定性智能合約的文章解釋瞭如何做到這一點!

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