Contract-Development

部署智能合約後,其原始碼是否可以公開查看?

  • March 21, 2019

當智能合約部署到區塊鏈時,所有參與者都可以公開查看原始碼嗎?例如,您在 Etherchain 中看到的內容。我知道那裡有一些契約提供的原始碼為否,但我只是想確認一下。

提前致謝!

不,原始碼不會自動公開查看。如果您有一個可公開使用的智能合約,那麼您通常需要發布它,以便人們知道他們正在與什麼進行互動,但這不會自動發生。

不過,編譯後的字節碼在區塊鏈上。它很難閱讀,但假設有人不會弄清楚它的作用或編寫一個不錯的反編譯器是不安全的。

一般來說,正如其他使用者所評論的那樣,實際上不可能取回原始原始碼。此外,Etherscan.io 僅列出了不到 1% 的帶有原始碼的合約。然而,人們可以使用反編譯器進行逆向工程並嘗試更好地理解部署的智能合約。有各種可用的反編譯器,例如 Porosity、Mythril、EthIR 和 Vandal。目前可用的一個很好的反編譯器(就保真度和可靠性而言)是https://www.contract-library.com。它不是一個獨立的工具,但可以反編譯目前在乙太坊主網上的大多數合約。

這是您在反編譯模式下連結到的合約:https ://contract-library.com/contracts/Ethereum/0xbf35faa9c265baf50c9cff8c389c363b05753275

如您所見,某些函式名稱和資料結構是自動推斷的,有時是基於它在嘗試理解過去的契約時獲得的知識。總體而言,乙太坊的反編譯器目前並未完全設計為使其輸出針對典型的人類消費進行優化,但是它們針對可以發現安全漏洞的其他機器(算法)的消費進行了優化。

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