PHPアプリケーションのOmniTool開発キットはまた、サードパーティのAPIサービスとオフライン取引裸に基づいて軽量な展開シナリオをサポートしている独自のオムニ・レイヤー・ノードシナリオの使用をサポートするオムニレイヤ/ USDTデジタル資産をサポートするために、能力の急速な増加に適用されます。ダウンロード:オムニ/ USDT PHP開発パッケージ。
1、OmniTool開発キットの紹介
OmniTool開発キットは、主に以下の機能が含まれています。
- オムニレイヤ包括的なRPCパッケージノード
- 指定されたアドレスutxoのセットを取得するために、独自またはサードパーティのサービスを使用してサポートノード
- オフライン世代オムニ転送のサポートは、裸の取引トークン
- 裸のトランザクションをブロードキャストし、自身またはサードパーティのサービスを使用してサポートノード
OmniToolサポートは、ローカル・ノードの展開をOmnicored、また、他のサードパーティのサービスのサポートを追加するために、提供blockchain.info、btc.com他のオープンなAPIをサポートしても非常に簡単で、次のインターフェイスだけを実装するコードを参照する必要があります。
- UtxoCollectorInterface:utxoコレクター
- UtxoSelectorInterface:utxoフィルター
- BroadcasterInterface:裸のトランザクション放送
- ExplorerInterface:データクエリーインターフェイス
実行OmniToolパッケージPHPの7.1以降、以下に示すように、環境、現在のバージョン1.0.0、メインクラス/インタフェースとの関係:
メインコードファイルのリストが表示さOmniTool:http://sc.hubwiz.com/codebag/omni-php-lib/
2、rpcclientのクラス命令
rpcclientのクラスは、オムニレイヤRPCインタフェースプロトコルをカプセル化します。あなたがrpcclientのを作成すると、オブジェクトは、有効なID情報ノードRPCのURLが含まれて渡す必要があります。例えば、マシンは次のようにomnicoredノード・ソフトウェアがインストールされていると仮定する。
- rpcuser:ユーザー
- rpcpassword:123456
- rpcport:8332
あなたはrpcclientのをインスタンス化するには、次のコードを使用することができます。
use \OmniTool\RpcClient;
$client = new RpcClient(
'http://user:123456@localhost:8332' /*节点RPC接口的URL*/
);
オムニコアは、ビットコインのRPCインターフェイスの外部に存在するノード、データオムニ層を操作するための追加の拡張インターフェイスは、これらの拡張RPCインターフェイスは、使用omni_
ビットコインRPCインターフェイスの元のセグメントに接頭辞。RPCコールセグメントの二つの層を容易にするために、我々は、のrpcclient導入されるプロトコルサブモジュールの概念を、元のビットコインRPCインターフェースとオムニサブモジュールとオムニBTCサブモジュールを取り付けるために、RPCインターフェースを拡張しました。
例えば、アドレストークンUSDTバランスを得ることはオムニ層の必要omni_getbalanceのコールは、RPCコールインスタンス対応のrpcclient omni
サブモジュールgetBalance()
方法。次のコードは、アドレスフェッチ1EXoDusjGwvnjZUyKkxZ4UHEf77z6A5S4P
バランス:USDTの(31アセットID)を
$ret = $client->omni->getBalance(
'1EXoDusjGwvnjZUyKkxZ4UHEf77z6A5S4P', /*地址*/
31 /*资产ID:USDT*/
);
同様に、使用omni_send簡単USDTを実行するために呼び出すは、対応のrpcclientオムニサブモジュールインスタンスへのコール転送send()
方法。アドレスの次のコード3M9qvHKtgARhqcMtM5cRT9VaiDJ5PSfQGY
のアドレスには37FaKponF7zqoMLUjEiko25pDiuVH5YLEa
100.0 USDTトークンを転送します:
$ret = $client->omni->send(
'3M9qvHKtgARhqcMtM5cRT9VaiDJ5PSfQGY', /*代币转出地址*/
'37FaKponF7zqoMLUjEiko25pDiuVH5YLEa', /*代币转入地址*/
31, /*代币ID:USDT*/
"100.00" /*转移的代币数量*/
);
元bitoinのRPCインターフェイス層はBTCのrpcclientサブモジュールによってアクセスすることができます。例えば、使用してlistunspent指定されたアドレスutxoに、ローカル・ノードを取得するための呼び出しを:
$ret = $client->btc->listUnspent(
6, /*最小确认数*/
999999, /*最大确认数*/
['mgnucj8nYqdrPFh2JfZSB1NmUThUGnmsqe'] /*地址清单*/
);
開発パッケージdemo/rpc-demo.php
独自のオムニコア・ノードを構築することを計画している場合、サンプルコードを発行し、トークンオムニ機能層の転送中のrpcclientクラスフルプレゼンテーションを使用して、我々は、この例では、非常に参考になると信じていました。
3、財布ベースの指示
独自のオムニコア・ノードを構築したいが、あなたのPHPアプリケーションがオムニレイヤ/ USDTための支援を強化するため、サードパーティのAPIに基づいて、その後、最も簡単な方法は、オフライン・トランザクション・エントリ・クラスを使用することであると思いますしない場合は財布を。
財布・ベースの主な役割は、その基本的な手順を使用して、応じオムニトランザクショントークン転送裸または裸のビット転送トランザクションのクレジットを作成して放送することで、以下のとおりです。
- 使用
Wallet::cloud()
ウォレットAPIのサポートクラウドサービスの静的メソッドのインスタンスを作成します - 使い方
addKey()
財布は裸の取引に署名する必要があるため、秘密鍵をインスタンスに追加に必要な秘密鍵財布の方法を、例えば、プライベートアドレスを消します - 使用
omniSendTx()
裸オムニトークン転送トランザクションを生成し、又は使用する方法btcSendTx()
裸ビット転送トランザクションクレジット方法を - 使用
broadcast()
方法ブロードキャスト裸の取引を
3.1オムニトークン転送
注を参照してください以下、説明を達成するために財布のサンプルコードを使用してオムニトークン転送:
<?php
require('../vendor/autoload.php');
use OmniTool\Wallet; /*引入开发包*/
$wallet = Wallet::cloud(
'./demo.wallet', /*钱包文件地址,自动创建*/
'testnet' /*网络ID*/
);
$prvKey = '4aec8e45106....00d5c5af494a4e05b'; /*私钥:16进制字符串*/
$wallet->addKey($prvKey); /*将私钥加入钱包,只需加入一次*/
$addressList = $wallet->getAddressList(); /*返回钱包管理的所有地址,数组*/
$rawtx = $wallet->omniSendTx(
$addressList[0], /*发送方地址,私钥必须已经加入钱包*/
'mgYPLmNuZymK...e2XUNF6VFnT', /*接收方地址*/
2, /*转账OMNI代币ID,2:TOMN*/
'0.000001' /*转账OMNI代币数量*/
);
$ret = $wallet->broadcast($rawtx); /*广播OMNI裸交易*/
var_dump($ret);
注意:
- ウォレット財布アドレスのリストを生成するための秘密鍵の使用例、およびサードパーティのサービスからutxo情報を取得するためにこれらを使用しています。存在utxoているチェーン上のアドレスウォレットに対応する秘密鍵を必要とする、ウォレットオブジェクトが正常に裸のトランザクションを構築することができることです。
- 連鎖移動同じIDは、例えばp2pkh mainnetアドレスオブジェクトを作成するとき、ウォレットによって指定されたターゲットアドレスであるべきで、プレフィックスは1でなければなりません
オムニ取引3.2を指定した料金支払いアドレス
取引手数料を支払うことなく、オムニプロトコル層が、オムニ交換埋め込みビット通貨の取引では、まだ料金を支払う必要があります。デフォルトでは、omniSendTx()
この方法は、支払取引手数料ビットコイン送信者アドレスを使用しますが、転嫁機能は、統一された料金を使用するときに、あなたのPHPアプリケーションがマルチアカウントが必要な時に取引手数料を支払うために別のアドレスを指定するには、追加のパラメータを渡すことができます支払アドレスは、いくつかの管理が容易になります。
たとえば、次のコードでは、アドレスの使用mnRo8JyTHDd5NxRb3UvGbAhCBPQTQ4UZ8W
料オムニ取引:
$rawtx = $wallet->omniSendTx(
$addressList[0], /*发送方地址,私钥必须已经加入钱包*/
'mgYPLmNuZymK...e2XUNF6VFnT', /*接收方地址*/
2, /*转账OMNI代币ID,2:TOMN*/
'0.000001', /*转账OMNI代币数量*/
'mnRo8JyTHDd5...CBPQTQ4UZ8W' /*交易手续费支付地址*/
);
注意:
- あなたが料金支払いアドレスの適正なバランスを指定してもオムニトランザクションプロトコルは、送信者は、少なくとも1つの利用可能なUTXOを持っている必要があるため、送信者オムニトランザクションは、まだ、ビットコインの残高(546 SATOSHI)の少量を持っている必要があります。
- 料金の支払いアドレスも変更に対処し、過剰は、トークンビットのアドレスに返されます
転送3.3オムニトランザクション指定された数のビットコイン
トランザクション要求オムニUTXO送信者が利用できるので、オムニオムニトークン開催を循環し続けることができ、受信したアドレスをトークン容易にするためにを持っている必要がありますので、omniSendTx()
アドレスをパーティーになる方法は、546(トレースビットにデフォルトの通貨で受信しましたメソッドを呼び出すときSATOSHI)は、このデフォルト値を変更することができます。
例えば、受信機に、次のコード1000さとし。
$rawtx = $wallet->omniSendTx(
$addressList[0], /*发送方地址,私钥必须已经加入钱包*/
'mgYPLmNuZymK...e2XUNF6VFnT', /*接收方地址
2, /*转账OMNI代币ID,2:TOMN*/
'0.000001', /*转账OMNI代币数量*/
'mnRo8JyTHDd5...CBPQTQ4UZ8W', /*交易手续费支付地址*/
1000 /*转账比特币数量,单位:SATOSHI*/
);
転送ビットコイン3.4
OmniToolも世代をサポートし、ビットコインは裸のトランザクションをブロードキャスト転送します。
例えば、最初のアドレスから指定されたアドレスにさとし1000年に次のコードは、財布を受信します。
<?php
require('../vendor/autoload.php');
use OmniTool\Wallet;
$wallet = Wallet::cloud('./demo.wallet','testnet');
$addressList = $wallet->getAddressList();
$rawtx = $wallet->btcSendTx(
$addressList[0], /*发送方地址*/
'moneyqMan7u...8qVrc9ikLP', /*接收方地址*/
1000, /*转账比特币数量,单位:SATOSHI*/
500 /*手续费,单位:SATOSHI*/
);
echo 'btc rawtx => ' . $rawtx . PHP_EOL;
$ret = $wallet->broadcast($rawtx); /*广播裸交易*/
デフォルトでは、btcSendTx()
呼び出されたとき、送信者アドレスとして変更アドレスを使用して、他のアドレスも変更アドレスとして指定することができ、例えば、次のコードは、新しいアドレスが変更を受け作成します。
$changeAddress = $wallet->getNewAddress(); /*创建新地址*/
$rawtx = $wallet->btcSendTx(
$addressList[0], /*发送方地址*/
'moneyqMan7u...8qVrc9ikLP', /*接收方地址*/
1000, /*转账比特币数量,单位:SATOSHI*/
500, /*手续费,单位:SATOSHI*/
$changeAddress /*找零地址*/
);
4、UTXOコレクタ
インタフェースを使用しOmniTool UtxoCollectorInterface
大会収集機能のUTXOに。このインタフェースの実装は、複数のアドレスを指定することができ、指定されたアドレスがUTXO候補セットを取得サポートする必要があります。
インタフェース方式:
- ($アドレスリスト)を収集:抽出と候補セットを返すUTXO
パラメータは$addressList
UTXO、アレイのタイプを収集するためのアドレスのリストを宣言するために使用しました。
現在の実装クラス:
- CloudUtxoCollector:オープンblockchain.comに実装UtxoコレクタをベースAPI
- LocalUtxoCollector:omnicoredノードベースのRPC APIが実装Utxoコレクター
たとえば、次のコードでは、取得したアドレスCloudUtxoCollector使用mi8BvbK73nDQfaN3acpaFGYQKhfQ5ysKRn
UTXOのを:
use OmniTool\CloudUtxoCollector;
$collector = new CloudUtxoCollector(
'testnet' /*测试网*/
);
$candidateBag = $collector->collect(
['mi8BvbK73nDQ...KhfQ5ysKRn'] /*地址清单*/
);
5、UTXOフィルタ
使用OmniTool UtxoSelectorInterface
UTXOフィルタリング機能を合意します。利用可能な候補UTXO UTXOから目標値を選択して、新しいインスタンスUtxoBagを返すようにインターフェイスを実装する必要があります。
インタフェース方式:
- ($ターゲット、$候補)を選択します。消耗品UTXOを選択し、オブジェクトが返されますUtxoBag
パラメータは、$target
魏:最小量、単位に到達するための目標を宣言しました。
パラメータは、$candidates
オブジェクトは、一般的にUtxoCollectorInterfaceが集まる達成され、候補utxo設定されている()の呼び出しによって返されたオブジェクトをUtxoBag。
現在の実装クラス:
- DefaultUtxoSelector
以下のコード例は、選択の例を用いて少なくとも100000 UTXO UTXO候補のウェイDefaultUtxoSelectorがから削除されます。
use OmniTool\DefaultUtxoSelector;
$selector = new DefaultUtxoSelector();
$selectedBag = $selector->select(
100000, /*最低目标金额*/
$candidateBag /*候选UTXO集合*/
);
UTXOが選別いくつかの合計UTXO不可分を考慮すると、目標量を超える可能性があります。あなたは例UtxoBag使用することができgetTotal()
、総UTXOのコレクションを表示する方法を:
echo 'total wei in bag => ' . $selectedBag->getTotal() . PHP_EOL;
6、裸のトランザクション放送
使用OmniTool BroadcasterInterface
合意されたトランザクション裸ブロードキャスト機能に。トランザクションを露出する必要があり、このインタフェースの実装は、オムニネットワークに放送されます。
インタフェース方式:
- ($ rawtx)放送:裸の取引を放送
パラメータが$rawtx
放送される裸transaction文、16進文字列の種類を使用しました。
現在の実装クラス:
- CloudBroadcaster
- LocalBroadcaster
たとえば、次のコードでは、ネットワークへのトランザクションコードCloudBroadcaster裸オムニストリーム放送を使用しています。
use OmniTool\CloudBroadcaster;
$broadcaster = new CloudBroadcaster(
'testnet' /*测试网*/
);
$ret = $broadcaster->broadcast(
'01000000011da9283b4...59f58488ac00000000' /*裸交易*/
);
7、データクエリインターフェイス
使用OmniTool ExplorerInterface
オムニデータクエリ機能を合意します。
インタフェース方式:
- getBtcBalance($アドレス):ビットコインの残高照会、指定されたアドレス
- getOmniBalance($アドレス、$ propertyId):オムニクエリ指定されたアドレストークンバランス
現在の実装クラス:
- CloudBroadcaster
- LocalBroadcaster
たとえば、次のコードは、CloudExplorerの問い合わせアドレス使用1Jekm8ZswQmDhLFMp9cuYb1Kcq26riFp6m
ビットクレジットとUSDTトークンバランスバランス:
use OmniTool\CloudExplorer;
$explorer = new CloudExplorer('mainnet');
$address = '1Jekm8ZswQmDhLFMp9cuYb1Kcq26riFp6m';
$balance = $explorer->getBtcBalance($address);
echo 'btc balance => ' . PHP_EOL;
$balance = $explorer->getOmniBalance($address,31);
echo 'usdt balance => ' . $balance['balance']. PHP_EOL;
OmniToolダウンロード:http://sc.hubwiz.com/codebag/omni-php-lib/