Solidity
如何驗證區塊鏈上的合約是否與原始碼匹配?
給定智能合約的(Solidity)原始碼,有沒有辦法確定性地編譯程式碼並將其與區塊鏈上的程式碼進行比較?我想驗證合約是否執行了原始碼聲稱的操作,並且作者沒有篡改它。
AFAIK 目前最好的方法是使用作者使用的完全相同的編譯器版本再次編譯原始碼(因此這是需要披露的內容)並比較字節碼。
因此,您應該檢查的匹配項是編譯後的字節碼與合約創建 tx 的數據。
為了補充@thomas-bertani 的答案,今天 etherchain.org 發布了一個用於乙太坊合約的驗證工具
這是頁面上的文字:
原始碼驗證為使用者與智能合約互動提供了透明度。通過上傳原始碼,Etherscan 會將編譯後的程式碼與區塊鏈上的程式碼進行匹配。就像合約一樣,“智能合約”應該為最終使用者提供更多關於他們“數字簽名”目的的資訊,並讓使用者有機會審核程式碼以獨立驗證它是否確實做了它應該做的事情。