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

溫馨提示×

溫馨提示×

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

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

怎么用EthMon.php監聽以太坊代幣轉賬交易

發布時間:2021-10-23 09:26:24 來源:億速云 閱讀:350 作者:柒染 欄目:互聯網科技

怎么用EthMon.php監聽以太坊代幣轉賬交易,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

EthMon開發包用于監聽以太坊ERC20代幣合約的轉賬交易。

1、開發包概述

EthMon代幣交易監聽開發包特點如下:

  • 監聽以太坊合約日志中指定地址發生的代幣轉入/轉出交易

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

  • 即支持標準的Web3接口(例如Infura),也支持Etherscan非標接口

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

怎么用EthMon.php監聽以太坊代幣轉賬交易

EthMon的主要代碼文件清單參見官方說明:http://sc.hubwiz.com/codebag/ethmon-php/

2、使用說明

在開始之前,請使用自己的API KEY替換以下文件的內容

  • demo/etherscan-key

  • demo/infura-key

EthMon是開發包的入口類,調用其scanBlocks()方法可以掃描指定區間的以太坊區塊,提取并解析其中的合約日志,當匹配監聽的地址后,調用事件監聽器(IEventListener接口實現對象)的handleEvent()方法并傳入解析后的事件對象。

2.1 IEventListener

調用者的程序需要在IeventListener接口的實現類中封裝自己的業務邏輯,例如寫入數據庫等等。下面的代碼實現了一個基本的事件監聽器 —— 只是簡單地在屏幕顯示輸出事件對象的內容:

class EzListener implements IEventListener{
  function handleEvent($event){
    var_dump($event);
  }
}

handleEvent()方法的參數是一個StdClass對象,結構如下:

  • block:交易所在區塊號

  • txhash:交易哈希

  • contract:觸發事件的合約地址

  • name:事件名稱,例如:Transfer

  • flow:資金流向,可能值:inbound - 轉入 , outbound - 轉出

  • params:事件參數數組,成員依次為:

    • 轉出地址,字符串

    • 轉入地址,字符串

    • 代幣數量,BigInteger,可以調用toString()方法將其轉換為字符串

一旦定義好事件監聽器,就可以按如下步驟設置并啟動監聽:

2.2 創建EthMon對象

創建EthMon實例需要傳入一個EthApi對象,例如使用EthApiWeb3對象:

$ethApi = new EthApiWeb3('https://mainnet.infura.io/v3/<your-api-key>');
$em = new EthMon($ethApi);

2.3 設置要監聽的代幣合約

創建了EthMon實例后,需要調用watchToken()方法設置要監聽的代幣合約,例如監聽BNB代幣合約:

$em->watchToken('0xb8c77482e45f1f44de1745f52c74426c631bdd52');

2.4 添加要監聽的代幣交易相關地址

使用EthMon實例的watchAddress()方法添加要監聽的代幣交易相關地址。例如下面的代碼監聽地址0xd3705916ce7e2c43806e0e0707c4b9d6f27e9ab2收到代幣 的事件:

$em->watchAddress('0xd3705916ce7e2c43806e0e0707c4b9d6f27e9ab2',EthMon::FLOW_IN);

而下面的代碼監聽地址0x6c6cbbb3ef3d690de7aa0525b5e6c2ffe7aed6a5轉出代幣的事件:

$em->watchAddress('0x6c6cbbb3ef3d690de7aa0525b5e6c2ffe7aed6a5',EthMon::FLOW_OUT);

當希望監聽一個地址的轉入/轉出代幣事件時,使用EthMon::FLOW_INOUT標志:

$em->watchAddress('0xd3705916ce7e2c43806e0e0707c4b9d6f27e9ab2',EthMon::FLOW_INOUT);

2.5 添加事件監聽器

調用EthMon實例的addEventListener()方法添加一個事件監聽器對象,當EthMon的scanBlocks()掃描區塊時,將在滿足條件時調用這些事件監聽器。

例如,下面的代碼添加我們之前定義的EzListener類的實例對象:

$em->addEventListener(new EzListener);

2.6 掃描區塊鏈

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

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

while(true){
  $em->scanBlocks('latest','latest');
  sleep(5);
}

雖然起止區塊號都可以使用任意整數值,但由于Etherscan和Web3的返回記錄數量都有限制,因此不建議一次掃描多個區塊。例如下面的代碼試圖掃描從8500000到8500404的405個區塊:

$em->scanBlocks(8500000,8500404);    //不建議,可能失敗

建議逐塊掃描,同時考慮到第三方服務的訪問頻次限制,在兩次掃描期間進行適當的延時處理。


看完上述內容,你們掌握怎么用EthMon.php監聽以太坊代幣轉賬交易的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

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

php
AI

江川县| 云浮市| 衡阳县| 宜良县| 固原市| 湖北省| 三明市| 乐安县| 张家港市| 余干县| 孟津县| 富锦市| 芦溪县| 新巴尔虎左旗| 博白县| 三门县| 泾川县| 柘荣县| 鄂温| 平顶山市| 昭苏县| 绥化市| 垫江县| 洮南市| 通江县| 洛浦县| 靖宇县| 卢氏县| 平原县| 大庆市| 长岛县| 社旗县| 阳东县| 正阳县| 潢川县| 齐齐哈尔市| 东台市| 诸暨市| 保德县| 石景山区| 礼泉县|