怎么用EthMon.php监听以太坊代币转账交易

技术怎么用EthMon.php监听以太坊代币转账交易怎么用EthMon.php监听以太坊代币转账交易,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。EthMo

相信很多没有经验的人对于如何利用EthMon.php来监控以太馆的代币转账交易是束手无策的。因此,本文总结了出现问题的原因和解决方法,希望大家可以通过这篇文章来解决这个问题。

EthMon开发包用于监控ethereal ERC20代币合约的转让交易。

1、开发包概述

EthMon令牌交易监控开发包功能如下:

监控Ethereum合同日志中指定地址的令牌转入和转出交易。

当令牌事务发生时,自定义业务逻辑。

也就是说,它既支持标准的Web3接口(如Infura),也支持Etherscan非标准接口。

EthMon在PHP 7.1环境下运行,主要的类及其关系如下图所示:

怎么用EthMon.php监听以太坊代币转账交易

见官方描述:http://sc.hubwiz.com/codebag/EthMon-php/的主要代码文件清单的筛法。

00-1010启动前,请用自己的API KEY替换以下文件的内容。

演示/以太扫描键

demo/infura-key

EthMon是开发包的入口类。通过调用其scanBlocks()方法,可以在指定的时间间隔内扫描Ethereum块,提取并解析其中的合约日志。匹配监听地址后,可以调用事件监听器的handleEvent()方法(IEventListener接口的实现对象)并传入解析后的事件对象。

2、使用说明

调用者的程序需要将自己的业务逻辑封装在IeventListener接口的实现类中,比如写入数据库等。下面的代码实现了一个基本的事件监听器——,它只是在屏幕上显示和输出事件对象的内容:

classzlistereimplementsiventlistener {

functionhandleEvent($ event){ 0

var _ dump($ event);

}

}handleEvent()方法的参数是一个具有以下结构的StdClass对象:

区块:交易所的区块编号。

Txhash:事务哈希。

合同:触发事件的合同地址。

名称:事件的名称,例如:转移。

流动:资本流动方向,可能值:入站-转入,出站-转出。

Params:事件参数数组,其成员为:

输出地址,字符串。

转到地址字符串。

可以通过调用to string()方法将令牌量BigInteger转换为字符串。

定义事件侦听器后,可以按如下方式设置和启动它:

2.1 IEventListener

创建EthMon实例时,需要传入一个EthApi对象,例如,使用EthApiWeb3对象:

$ ethApi=new ethApi web 3(' https://mainnet . infura . io/v3/your-API-key ');

$ em=new ethmon($ EThapi);00-1010在创建了EthMon实例之后,您需要调用watchToken()方法来设置要监视的令牌契约,例如监视BNB令牌契约:

$ em-WatchToken('0xb 8c 77482 e 45 f1 f 44 de 1745 f 52 c 74426 c 631 BDD 52 ');00-1010使用EthMon实例的watchAddress()方法添加与要监控的令牌事务相关的地址。例如,以下代码侦听地址0xd 3705916 ce 7 e2c 43806 e0e 0707 C4 B9 d6f 27 e9 ab 2接收令牌的事件:

$ em-Watch ADdress('0xd 3705916 ce 7 e2c 43806 e0e 0707 C4 B9 d6f 27 e 9 ab 2 ',筛孔: flow _ IN);下面的代码侦听地址0x6c6cbb3 ef 3d 690 de7a a 0525 b5 E6 C2 FFE 7 aed6a 5传送出令牌的事件:

$ em-Watch ADdress('0x6c cbbb 3 ef 3d 690 de7 aa 0525 b5 E6 C2 FFE 7 aed 6 a 5 ',筛孔: flow _ OUT);当您想要监听地址的传入/传出令牌事件时,请使用筛孔:FLOW_INOUT标志:

$ em-Watch ADdress('0xd 3705916 ce 7 e2c 43806 e0e 0707 C4 B9 d6f 27 e9 ab 2 ',筛孔:3360 FLoW _ INOUT);00-1010调用EthMon实例的addEventListener()方法添加事件侦听器对象。当EthMon的scanBlocks()扫描块时,满足条件时将调用这些事件侦听器。

例如,下面的代码添加了我们前面定义的EzListener类的一个实例对象:

$ em-addEventListener(new ezlistener);

2.2 创建EthMon对象

,需要定期调用EthMon的scanBlocks()方法来扫描区块链,以便跟踪新的令牌事务日志。scanBlocks()的两个参数分别用于指定扫描的开始块数和结束块数。当使用特殊的最新字符串时,使用最新的块。

例如,以下代码每5秒扫描一次最新的块:

while(true){ 0

$em-scanBlocks('latest ',' latest ');

睡眠(5);

}尽管起始和结束块号可以使用任意整数值,但不建议一次扫描多个块,因为Etherscan和Web3返回的记录数量有限。例如,以下代码尝试扫描从8500000到8500404的405个块:

$em-scanBlocks(8500000,8500404);//不推荐,但可能会失败。建议逐块扫描。考虑到第三方服务的访问频率限制,在两次扫描期间应进行适当的延迟处理。

看完上面的内容,你知道如何使用EthMon.php来监控Ethereum中的令牌转移交易吗?如果您想学习更多技能或了解更多相关内容,请关注行业资讯频道。感谢阅读!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/43708.html

(0)

相关推荐

  • 根号下的数的取值范围,根号里面的数的取值范围

    技术根号下的数的取值范围,根号里面的数的取值范围根号下的数可以等于零根号下的数的取值范围。
    通常说的根号都是只二次根号,即√,它表示对根号下的数开平方。根号下的数叫做“被开方数”。所以根号下的数需要满足的条件:是某个数的

    生活 2021年10月28日
  • 如何理解C++属性具体概念

    技术如何理解C++属性具体概念本篇文章给大家分享的是有关如何理解C++属性具体概念,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C++编程语言中的属性是一个

    攻略 2021年10月27日
  • python查询字典最快的方法(python字典查找算法)

    技术Python字典查找性能的示例分析这期内容当中小编将会给大家带来有关Python字典查找性能的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。timeit.repeattim

    攻略 2021年12月23日
  • 古代著名书法家有哪些,我国古代著名书法家故事

    技术古代著名书法家有哪些,我国古代著名书法家故事我国古代著名书法家的故事古代著名书法家有哪些:1、王羲之:相传山阴有一位道士,想求王羲之给他写一本《黄庭经》,但又担心王羲之不肯答应。他打听到王羲之非常喜欢鹅,就特地养了一

    生活 2021年10月28日
  • Java流程控制图

    技术Java流程控制图 Java流程控制图package scanner;import java.util.Scanner;public class Demo01 {// 创建一个扫描对象,用于接

    礼包 2021年11月24日
  • java怎么使用正则表达式限制特殊字符的个数

    技术java怎么使用正则表达式限制特殊字符的个数这篇文章给大家分享的是有关java怎么使用正则表达式限制特殊字符的个数的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。使用正则表达式限制特殊字符的

    攻略 2021年11月30日