欢迎访问比特币_区块链-币链视界!

币链视界

比特币UTXO跟踪监视PHP开发包知乎

发布时间:2021-02-25比特币评论
UtxoScanner开发包用于扫描监听比特币区块链的UTXO,官方下载地址:。1、开发包概述UtxoScanner开发包特点如下:扫描监听指定任意比特币地址的Utxo产生与消费事件本地管理Utxo,便于查询、

UtxoScanner开发包用于扫描监听比特币区块链的UTXO,官方下载地址:。

1、开发包概述UtxoScanner开发包特点如下:

扫描监听指定任意比特币地址的Utxo产生与消费事件本地管理Utxo,便于查询、裸交易构造和余额统计支持自定义Utxo事件发生时的业务逻辑UtxoScanner运行于PHP7.1+环境下,主要接口、类以及相互关系如下图所示:

UtxoScanner的主要代码文件清单参见:

2、基本使用方法UtxoScanner类是开发包的入口,调用其scan()方法就可以跟踪指定地址(列表)的utxo。例如,下面的代码创建一个UtxoScanner实例,并扫描最新区块内指定地址的utxo:

useBtcToolUtxoScanner;useBtcToolChainRpc;useBtcToolUtxoStoreSqlite3;$scanner=newUtxoScanner(newChainRpc('http://user:123456@127.0.0.1:8332'),newUtxoStoreSqlite3('scanner.db'));$addressList=['1GMsiunopL5sZuTMaPbCjfwXdJEvC62KSG'];$stats=$scanner->scan($addressList);scan()方法返回本次扫描的统计信息对象,其结构如下:

block:扫描的区块总数tx:扫描的交易总数addEvents:本次扫描发现的新增UTXO总数spendEvents:本次扫描发现的消费UTXO总数scan()方法的原型如下:

functionscan($addressList,$startBlockRef='latest',$endBlockRef='latest');因此,在没有指定后两个参数时,scan()方法仅扫描最新的区块。当需要扫描多个区块时,可以指定起止区块号。例如,下面的代码扫描100~1000这901个区块:

$stats=$scanner->scan($addressList,100,1000);UtxoScanner实例会将扫描到的Utxo记录到本地的sqlite3数据库中,其路径在创建UtxoStoreSqlite3实例时指定。你可以直接使用SQL访问这个库,也可以使用UtxoScanner开发包里的UtxoStoreSqlite3。例如,下面的代码提取当前库中所有可用的UTXO:

useBtcToolUtxoStoreSqlite3;$store=newUtxoStoreSqlite3('scanner.db');$utxos=$store->fetch([]);var_dump($utxos);调用fetch()方法时可以传入目标地址列表,这时将返回这些地址对应的可用UTXO集合。例如:

$addressList=['1GMsiunopL5sZuTMaPbCjfwXdJEvC62KSG','3LiJoKm5e3wLbkaAtZ2E15eEVvkQxG9Z7q'];$utxos=$store->fetch($addressList);3、设置Utxo数据库UtxoScanner内置了两种Utxo数据库:

UtxoStoreMemory:内存库UtxoStoreSqlite3:使用Sqlite3如果要使用其他方式存储utxo,可以参考上述类的实现代码进行扩展。在创建UtxoScanner实例时,指定store参数为期望的IUtxoStore实例即可。例如,下面的代码使用MySQL来保存UTXO(假设实现了相应的类):

useBtcToolUtxoScanner;useBtcToolChainRpc;useBtcToolUtxoStoreMySQL;$scanner=newUtxoScanner(newChainRpc('http://user:123456@127.0.0.1:8332'),newUtxoStoreMySQL(...));4、监听Utxo事件使用UtxoScanner实例的addEventListener()方法,可以在utxo扫描器发现新的UTXO时,或者消费已有UTXO时得到通知,如果你需要在发生UTXO事件时进行额外的处理,可以使用这个方法。

首先需要定义一个实现IEventListener接口的监听类,只需要实现handleEvent()方法。例如,下面的代码将在屏幕输出每一个监听到的Utxo事件的内容:

useBtcToolUtxoScanner;useBtcToolIEventListener;$scanner=newUtxoScanner();$scanner->addEventListener(newclassimplementsIEventListener{functionhandleEvent($event){echo"event=>".$event->type.PHP_EOL;var_dump($event);}});handleEvent()方法的参数$event是一个StdClass对象,它包括一个type字段,以及其他附加的字段。

当type的值为add时,表明这是一个UTXO生成事件,附加字段如下:

utxo:Utxo对象,结构如下:txid:交易哈希vout:交易输出序号value:交易数量,单位:btcscript:目标公钥脚本height:交易所在区块的高度

当type的值为spend时,表明这是一个UTXO消费事件,附加字段如下:

txid:交易哈希vout:交易输出序号官方下载地址:比特币UTXO跟踪扫描PHP开发包-汇智网

广告位

热心评论

评论列表