如何实现简单的ETH 链上程序监控
准备
你最好会一点python ,如果一点程序也不懂,可以试着学习一些简单的python
你需要有一台 mac 或linux 电脑,会打开终端(Terminal)
注册一个infura.io 的账号,拿到api key
监控什么
下面我们做一个监控地址上所有ETH 和 ERC20 token 的程序
程序
第一步,拿到地址基本信息
首先你需要安装 pyetherbalance
pip install pyetherbalance
下面这个程序就可以简单的得到一个地址的任何ERC20 余额了,infura_api_key 这一项需要填写你完整的infura api id。infura 是以太坊基础设施,由于以太坊区块链体积过于庞大,所以我们需要采取用第三方API
import pyetherbalance def get_erc20_balance(eth_address, erc20_token): infura_url = "<https://mainnet.infura.io/v3/><infura_api_key>" # replace <infura_api_key> with your Infura api ID ethbalance = pyetherbalance.PyEtherBalance(infura_url) balance = ethbalance.get_token_balance(erc20_token, eth_address) return balance["balance"]
第二步,储存基本信息并进行对比
下面的程序选择了USDT 作为监控对象,每间隔十秒钟获取一次地址信息,如果地址上USDT有变化,会马上通知你
import time def monitor(addr): init_balance = get_erc20_balance(addr,"USDT") while True: time.sleep(10) balance = get_erc20_balance(addr,"USDT") if init_balance != balance: print("Balance changed!Old balance:",init_balance,".New balance:",balance) else: print("Normal") init_balance = balance
第三步,完整程序
我们把上面两个程序和起来就可以用了。注意,下面的示例地址你可以随便改成自己要监控的地址
import time import pyetherbalance def get_erc20_balance(eth_address, erc20_token): infura_url = "<https://mainnet.infura.io/v3/><infura_api_key>" # replace <infura_api_key> with your Infura api ID ethbalance = pyetherbalance.PyEtherBalance(infura_url) balance = ethbalance.get_token_balance(erc20_token, eth_address) return balance["balance"] def monitor(addr): init_balance = get_erc20_balance(addr,"USDT") while True: time.sleep(10) balance = get_erc20_balance(addr,"USDT") if init_balance != balance: print("Balance changed!Old balance:",init_balance,".New balance:",balance) else: print("Normal") init_balance = balance if __name__ == '__main__': monitor_addr = "0x1Af6becf1bb1305139570d8D9d8AAdD86A201B3B" # 示例地址 monitor(monitor_addr)
第四步,程序运行
很简单,在你的终端里运行python 即可
python monitor.py
程序升级
如果你熟悉python 的话,你可以轻易的把上面的程序升级成为监控地址列表,一旦有列表中的地址发生变化,你便可以获悉
如果你熟悉数据库,你可以加入数据库来储蓄信息,进行更加详细的比对
如果你想获得更完善的变化信息,可以加入其他API 来获得转账地址等
可以在被监控地址出现动作后,马上自动进行你的操作,比如卖出,转账等