Solidity

複製智能合約字節碼

  • April 27, 2021

如果我複制一個 SmartContract 字節碼並在我的私有測試網上使用不同的帳戶部署它,它會保留相同的功能嗎?假設所有者地址沒有硬編碼,我是否能夠從本地帳戶發送相同的呼叫並獲得相同的結果?我希望對一些不提供 ABI 並使用模糊輸入數據的契約進行逆向工程。

根本不,即使合約部署者返回,它也不會發生,因為字節碼是由許多可變數據組成的,例如部署者、發佈時間戳、網路上的塊號等。

您還可以查看返回一些可讀的 Solidity 程式碼的字節碼反編譯器。由於反編譯器的固有限制,我說“有點”。

您將不會獲得建構子程式碼,這些程式碼將成為您關於所有者權限的問題的因素,因為這些事情通常是在初始化期間設置的。原因是建構子在部署時執行,並且不再需要。它的字節碼甚至沒有與合約的其餘部分一起儲存在地址數據中。

所以……您可能被迫反編譯並辨別您想像的建構子必須做什麼,然後重新創建初始化過程。

希望能幫助到你。

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