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

admin10个月前科学家308

准备

  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. 可以在被监控地址出现动作后,马上自动进行你的操作,比如卖出,转账等


相关文章

What is the bitcoin network fee?

Transaction fees are included with your bitcoin transaction in order to have your transaction proces...

如何在离线电脑上WIN 7系统上安装扫描二维码

如何在离线电脑上WIN 7系统上安装扫描二维码

首先是开源工具https://github.com/1357310795/QrCodeScanner/releaseswin 7 使用V1.4.1版本 QRCODE 扫描器MyQrCodeScanne...

各种一键安装脚本

LINUX一键安装脚本包集合,废除宝塔一键安装Flask环境 需要提前准备一个已绑定IP的域名wget -N --no-check-certificate https:/...

learnpython-cn

# 用井字符开头的是单行注释 """ 多行字符串用三个引号     包裹,也常被用来做多 &nb...

learnphp-zh

<?php // PHP必须被包围于 <?php ? > 之中 // 如果你的文件中只有php代码,那...

实现 pancakeswap 自动交易

https://pancakeswap.finance 是币安智能链上的一个主要的去中心化交易平台,类似于(抄) 以太网上的 uniswap。因为我的资金主要在币安智能链上,所以一直想要写一个...