天天看點

EthTx的搭建與拓展(支援BSC、Polygon)

作者:區塊軟體開發

EthTx是一款好用的以太坊交易分析工具,用來分析攻擊事件不錯,Peckshield經常用。

EthTx的搭建與拓展(支援BSC、Polygon)

0x1 搭建

準備環境python3、pipenv、docker。

先把源碼拉下來

git clone https://github.com/EthTx/ethtx_ce.git           

然後看看官方文檔怎麼搭建

EthTx的搭建與拓展(支援BSC、Polygon)

先make populate-db,然而Makefile根本沒有中根本沒有這個指令

EthTx的搭建與拓展(支援BSC、Polygon)

經過研究,發現沒有這個步驟不影響,直接進行下一步,make run-database

EthTx的搭建與拓展(支援BSC、Polygon)

好吧(抓頭),又報錯了,這裡直接建立個.docker_env檔案,内容留白,然後再運作上一步。

EthTx的搭建與拓展(支援BSC、Polygon)

可以,mongo資料庫是跑起來了,不過提示各種變量是空,那好,建立個.env檔案。

EthTx的搭建與拓展(支援BSC、Polygon)

然後pipenv install,沒什麼問題,最後make run-local

不出意外,又報錯了,看看Makefile裡run-local指令的内容吧

EthTx的搭建與拓展(支援BSC、Polygon)

好家夥,根本沒有run.py這個檔案,直接把run.py改成wsgi.py在跑試試。

EthTx的搭建與拓展(支援BSC、Polygon)

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檔案相同即可

EthTx的搭建與拓展(支援BSC、Polygon)

然後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裡

EthTx的搭建與拓展(支援BSC、Polygon)

因為主要是需要支援BSC和Polygon,以太坊主網、測試網的RPC我就沒有去找了,也用不着,是以相關變量留白。ETHERSCAN_KEY也需要留白,後面會講。

修改wsgi.py

EthTx的搭建與拓展(支援BSC、Polygon)

增加了BSC和Polygon的Web3node,然後去bscscan和polygonscan上分别注冊号并申請apikey,然後将apikey直接拼接到BSC和Polygon的浏覽器api連結裡面,因為他們的apikey是不同的,是以不能使用同一個apikey,ETHERSCAN_KEY留白的原因就是這個。

修改index.html

EthTx的搭建與拓展(支援BSC、Polygon)

增加兩個選項,沒什麼好說的。

修改config.py

EthTx的搭建與拓展(支援BSC、Polygon)

藍線部分加了兩個配置項 CHAINID_NATIVECOIN和CHAINID_EXPLORERURL,寫死就行,主要是把各個鍊的原生币還有區塊浏覽器連結對應上

修改transactions.py

EthTx的搭建與拓展(支援BSC、Polygon)

綠線部分是新增的,主要是擷取目前交易的原生币和區塊浏覽器連結,因為ethtx預設把ETH當原生币,是以需要把原生币進行一個替換,然後把原生币和區塊浏覽器連結傳給模闆。

修改transaction.html,主要把原生币ETH替換成傳過去nativecoin,然後把區塊浏覽器連結替換成傳過去的explorerurl。

改完之後簡單測試下看

EthTx的搭建與拓展(支援BSC、Polygon)

可以看到支援BSC鍊上的交易分析了。

0x4 開源位址

https://github.com/Rivaill/ethtx_ce

繼續閱讀