91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP開發包OmniMon怎么使用

發布時間:2021-11-30 11:25:56 來源:億速云 閱讀:176 作者:iii 欄目:互聯網科技

這篇文章主要講解了“PHP開發包OmniMon怎么使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“PHP開發包OmniMon怎么使用”吧!

1、開發包概述

OmniMon開發包特點如下:

  • 監聽任意指定地址發生的Omni/USDT代幣轉入/轉出交易

  • 監聽任意指定地址的比特幣轉入/轉出交易

  • 自定義代幣交易發生時的業務邏輯

OmniMon目前可以監聽四種類型的交易事件:

  • 比特幣流入事件:當比特幣流入監聽地址時觸發

  • 比特幣流出事件:當比特幣流出監聽地址時觸發

  • Omni/USDT代幣流入事件:當Omni/USDT代幣轉入監聽地址時觸發

  • Omni/USDT代幣流出事件:當Omni/USDT代幣轉出監聽地址時觸發

OmniMon支持所有類型的Omni Layer交易的解析。

OmniMon運行于PHP 7.1+環境下,主要類以及其關系如下圖所示:

PHP開發包OmniMon怎么使用

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代幣流入,事件結構如下:

    • address:發送賬戶地址

    • script:發送賬戶公鑰腳本

    • height:區塊高度

    • txid:交易ID

    • sender:發送賬戶對象,結構如下:

    • reference:接收賬戶對象,結構同上

    • omin:omni交易對象,根據交易類型不同有所區別

  • out_omni:omni/usdt代幣流出

    • address:發送賬戶地址

    • script:發送賬戶公鑰腳本

    • height:區塊高度

    • txid:交易ID

    • sender:發送賬戶對象,結構如下:

    • reference:接收賬戶對象,結構同上

    • omin:omni交易對象,根據交易類型不同有所區別

2.4 掃描區塊鏈

需要周期性地調用Monitor實例的scanBlocks()方法來掃描區塊鏈以便跟蹤新的Omni/USDT代幣 或比特幣交易。scanBlocks()的兩個參數分別用來指定掃描的起始區塊號和結束區塊號, 當使用特殊的 latest字符串時,表示使用最新的區塊。

例如,下面的代碼每隔10分鐘掃描一次最新的區塊:

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

感謝各位的閱讀,以上就是“PHP開發包OmniMon怎么使用”的內容了,經過本文的學習后,相信大家對PHP開發包OmniMon怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

梨树县| 措勤县| 合山市| 元氏县| 成武县| 化德县| 茂名市| 定边县| 灌云县| 兴业县| 曲麻莱县| 全南县| 青河县| 涟水县| 商河县| 六盘水市| 长治县| 沂源县| 漯河市| 扶沟县| 东兴市| 平顶山市| 开阳县| 祁东县| 黑水县| 新化县| 星子县| 容城县| 湘西| 云龙县| 治县。| 延边| 晴隆县| 宜章县| 陇西县| 宣城市| 阿克苏市| 潢川县| 吉隆县| 新民市| 珠海市|