Go-Ethereum

是否有允許下載合約原始碼的 API?

  • April 11, 2018

我正在研究智能合約的安全性,並希望收集一個包含智能合約原始碼的數據集。我想知道是否有允許這樣做的 API。

etherscan,您可以使用 API 來獲取智能合約 ABI,但我想要原始碼。我舉這個例子是因為所有經過驗證的 etherscan 合約都是一個很好的數據集。

我的目標是分析這些原始碼,例如根據分類對它們進行分類或檢查其中有多少包含某些模式。

web3 JS API 有一個 getCode函式,可讓您訪問合約的字節碼 - 已部署到給定地址的區塊鏈。

應該可以對此進行分析以確定程式碼中的常見模式。

由於原始碼在編譯為字節碼之前沒有部署到區塊鏈,因此無法直接檢索它 - 這就是為什麼 etherscan 要求上傳它以驗證它/顯示原始碼的原因。

可能可以從字節碼中大致反編譯/推斷原始碼,但我不知道有任何工具提供此功能。

我最近為etherchain.org創建了一個非官方的 python 庫和可編寫腳本的 cli,稱為pyetherchain,它使您可以訪問送出的solidity 合約原始碼,包括(實驗性)abi 解碼的建構子參數/事務。abi 解碼輸入可幫助您了解合約/人如何與智能合約互動。

安裝並啟動: python -m pip install pyetherchain; python -m pyetherchain

範例: download_contracts.py

這是我發現的一些有趣的事情(檢查評論標頭塊以獲取 abi 解碼交易👍)在此處輸入圖像描述

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