EthTx的搭建与拓展(支持BSC、Polygon)
EthTx的搭建与拓展(支持BSC、Polygon)
EthTx是一款很好用的以太坊交易分析工具(真的!!!),用来分析攻击事件很不错,Peckshield经常用。最近发现它开源了,于是就把它搭建了起来并做了个小二开,让其支持了BSC以及Polygon链的交易分析,不过坑是真多。
notion image

0x1 搭建

准备环境python3、pipenv、docker。
先把源码拉下来
git clone https://github.com/EthTx/ethtx_ce.git
然后看看官方文档怎么搭建
notion image
make populate-db,然而Makefile根本没有中根本没有这个命令
notion image
经过研究,发现没有这个步骤不影响,直接进行下一步,make run-database
notion image
好吧(抓头),又报错了,这里直接新建个.docker_env文件,内容留空,然后再运行上一步。
notion image
可以,mongo数据库是跑起来了,不过提示各种变量是空,那好,新建个.env文件。
notion image
 
然后pipenv install,没什么问题,最后make run-local
notion image
不出意外,又报错了,看看Makefilerun-local命令的内容吧
notion image
好家伙,根本没有run.py这个文件,直接把run.py改成wsgi.py在跑试试。
notion image
OK!终于跑起来了,但是目前肯定是不能正常用的,要进行配置。
 

0x2 配置

notion image
可以看到有这些配置项,这里踩过的坑就不说了,分别说明一下这些配置项
  • 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文件相同即可
notion image
然后make run-local那就算跑起来了。
 

0x3 二开

如果只是要解析以太坊上面的交易,那直接使用https://ethtx.info/就可以了,主网测试网都有,所以如果需要分析其他类以太坊链(如BSC、HECO、Polygon)上的交易的话,就需要二开。
 
首先需要先弄到各个链的RPC接口,我只找到BSCPolygondebug模式的RPC接口,HECO的我没找到,就先不支持了。BSC的和Polygon的直接到getblock.io注册个号,我只找到他们家是提供免费支持debug方法的RPC的,申请个api_key就行了。然后把RPC链接放到.env
notion image
因为主要是需要支持BSCPolygon,以太坊主网、测试网的RPC我就没有去找了,也用不着,所以相关变量留空。ETHERSCAN_KEY也需要留空,后面会讲。
 
修改wsgi.py
notion image
增加了BSCPolygonWeb3node,然后去bscscanpolygonscan上分别注册号并申请apikey,然后将apikey直接拼接到BSCPolygon的浏览器api链接里面,因为他们的apikey是不同的,所以不能使用同一个apikeyETHERSCAN_KEY留空的原因就是这个。
 
修改index.html
notion image
增加两个选项,没什么好说的。
 
修改config.py
notion image
蓝线部分加了两个配置项 CHAINID_NATIVECOINCHAINID_EXPLORERURL,写死就行,主要是把各个链的原生币还有区块浏览器链接对应上
 
修改transactions.py
notion image
绿线部分是新增的,主要是获取当前交易的原生币和区块浏览器链接,因为ethtx默认把ETH当原生币,所以需要把原生币进行一个替换,然后把原生币和区块浏览器链接传给模板。
 
修改transaction.html,主要把原生币ETH替换成传过去nativecoin,然后把区块浏览器链接替换成传过去的explorerurl
 
改完之后简单测试下看
notion image
可以看到支持BSC链上的交易分析了。
 

0x4 开源地址

修改好已经支持BSC和Polygon的EthTx开源到github了,地址