您好,登錄后才能下訂單哦!
這篇文章主要講解了“PHP開發包OmniMon怎么使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“PHP開發包OmniMon怎么使用”吧!
OmniMon開發包特點如下:
監聽任意指定地址發生的Omni/USDT代幣轉入/轉出交易
監聽任意指定地址的比特幣轉入/轉出交易
自定義代幣交易發生時的業務邏輯
OmniMon目前可以監聽四種類型的交易事件:
比特幣流入事件:當比特幣流入監聽地址時觸發
比特幣流出事件:當比特幣流出監聽地址時觸發
Omni/USDT代幣流入事件:當Omni/USDT代幣轉入監聽地址時觸發
Omni/USDT代幣流出事件:當Omni/USDT代幣轉出監聽地址時觸發
OmniMon支持所有類型的Omni Layer交易的解析。
OmniMon運行于PHP 7.1+環境下,主要類以及其關系如下圖所示:
Monitor是OmniMon開發包的入口類,使用Monitor監視Omni/USDT代幣或 比特幣轉賬交易的一般步驟如下:
創建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 存入數據庫:
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代幣流入,事件結構如下:
address:發送賬戶地址
script:發送賬戶公鑰腳本
height:區塊高度
txid:交易ID
sender:發送賬戶對象,結構如下:
reference:接收賬戶對象,結構同上
omin:omni交易對象,根據交易類型不同有所區別
out_omni:omni/usdt代幣流出
address:發送賬戶地址
script:發送賬戶公鑰腳本
height:區塊高度
txid:交易ID
sender:發送賬戶對象,結構如下:
reference:接收賬戶對象,結構同上
omin:omni交易對象,根據交易類型不同有所區別
需要周期性地調用Monitor實例的scanBlocks()
方法來掃描區塊鏈以便跟蹤新的Omni/USDT代幣 或比特幣交易。scanBlocks()的兩個參數分別用來指定掃描的起始區塊號和結束區塊號, 當使用特殊的 latest字符串時,表示使用最新的區塊。
例如,下面的代碼每隔10分鐘掃描一次最新的區塊:
while(true){ $monitor->scanBlocks('latest','latest'); sleep(60*10); }
感謝各位的閱讀,以上就是“PHP開發包OmniMon怎么使用”的內容了,經過本文的學習后,相信大家對PHP開發包OmniMon怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。