如何实现简单的ETH 链上程序监控

admin2023-08-02科学家602

准备

  1. 你最好会一点python ,如果一点程序也不懂,可以试着学习一些简单的python

  2. 你需要有一台 mac 或linux 电脑,会打开终端(Terminal)

  3. 注册一个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

程序升级

  1. 如果你熟悉python 的话,你可以轻易的把上面的程序升级成为监控地址列表,一旦有列表中的地址发生变化,你便可以获悉

  2. 如果你熟悉数据库,你可以加入数据库来储蓄信息,进行更加详细的比对

  3. 如果你想获得更完善的变化信息,可以加入其他API 来获得转账地址等

  4. 可以在被监控地址出现动作后,马上自动进行你的操作,比如卖出,转账等