Contract-Deployment

將合約部署到 Mainnet 和 Ropsten 上的同一地址是否可行且明智?

  • December 25, 2016

傳統上,當人們為公共使用部署合約時,他們傾向於為測試網和主網發佈單獨的合約地址。通常這需要他們包含程式碼來檢查合約在哪個網路上,正如我們在這個例子中看到的那樣。

這在以前似乎是必要的,因為在沒有重放保護的情況下,Morden 使用了非常高的 accountStartNonce,使得在主網上創建相同的地址是不切實際的。(請參閱 是否可以為合約提供與 morden 相同的地址

既然EIP 155 重放保護已經生效,並且Ropsten 使用的 accountStartNonce 為 0,就像 Mainnet,還有什麼好的理由繼續為 mainnet 和 testnet 使用單獨的地址,或者我們應該擺脫這段程式碼而只使用一個地址對彼此而言?

反對您的建議的一個相當弱的論點如下:部署者必須在測試網和主網中使用相同的私鑰。這可以被認為是一種安全風險,因為測試網中的私鑰通常不需要安全地儲存和處理,而在主網中他們肯定會這樣做。因此,混合這兩個域會模糊每個域的安全要求。

不過,我會爭辯說,在測試網和主網中擁有相同地址的優點也不是很有說服力。在我看來,在您連結的範例中,一個更好的解決方案將在建構子中傳遞相應的地址。

此外,無論如何,並非所有特定於網路的程式碼都會過時(例如,諸如眾籌持續時間、驗證器編號等參數)。

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