OmniMon开发包用于监听Omni/USDT代币以及比特币的转帐交易,官方下载地址: http://sc.hubwiz.com/codebag/omnimon-php/。php
OmniMon开发包特色以下:数据库
OmniMon目前能够监听四种类型的交易事件:区块链
OmniMon支持全部类型的Omni Layer交易的解析。this
OmniMon运行于PHP 7.1+环境下,主要类以及其关系以下图所示:code
OmniMon的主要代码文件清单参见:http://sc.hubwiz.com/codebag/omnimon-php/对象
Monitor是OmniMon开发包的入口类,使用Monitor监视Omni/USDT代币或 比特币转帐交易的通常步骤以下:blog
Monitor
实例watch()
方法添加要监视的地址,能够屡次调用该方法来 添加多个要监视的地址addEventListener()
方法添加转帐交易事件监听器,能够屡次调用 该方法来添加不一样的监听处理逻辑scanBlocks()
方法扫描新的区块,该方法将自动触发前面 添加的交易事件监听器实例化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 );
使用Monitor实例的watch()
方法,能够添加要监听的地址。例如,下面的 代码添加三个要监听的地址:事件
$addressList = [ '15VSP7X29kR3yoaN2Xv3GQ898JeUp5dAtk', '19i2mRRtUeThfFyPd1j1Ui3LVbTFM9sdie', '3AqUTUsBkAkDBRM8zoAUbBhPxw8x541cZk' ]; foreach($addressList as $address) $monitor->watch($address);
使用Monitor实例的addEventListener()
方法,添加自定义的处理逻辑。 例如,下面的代码定义一个监听接口实现类UtxoSaver,它负责将新发现的UTXO 存入数据库:ip
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目前支持四种事件,其事件对象的结构也有不一样:
须要周期性地调用Monitor实例的scanBlocks()
方法来扫描区块链以便跟踪新的Omni/USDT代币 或比特币交易。scanBlocks()的两个参数分别用来指定扫描的起始区块号和结束区块号, 当使用特殊的 latest字符串时,表示使用最新的区块。
例如,下面的代码每隔10分钟扫描一次最新的区块:
while(true){ $monitor->scanBlocks('latest','latest'); sleep(60*10); }
官方下载地址:Omni/USDT交易监听PHP开发包 - 汇智网