Contract-Development

如何在特定地址發布合約(用於測試)

  • October 10, 2022

是否有可能以某種方式在特定地址發布契約。我希望能夠對一些地址進行硬編碼,而不是在每次開始使用 ganache 時檢查它的發布位置。

區塊鍊是可預測的。智能合約也是如此。這就是為什麼在區塊鏈中隨機性永遠不可能。

正如 EVM 計算智能合約地址的方式一樣,如果你傳遞正確的參數,你可以做同樣的事情並得到相同的結果。

Solidity 0.8.0 中引入了 EIP-1014(2018) 或 CREATE2,可用於計算智能合約地址。

在solidity 0.8.0 之前,我們習慣於通過組裝來完成,但我們不再需要這樣做。

在 0xf5 添加一個新的操作碼 (CREATE2),它採用 4 個堆棧參數:endowment、memory_start、memory_length、salt。行為與 CREATE (0xf0) 相同,除了使用 keccak256( 0xff ++ address ++ salt ++ keccak256(init_code))

$$ 12: $$而不是通常的 sender-and-nonce-hash 作為合約初始化的地址……

您可以在此處閱讀有關 create2 EIP的更多資訊。

openzeppelin 提供的關於如何在此處使用 CREATE 和 CREATE2 的說明

此處是一份契約樣本。

和影片範例在這裡

告訴我它是否有幫助!

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