天天看点

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

继续阅读