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開發包 - 匯智網