OmniTool开发包适用于为PHP应用快速增加对Omni Layer/USDT数字资产的支持能力,即支持使用自有Omni Layer节点的应用场景,也支持基于第三方API服务和离线裸交易的轻量级部署场景。下载地址:omni/usdt php开发包 。
1、OmniTool开发包简介
OmniTool开发包主要包含以下特性:
- 完善的Omni Layer节点RPC封装
- 支持利用自有节点或第三方服务获取指定地址的utxo集合
- 支持离线生成omni代币转账裸交易
- 支持利用自有节点或第三方服务广播裸交易
OmniTool支持本地部署的Omnicored节点,也支持blockchain.info、btc.com等提供的开放API,要增加对其他第三方服务的支持也非常简单,只需要参考代码实现如下接口:
- UtxoCollectorInterface:utxo收集器
- UtxoSelectorInterface:utxo筛选器
- BroadcasterInterface:裸交易广播器
- ExplorerInterface:数据查询接口
OmniTool软件包运行在**Php 7.1+**环境下,当前版本1.0.0,主要类/接口及关系如下图所示:
OmniTool的主要代码文件清单如下:
代码文件 | 说明 |
---|---|
omni.php/src/RpcClient.php | Omni Layer的RPC协议封装类 |
omni.php/src/RpcModule.php | Omni Layer的RPC协议分模块访问语法糖 |
omni.php/src/protocol-spec.json | Omni Layer协议描述元信息 |
omni.php/src/SerializeBuffer.php | Omni Layer协议序列化缓冲区 |
omni.php/src/PayloadFactory.php | Omni Layer协议载荷工厂类 |
omni.php/src/Utxo.php | 未消费交易输出类 |
omni.php/src/UtxoBag.php | Utxo集合类 |
omni.php/src/UtxoCollectorInterface.php | Utxo收集器接口 |
omni.php/src/LocalUtxoCollector.php | 基于OmniCore节点的Utxo收集器实现 |
omni.php/src/CloudUtxoCollector.php | 基于第三方服务的Utxo收集器实现 |
omni.php/src/UtxoSelectorInterface.php | Utxo筛选器接口 |
omni.php/src/DefaultUtxoSelector.php | 默认的Utxo筛选器实现 |
omni.php/src/BroadcasterInterface.php | 裸交易广播器接口 |
omni.php/src/LocalBroadcaster.php | 基于OmniCore节点的裸交易广播器实现 |
omni.php/src/CloudBroadcaster.php | 基于第三方服务的裸交易广播器实现 |
omni.php/src/ExplorerInterface.php | 数据查询接口 |
omni.php/src/CloudExplorer.php | 基于第三方服务的数据查询接口实现 |
omni.php/src/LocalExplorer.php | 基于OmniCore节点的数据查询接口实现 |
omni.php/src/Utils.php | 常用辅助函数 |
omni.php/src/Wallet.php | 离线钱包类 |
demo/rpc-demo.php | RpcClient使用示例,完整实现OMNI代币的发行与转账 |
demo/omni-tx-cloud.php | 创建并广播Omni代币转账裸交易,使用第三方云服务API |
demo/omni-tx-local.php | 创建并广播Omni代币转账裸交易,使用自有节点 |
demo/btc-tx-cloud.php | 创建并广播比特币转账裸交易,使用第三方云服务API |
demo/btc-tx-local.php | 创建并广播比特币转账裸交易,使用自有节点 |
demo/explorer-cloud.php | 查询指定的地址比特币余额/Omni代币余额,使用第三方云服务API |
demo/explorer-local.php | 查询指定地址的比特币余额/Omni代币余额,使用自有节点 |
demo/wallet-init.php | 本地钱包初始化 |
demo/wallet-demo.php | 钱包载入、裸交易构造和广播 |
vendor | 第三方依赖包目录 |
composer.json | composer配置文件 |
2、RpcClient类使用说明
RpcClient类封装了Omni Layer的RPC接口协议。创建RpcClient对象时,需要传入
包含有效身份信息的节点RPC URL。例如,假设安装在本机的omnicored节点软件配置如下:
- rpcuser:user
- rpcpassword:123456
- rpcport:8332
那么可以使用如下的代码来实例化RpcClient:
use \OmniTool\RpcClient;
$client = new RpcClient(
'http://user:123456@localhost:8332' /*节点RPC接口的URL*/
);
Omni Core节点在Bitcoin原有的RPC接口之外,扩充了额外的接口用来操作Omni层的数据,这些扩展的RPC接口采用omni_
前缀以区隔于Bitcoin的原有RPC接口。为了便于区隔这两层的RPC调用,RpcClient引入