EthTx是一款好用的以太坊交易分析工具,用來分析攻擊事件不錯,Peckshield經常用。
0x1 搭建
準備環境python3、pipenv、docker。
先把源碼拉下來
git clone https://github.com/EthTx/ethtx_ce.git
然後看看官方文檔怎麼搭建
先make populate-db,然而Makefile根本沒有中根本沒有這個指令
經過研究,發現沒有這個步驟不影響,直接進行下一步,make run-database
好吧(抓頭),又報錯了,這裡直接建立個.docker_env檔案,内容留白,然後再運作上一步。
可以,mongo資料庫是跑起來了,不過提示各種變量是空,那好,建立個.env檔案。
然後pipenv install,沒什麼問題,最後make run-local
不出意外,又報錯了,看看Makefile裡run-local指令的内容吧
好家夥,根本沒有run.py這個檔案,直接把run.py改成wsgi.py在跑試試。
OK!終于跑起來了,但是目前肯定是不能正常用的,要進行配置。
0x2 配置
可以看到有這些配置項,這裡踩過的坑就不說了,分别說明一下這些配置項
- mongo_connection_string:MongoDB資料庫的連接配接字元串,預設填mongodb://127.0.0.1:27017/就行
- mongo_database:資料庫名,之前在.env檔案中将資料庫名定位了ethtx,這裡也填ethtx
- etherscan_api_key:etherscan的apikey,去etherscan上注冊個賬号申請就可以了
- web3nodes:各個鍊的RPC接口,需要支援debug方法,要麼自己搭全節點開個允許debug的RPC,要麼用網上的共享節點,但是infura這類共享節點一般不支援debug方法
- default_chain:預設選用的鍊
- etherscan_urls:各個鍊的etherscan api連結,用于擷取合約的ABI等資訊
可以看到很多配置項都是從環境變量裡面取,很麻煩,設臨時變量又會很長,是以把配置項寫到.env檔案裡好一點,之前正好建立了個.docker_env檔案,這個檔案是用來給docker容器裡塞環境變量的,内容和.env檔案相同即可
然後make run-local那就算跑起來了。
0x3 二開
如果隻是要解析以太坊上面的交易,那直接使用https://ethtx.info/就可以了,主網測試網都有,是以如果需要分析其他類以太坊鍊(如BSC、HECO、Polygon)上的交易的話,就需要二開。
首先需要先弄到各個鍊的RPC接口,我隻找到BSC和Polygon帶debug模式的RPC接口,HECO的我沒找到,就先不支援了。BSC的和Polygon的直接到getblock.io注冊個号,我隻找到他們家是提供免費支援debug方法的RPC的,申請個api_key就行了。然後把RPC連結放到.env裡
因為主要是需要支援BSC和Polygon,以太坊主網、測試網的RPC我就沒有去找了,也用不着,是以相關變量留白。ETHERSCAN_KEY也需要留白,後面會講。
修改wsgi.py
增加了BSC和Polygon的Web3node,然後去bscscan和polygonscan上分别注冊号并申請apikey,然後将apikey直接拼接到BSC和Polygon的浏覽器api連結裡面,因為他們的apikey是不同的,是以不能使用同一個apikey,ETHERSCAN_KEY留白的原因就是這個。
修改index.html
增加兩個選項,沒什麼好說的。
修改config.py
藍線部分加了兩個配置項 CHAINID_NATIVECOIN和CHAINID_EXPLORERURL,寫死就行,主要是把各個鍊的原生币還有區塊浏覽器連結對應上
修改transactions.py
綠線部分是新增的,主要是擷取目前交易的原生币和區塊浏覽器連結,因為ethtx預設把ETH當原生币,是以需要把原生币進行一個替換,然後把原生币和區塊浏覽器連結傳給模闆。
修改transaction.html,主要把原生币ETH替換成傳過去nativecoin,然後把區塊浏覽器連結替換成傳過去的explorerurl。
改完之後簡單測試下看
可以看到支援BSC鍊上的交易分析了。
0x4 開源位址
https://github.com/Rivaill/ethtx_ce