亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

高密市| 交口县| 白朗县| 武冈市| 北辰区| SHOW| 呈贡县| 卫辉市| 旬邑县| 资源县| 安达市| 通州区| 鄄城县| 满洲里市| 扎囊县| 濮阳县| 深水埗区| 涪陵区| 大庆市| 涟源市| 兴和县| 吉水县| 凌云县| 泽普县| 溧水县| 武夷山市| 大足县| 磐石市| 扎鲁特旗| 乐平市| 伊宁市| 辽阳市| 万盛区| 江北区| 鹤壁市| 南靖县| 南宫市| 巴楚县| 康马县| 枣强县| 巢湖市|