Solidity
如何找到合約地址的可靠程式碼
我需要找出公共合約程式碼,即合約地址的可靠程式碼。
例如,這裡有一個合約程式碼選項卡,但它只是彙編和字節碼,沒有用處。
我需要找出方法簽名,以便形成主題。
主要是由於在編譯原始碼時進行了優化,從字節碼/操作碼本身獲取原始碼是不可行的。參考這個問題。
編譯回原始原始碼是不可能的,因為所有變數名、類型名甚至函式名都被刪除了。在技術上可能會得到一些與原始原始碼相似但非常複雜的原始碼,尤其是在編譯期間使用優化器時。除了將字節碼轉換為操作碼之外,我不知道有什麼工具可以做更多的事情
因此,如果合約程式碼是封閉原始碼,則無法找到原始碼。但是,如果契約是公開的,則可能有機會找到原始碼。你可以參考這個問題。
對此沒有通用的解決方案,因為 Solidity 程式碼未在區塊鏈上發布。在區塊鏈上,僅發布生成的字節碼。有不同的區塊瀏覽器,例如 ether.camp,提供上傳solidity 程式碼的選項。他們可以使用可靠程式碼來驗證它是否確實與地址上的字節碼匹配。
有一個項目旨在通過從 github 儲存庫中抓取適合已發布字節碼的原始碼來自動執行此操作
AFAIK,沒有義務發布契約原始碼。使用者在使用前需要對其進行驗證。因此,如果智能合約開發人員想要吸引大多數人,則由他來披露程式碼,以便其他人可以信任它。給定 Solidity 程式碼及其地址,任何人都可以使用此方法驗證已部署的合約。