您现在的位置是:首页 > 文章详情

OmniMon - Omni/USDT交易监听PHP开发包

日期:2019-11-05点击:1021

OmniMon开发包用于监听Omni/USDT代币以及比特币的转账交易,官方下载地址:
http://sc.hubwiz.com/codebag/omnimon-php/

1、开发包概述

OmniMon开发包特点如下:

  • 监听任意指定地址发生的Omni/USDT代币转入/转出交易
  • 监听任意指定地址的比特币转入/转出交易
  • 自定义代币交易发生时的业务逻辑

OmniMon目前可以监听四种类型的交易事件:

  • 比特币流入事件:当比特币流入监听地址时触发
  • 比特币流出事件:当比特币流出监听地址时触发
  • Omni/USDT代币流入事件:当Omni/USDT代币转入监听地址时触发
  • Omni/USDT代币流出事件:当Omni/USDT代币转出监听地址时触发

OmniMon目前支持如下类型Omni Layer交易的解析:

交易类型代码 交易类型名称 备注
0 SimpleSend Omni代币转账,最常用
3 SendToOwners Omni代币空投
20 SellForBitcoin 去中心化交易,卖出
21 SellForOmniCoin 去中心化交易,卖出
22 BuyWithBitcoin 去中心化交易,买入
50 CreatePropertyWithFixedNumbers 创建固定发行量资产
51 CreatePropertyWithVarNumbers 创建可变发行量资产
52 PromoteProperty 推广资产
53 CloseCrowdsale 关闭众售
54 CreateManagedProperty 创建智能资产
55 GrantPropertyToken 资产授权
56 RevokePropertyToken 取消资产授权
70 ChangePropertyIssuer 变更资产发行人

OmniMon运行于PHP 7.1+环境下,主要类以及其关系如下图所示:

在这里插入图片描述

OmniMon的主要代码文件清单如下:

文件路径 说明
omni.php/src/ OmniMon源代码目录
omni.php/src/Monitor.php 交易监视器实现类,支持Omni/USDT和比特币
omni.php/src/IChain.php 区块链访问接口
omni.php/src/ChainRpc.php 基于RPC API的区块链访问实现类
omni.php/src/RpcClient.php RPC API封装类
omni.php/src/RpcModule.php RPC API实现模块,支持Omni/USDT节点和比特币节点
omni.php/src/OmniParser.php Omni Layer协议解析类
omni.php/src/DeBuffer.php Omni Layer协议反序列化缓冲区实现类
omni.php/src/PropertyMetaResolverInterface.php Omni/USDT代币元数据解析器接口
omni.php/src/LocalPropertyMetaResolver.php 基于本地节点实现的Omni/USDT代币元数据解析器
omni.php/src/CloudPropertyMetaResolver.php 基于第三方API实现的Omni/USDT代币元数据解析器
omni.php/src/IEventListener.php 转账交易事件监听器接口
omni.php/src/Utils.php 辅助工具类
demo/ UtxoScanner演示代码目录
demo/monitor-demo.php Monitor类演示代码
demo/omniparser-demo.php OmniParser类演示代码
demo/debuffer-demo.php DeBuffer类演示代码
vendor/ 第三方依赖包
composer.json composer配置文件

2、基本使用方法

Monitor是OmniMon开发包的入口类,使用Monitor监视Omni/USDT代币或
比特币转账交易的一般步骤如下:

  1. 创建Monitor实例
  2. 使用实例的watch()方法添加要监视的地址,可以多次调用该方法来
    添加多个要监视的地址
  3. 使用实例的addEventListener()方法添加转账交易事件监听器,可以多次调用
    该方法来添加不同的监听处理逻辑
  4. 定期调用实例的scanBlocks()方法扫描新的区块,该方法将自动触发前面
    添加的交易事件监听器

2.1 创建Monitor实例对象

实例化Monitor需要传入两个参数,分别用于访问区块链和解析Omni代币元数据。
例如,下面的代码利用一个ChainRpc对象和一个CloudPropertyMetaResolver对象
来创建Monitor实例:

use OmniTool\Monitor; use OmniTool\ChainRpc; use OmniTool\CloudPropertyMetaResolver; $monitor = new Monitor( new ChainRpc('http://user:123456@127.0.0.1:8332'), new CloudPropertyMetaResolver );

2.2 添加要监听的地址

使用Monitor实例的watch()方法,可以添加要监听的地址。例如,下面的
代码添加三个要监听的地址:

$addressList = [ '15VSP7X29kR3yoaN2Xv3GQ898JeUp5dAtk', '19i2mRRtUeThfFyPd1j1Ui3LVbTFM9sdie', '3AqUTUsBkAkDBRM8zoAUbBhPxw8x541cZk' ]; foreach($addressList as $address) $monitor->watch($address);

2.3 添加交易事件监听处理器

使用Monitor实例的addEventListener()方法,添加自定义的处理逻辑。
例如,下面的代码定义一个监听接口实现类UtxoSaver,它负责将新发现的UTXO
存入数据库:

use OmniTool\IEventListener; class UtxoSaver implements IEventListener{ protected $db; function __construct($db){ $this->db = $db; } function handleEvent($event){ if($event->type != 'in_btc') return; $db->saveUtxo( $event->height, $event->txid, $event->vout, $event->value, $event->address, $event->script ); } } $monitor->addEventListener(new UtxoSaver);

OmniMon目前支持四种事件,其事件对象的结构也有不同:

  • in_btc:比特币流入,事件结构如下:

    • height:区块高度
    • txid:交易ID
    • vout:交易输出序号
    • value:交易金额,单位:satoshi
    • address:流入地址
    • script:流入地址的公钥脚本
  • out_btc:比特币流出,事件结构如下:

    • height:区块高度
    • txid:交易ID
    • vout:交易输出序号
    • value:交易金额,单位:satoshi
    • address:流出地址
    • script:流出地址的公钥脚本
  • in_omni:omni/usdt代币流入,事件结构如下:

    • height:区块高度
    • txid:交易ID
    • sender:发送账户对象,结构如下:

      • address:发送账户地址
      • script:发送账户公钥脚本
    • reference:接收账户对象,结构同上
    • omin:omni交易对象,根据交易类型不同有所区别
  • out_omni:omni/usdt代币流出

    • height:区块高度
    • txid:交易ID
    • sender:发送账户对象,结构如下:

      • address:发送账户地址
      • script:发送账户公钥脚本
    • reference:接收账户对象,结构同上
    • omin:omni交易对象,根据交易类型不同有所区别

2.4 扫描区块链

需要周期性地调用Monitor实例的scanBlocks()方法来扫描区块链以便跟踪新的Omni/USDT代币
或比特币交易。scanBlocks()的两个参数分别用来指定扫描的起始区块号和结束区块号,
当使用特殊的 latest字符串时,表示使用最新的区块。

例如,下面的代码每隔10分钟扫描一次最新的区块:

while(true){ $monitor->scanBlocks('latest','latest'); sleep(60*10); }

官方下载地址:Omni/USDT交易监听PHP开发包 - 汇智网

原文链接:https://yq.aliyun.com/articles/726148
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章