Omni/USDT PHP開發(fā)包簡(jiǎn)介

OmniTool開發(fā)包適用于為PHP應(yīng)用快速增加對(duì)Omni Layer/USDT數(shù)字資產(chǎn)的支持能力,即支持使用自有Omni Layer節(jié)點(diǎn)的應(yīng)用場(chǎng)景厂抖,也支持基于第三方API服務(wù)和離線裸交易的輕量級(jí)部署場(chǎng)景皇耗。下載地址:omni/usdt php開發(fā)包 法竞。

1退疫、OmniTool開發(fā)包簡(jiǎn)介

OmniTool開發(fā)包主要包含以下特性:

  • 完善的Omni Layer節(jié)點(diǎn)RPC封裝
  • 支持利用自有節(jié)點(diǎn)或第三方服務(wù)獲取指定地址的utxo集合
  • 支持離線生成omni代幣轉(zhuǎn)賬裸交易
  • 支持利用自有節(jié)點(diǎn)或第三方服務(wù)廣播裸交易

OmniTool支持本地部署的Omnicored節(jié)點(diǎn)榜揖,也支持blockchain.info勾哩、btc.com等提供的開放API,要增加對(duì)其他第三方服務(wù)的支持也非常簡(jiǎn)單举哟,只需要參考代碼實(shí)現(xiàn)如下接口:

  • UtxoCollectorInterface:utxo收集器
  • UtxoSelectorInterface:utxo篩選器
  • BroadcasterInterface:裸交易廣播器
  • ExplorerInterface:數(shù)據(jù)查詢接口

OmniTool軟件包運(yùn)行在Php 7.1+環(huán)境下思劳,當(dāng)前版本1.0.0,主要類/接口及關(guān)系如下圖所示:

omnitool arch

OmniTool的主要代碼文件清單如下:

<table class="table table-striped">
<thead>
<tr><th>代碼文件</th><th>說(shuō)明</th></tr>
</thead>
<tbody>
<tr><td>omni.php/src/RpcClient.php</td><td>Omni Layer的RPC協(xié)議封裝類</td></tr>
<tr><td>omni.php/src/RpcModule.php</td><td>Omni Layer的RPC協(xié)議分模塊訪問(wèn)語(yǔ)法糖</td></tr>
<tr><td>omni.php/src/protocol-spec.json</td><td>Omni Layer協(xié)議描述元信息</td></tr>
<tr><td>omni.php/src/SerializeBuffer.php</td><td>Omni Layer協(xié)議序列化緩沖區(qū)</td></tr>
<tr><td>omni.php/src/PayloadFactory.php</td><td>Omni Layer協(xié)議載荷工廠類</td></tr>
<tr><td>omni.php/src/Utxo.php</td><td>未消費(fèi)交易輸出類</td></tr>
<tr><td>omni.php/src/UtxoBag.php</td><td>Utxo集合類</td></tr>
<tr><td>omni.php/src/UtxoCollectorInterface.php</td><td>Utxo收集器接口</td></tr>
<tr><td>omni.php/src/LocalUtxoCollector.php</td><td>基于OmniCore節(jié)點(diǎn)的Utxo收集器實(shí)現(xiàn)</td></tr>
<tr><td>omni.php/src/CloudUtxoCollector.php</td><td>基于第三方服務(wù)的Utxo收集器實(shí)現(xiàn)</td></tr>
<tr><td>omni.php/src/UtxoSelectorInterface.php</td><td>Utxo篩選器接口</td></tr>
<tr><td>omni.php/src/DefaultUtxoSelector.php</td><td>默認(rèn)的Utxo篩選器實(shí)現(xiàn)</td></tr>
<tr><td>omni.php/src/BroadcasterInterface.php</td><td>裸交易廣播器接口</td></tr>
<tr><td>omni.php/src/LocalBroadcaster.php</td><td>基于OmniCore節(jié)點(diǎn)的裸交易廣播器實(shí)現(xiàn)</td></tr>
<tr><td>omni.php/src/CloudBroadcaster.php</td><td>基于第三方服務(wù)的裸交易廣播器實(shí)現(xiàn)</td></tr>
<tr><td>omni.php/src/ExplorerInterface.php</td><td>數(shù)據(jù)查詢接口</td></tr>
<tr><td>omni.php/src/CloudExplorer.php</td><td>基于第三方服務(wù)的數(shù)據(jù)查詢接口實(shí)現(xiàn)</td></tr>
<tr><td>omni.php/src/LocalExplorer.php</td><td>基于OmniCore節(jié)點(diǎn)的數(shù)據(jù)查詢接口實(shí)現(xiàn)</td></tr>
<tr><td>omni.php/src/Utils.php</td><td>常用輔助函數(shù)</td></tr>
<tr><td>omni.php/src/Wallet.php</td><td>離線錢包類</td></tr>
<tr><td>demo/rpc-demo.php</td><td>RpcClient使用示例妨猩,完整實(shí)現(xiàn)OMNI代幣的發(fā)行與轉(zhuǎn)賬</td></tr>
<tr><td>demo/omni-tx-cloud.php</td><td>創(chuàng)建并廣播Omni代幣轉(zhuǎn)賬裸交易潜叛,使用第三方云服務(wù)API</td></tr>
<tr><td>demo/omni-tx-local.php</td><td>創(chuàng)建并廣播Omni代幣轉(zhuǎn)賬裸交易,使用自有節(jié)點(diǎn)</td></tr>
<tr><td>demo/btc-tx-cloud.php</td><td>創(chuàng)建并廣播比特幣轉(zhuǎn)賬裸交易壶硅,使用第三方云服務(wù)API</td></tr>
<tr><td>demo/btc-tx-local.php</td><td>創(chuàng)建并廣播比特幣轉(zhuǎn)賬裸交易威兜,使用自有節(jié)點(diǎn)</td></tr>
<tr><td>demo/explorer-cloud.php</td><td>查詢指定的地址比特幣余額/Omni代幣余額,使用第三方云服務(wù)API</td></tr>
<tr><td>demo/explorer-local.php</td><td>查詢指定地址的比特幣余額/Omni代幣余額庐椒,使用自有節(jié)點(diǎn)</td></tr>
<tr><td>demo/wallet-init.php</td><td>本地錢包初始化</td></tr>
<tr><td>demo/wallet-demo.php</td><td>錢包載入牡属、裸交易構(gòu)造和廣播</td></tr>
<tr><td>vendor</td><td>第三方依賴包目錄</td></tr>
<tr><td>composer.json</td><td>composer配置文件</td></tr>
</tbody>
</table>

2、RpcClient類使用說(shuō)明

RpcClient類封裝了Omni Layer的RPC接口協(xié)議扼睬。創(chuàng)建RpcClient對(duì)象時(shí)逮栅,需要傳入
包含有效身份信息的節(jié)點(diǎn)RPC URL。例如窗宇,假設(shè)安裝在本機(jī)的omnicored節(jié)點(diǎn)軟件配置如下:

  • rpcuser:user
  • rpcpassword:123456
  • rpcport:8332

那么可以使用如下的代碼來(lái)實(shí)例化RpcClient:

use \OmniTool\RpcClient;

$client = new RpcClient(
            'http://user:123456@localhost:8332'   /*節(jié)點(diǎn)RPC接口的URL*/
          );

Omni Core節(jié)點(diǎn)在Bitcoin原有的RPC接口之外措伐,擴(kuò)充了額外的接口用來(lái)操作Omni層的數(shù)據(jù),這些擴(kuò)展的RPC接口采用omni_前綴以區(qū)隔于Bitcoin的原有RPC接口军俊。為了便于區(qū)隔這兩層的RPC調(diào)用侥加,RpcClient引入了協(xié)議子模塊的概念,將Bitcoin的原始RPC接口和Omni的擴(kuò)展RPC接口分別掛接到btc子模塊和omni子模塊粪躬。

例如担败,獲取某個(gè)地址的USDT代幣余額需要使用Omni層的omni_getbalance調(diào)用昔穴,這個(gè)RPC調(diào)用對(duì)應(yīng)于RpcClient實(shí)例的omni子模塊的getBalance()方法。下面的代碼獲取地址1EXoDusjGwvnjZUyKkxZ4UHEf77z6A5S4P的USDT(資產(chǎn)ID:31)余額:

$ret = $client->omni->getBalance(
          '1EXoDusjGwvnjZUyKkxZ4UHEf77z6A5S4P',   /*地址*/
          31                                      /*資產(chǎn)ID:USDT*/
       );

類似的提前,可以使用omni_send調(diào)用來(lái)執(zhí)行簡(jiǎn)單的USDT轉(zhuǎn)賬吗货,這個(gè)調(diào)用對(duì)應(yīng)于RpcClient實(shí)例的omni子模塊的send()方法。下面的代碼從地址3M9qvHKtgARhqcMtM5cRT9VaiDJ5PSfQGY向地址37FaKponF7zqoMLUjEiko25pDiuVH5YLEa轉(zhuǎn)入100.0個(gè)USDT代幣:

$ret = $client->omni->send(
          '3M9qvHKtgARhqcMtM5cRT9VaiDJ5PSfQGY',    /*代幣轉(zhuǎn)出地址*/
          '37FaKponF7zqoMLUjEiko25pDiuVH5YLEa',    /*代幣轉(zhuǎn)入地址*/
          31,                                      /*代幣ID:USDT*/
          "100.00"                                 /*轉(zhuǎn)移的代幣數(shù)量*/
       );

原有的bitoin層的RPC接口則可以通過(guò)RpcClient的btc子模塊來(lái)訪問(wèn)狈网。例如宙搬,使用listunspent調(diào)用來(lái)獲取本地節(jié)點(diǎn)中指定地址的utxo:

$ret = $client->btc->listUnspent(
          6,                                        /*最小確認(rèn)數(shù)*/
          999999,                                   /*最大確認(rèn)數(shù)*/
          ['mgnucj8nYqdrPFh2JfZSB1NmUThUGnmsqe']    /*地址清單*/  
       );

開發(fā)包中的demo/rpc-demo.php示例代碼使用RpcClient類完整演示了在Omni層的代幣發(fā)行與轉(zhuǎn)賬功能,如果你計(jì)劃搭建自己的Omni Core節(jié)點(diǎn)拓哺,相信這個(gè)示例會(huì)有很大幫助勇垛。

3、Wallet類使用說(shuō)明

如果不愿意搭建自己的Omni Core節(jié)點(diǎn)士鸥,而是希望基于第三方API為自己的PHP應(yīng)用增加對(duì)Omni Layer/USDT的支持闲孤,那么最簡(jiǎn)單的方法是使用離線交易的入口類Wallet

Wallet類的主要作用是根據(jù)創(chuàng)建并廣播Omni代幣轉(zhuǎn)賬裸交易或比特幣轉(zhuǎn)賬裸交易烤礁,它的基本使用步驟如下:

  • 使用Wallet::cloud()靜態(tài)方法創(chuàng)建一個(gè)支持云端API服務(wù)的Wallet實(shí)例
  • 使用addKey()方法將必要的私鑰加入該Wallet實(shí)例崭放,例如轉(zhuǎn)出地址的私鑰,因?yàn)閃allet需要利用私鑰對(duì)裸交易進(jìn)行簽名
  • 使用omniSendTx()方法生成Omni代幣轉(zhuǎn)賬裸交易鸽凶,或者使用btcSendTx()方法比特幣轉(zhuǎn)賬裸交易
  • 使用broadcast()方法廣播裸交易

3.1 Omni代幣轉(zhuǎn)賬

使用Wallet實(shí)現(xiàn)的Omni代幣轉(zhuǎn)賬示例代碼如下币砂,說(shuō)明見注釋:

<?php
require('../vendor/autoload.php');

use OmniTool\Wallet;                              /*引入開發(fā)包*/

$wallet = Wallet::cloud(
            './demo.wallet',                      /*錢包文件地址,自動(dòng)創(chuàng)建*/
            'testnet'                             /*網(wǎng)絡(luò)ID*/
          );
$prvKey = '4aec8e45106....00d5c5af494a4e05b';     /*私鑰:16進(jìn)制字符串*/            
$wallet->addKey($prvKey);                         /*將私鑰加入錢包玻侥,只需加入一次*/

$addressList = $wallet->getAddressList();         /*返回錢包管理的所有地址决摧,數(shù)組*/

$rawtx = $wallet->omniSendTx(
            $addressList[0],                      /*發(fā)送方地址,私鑰必須已經(jīng)加入錢包*/
            'mgYPLmNuZymK...e2XUNF6VFnT',         /*接收方地址*/
            2,                                    /*轉(zhuǎn)賬OMNI代幣ID凑兰,2:TOMN*/
            '0.000001'                            /*轉(zhuǎn)賬OMNI代幣數(shù)量*/
         );

$ret = $wallet->broadcast($rawtx);                /*廣播OMNI裸交易*/
var_dump($ret);

注意:

  • Wallet實(shí)例利用錢包中的私鑰生成地址列表掌桩,并利用這些地址從第三方服務(wù)獲取utxo信息。因此需要錢包中的私鑰對(duì)應(yīng)地址在鏈上有utxo存在姑食,Wallet對(duì)象才能夠成功構(gòu)造裸交易波岛。
  • 轉(zhuǎn)賬目標(biāo)地址應(yīng)當(dāng)與創(chuàng)建Wallet對(duì)象時(shí)指定的鏈ID一致,例如mainnet的p2pkh地址音半,前綴應(yīng)當(dāng)為1

3.2 指定Omni交易的手續(xù)費(fèi)支付地址

在Omni協(xié)議層不需要支付交易手續(xù)費(fèi)则拷,但是Omni交易所嵌入的比特幣交易依然需要支付手續(xù)費(fèi)。默認(rèn)情況下omniSendTx()方法使用發(fā)送方地址支付比特幣交易手續(xù)費(fèi)曹鸠,但可以傳入額外的參數(shù)來(lái)指定其他地址支付交易手續(xù)費(fèi)煌茬,當(dāng)你的PHP應(yīng)用需要實(shí)現(xiàn)多賬戶歸集功能時(shí),使用統(tǒng)一的手續(xù)費(fèi)支付地址會(huì)更容易管理一些彻桃。

例如坛善,下面的代碼使用地址mnRo8JyTHDd5NxRb3UvGbAhCBPQTQ4UZ8W支付omni交易的手續(xù)費(fèi):

$rawtx = $wallet->omniSendTx(
            $addressList[0],                      /*發(fā)送方地址,私鑰必須已經(jīng)加入錢包*/
            'mgYPLmNuZymK...e2XUNF6VFnT',         /*接收方地址*/
            2,                                    /*轉(zhuǎn)賬OMNI代幣ID,2:TOMN*/
            '0.000001',                           /*轉(zhuǎn)賬OMNI代幣數(shù)量*/
            'mnRo8JyTHDd5...CBPQTQ4UZ8W'          /*交易手續(xù)費(fèi)支付地址*/
         );

注意:

  • 即使指定了余額充足的手續(xù)費(fèi)支付地址眠屎,Omni交易的發(fā)送方依然必須有微量的比特幣余額(546 SATOSHI)剔交,因?yàn)镺mni協(xié)議需要交易發(fā)送方至少有一個(gè)可用UTXO。
  • 手續(xù)費(fèi)支付地址同時(shí)也是找零地址改衩,多余的比特幣將返回至該地址

3.3 指定Omni交易的比特幣轉(zhuǎn)賬數(shù)量

由于Omni交易要求發(fā)送方必須有可用的UTXO岖常,因此為了便于接收Omni代幣的地址可以繼續(xù)流通所持有的Omni代幣,omniSendTx()方法在默認(rèn)情況下將向接收方地址轉(zhuǎn)入微量的比特幣(546 SATOSHI)燎字,可以在調(diào)用該方法時(shí)修改這個(gè)默認(rèn)數(shù)值。

例如阿宅,下面的代碼轉(zhuǎn)入接收方1000個(gè)SATOSHI:

$rawtx = $wallet->omniSendTx(
            $addressList[0],                      /*發(fā)送方地址候衍,私鑰必須已經(jīng)加入錢包*/
            'mgYPLmNuZymK...e2XUNF6VFnT',         /*接收方地址
            2,                                    /*轉(zhuǎn)賬OMNI代幣ID,2:TOMN*/
            '0.000001',                           /*轉(zhuǎn)賬OMNI代幣數(shù)量*/
            'mnRo8JyTHDd5...CBPQTQ4UZ8W',         /*交易手續(xù)費(fèi)支付地址*/
            1000                                  /*轉(zhuǎn)賬比特幣數(shù)量洒放,單位:SATOSHI*/
         );

3.4 比特幣轉(zhuǎn)賬

OmniTool也支持比特幣轉(zhuǎn)賬裸交易的生成與廣播蛉鹿。

例如,下面的代碼從錢包的第一個(gè)地址向指定接受地址轉(zhuǎn)入1000個(gè)SATOSHI:

<?php
require('../vendor/autoload.php');

use OmniTool\Wallet;

$wallet = Wallet::cloud('./demo.wallet','testnet');
$addressList = $wallet->getAddressList();

$rawtx = $wallet->btcSendTx(
                    $addressList[0],                /*發(fā)送方地址*/
                    'moneyqMan7u...8qVrc9ikLP',     /*接收方地址*/
                    1000,                           /*轉(zhuǎn)賬比特幣數(shù)量往湿,單位:SATOSHI*/
                    500                             /*手續(xù)費(fèi)妖异,單位:SATOSHI*/
                  );                       
echo 'btc rawtx => ' . $rawtx . PHP_EOL;

$ret = $wallet->broadcast($rawtx);                  /*廣播裸交易*/

默認(rèn)情況下,btcSendTx()使用發(fā)送方地址作為找零地址领追,也可以在調(diào)用時(shí)指定其他地址作為找零地址他膳,例如,下面的代碼創(chuàng)建一個(gè)新地址接收找零:

$changeAddress = $wallet->getNewAddress();          /*創(chuàng)建新地址*/
$rawtx = $wallet->btcSendTx(
                    $addressList[0],                /*發(fā)送方地址*/
                    'moneyqMan7u...8qVrc9ikLP',     /*接收方地址*/
                    1000,                           /*轉(zhuǎn)賬比特幣數(shù)量绒窑,單位:SATOSHI*/
                    500,                            /*手續(xù)費(fèi)棕孙,單位:SATOSHI*/
                    $changeAddress                  /*找零地址*/
                  );                       

4、UTXO收集器

OmniTool使用接口UtxoCollectorInterface來(lái)約定UTXO的收集功能些膨。該接口的實(shí)現(xiàn)需要支持獲取指定地址的候選UTXO集合蟀俊,可指定多個(gè)地址。

接口方法:

  • collect($addressList):提取并返回候選UTXO集合

參數(shù)$addressList用來(lái)聲明要收集UTXO的地址清單订雾,類型為數(shù)組肢预。

當(dāng)前實(shí)現(xiàn)類:

  • CloudUtxoCollector:基于blockchain.com的開放API實(shí)現(xiàn)的Utxo收集器
  • LocalUtxoCollector:基于omnicored節(jié)點(diǎn)RPC API實(shí)現(xiàn)的Utxo收集器

例如,下面的代碼使用CloudUtxoCollector獲取地址mi8BvbK73nDQfaN3acpaFGYQKhfQ5ysKRn的UTXO:

use OmniTool\CloudUtxoCollector;

$collector = new CloudUtxoCollector(
                    'testnet'                       /*測(cè)試網(wǎng)*/
                 );
$candidateBag = $collector->collect(
                    ['mi8BvbK73nDQ...KhfQ5ysKRn']   /*地址清單*/
                );

5洼哎、UTXO篩選器

OmniTool使用UtxoSelectorInterface來(lái)約定UTXO篩選功能烫映。該接口的實(shí)現(xiàn)需要根據(jù)目標(biāo)金額從候選UTXO中選擇可用UTXO,并返回新的UtxoBag實(shí)例噩峦。

接口方法:

  • select(target,candidates):選擇可消費(fèi)UTXO窑邦,返回UtxoBag對(duì)象

參數(shù)$target聲明要達(dá)成的最低金額目標(biāo),單位:wei壕探。

參數(shù)$candidates是候選的utxo集合冈钦,通常是UtxoCollectorInterface實(shí)現(xiàn)對(duì)象的collect()調(diào)用返回的UtxoBag對(duì)象。

當(dāng)前實(shí)現(xiàn)類:

  • DefaultUtxoSelector

例如下面的代碼使用DefaultUtxoSelector實(shí)例從候選UTXO中刪選出至少100000 wei 的UTXO:

use OmniTool\DefaultUtxoSelector;

$selector = new DefaultUtxoSelector();
$selectedBag = $selector->select(
                  100000,                         /*最低目標(biāo)金額*/
                  $candidateBag                   /*候選UTXO集合*/
               );

考慮到UTXO的不可分割性李请,篩選出的若干UTXO的總和瞧筛,有可能超過(guò)目標(biāo)金額厉熟。可以使用UtxoBag實(shí)例的getTotal()方法查看集合中的UTXO總額:

echo 'total wei in bag => ' . $selectedBag->getTotal() . PHP_EOL;

6较幌、裸交易廣播器

OmniTool使用BroadcasterInterface來(lái)約定裸交易廣播的功能揍瑟。該接口的實(shí)現(xiàn)應(yīng)當(dāng)將裸交易廣播到Omni網(wǎng)絡(luò)中。

接口方法:

  • broadcast($rawtx):廣播裸交易

參數(shù)$rawtx用來(lái)聲明要廣播的裸交易乍炉,類型為16進(jìn)制字符串绢片。

當(dāng)前實(shí)現(xiàn)類:

  • CloudBroadcaster
  • LocalBroadcaster

例如,下面的代碼使用CloudBroadcaster將裸交易碼流廣播到Omni網(wǎng)絡(luò)中:

use OmniTool\CloudBroadcaster;

$broadcaster = new CloudBroadcaster(
                      'testnet'                     /*測(cè)試網(wǎng)*/
                   );
$ret = $broadcaster->broadcast(
        '01000000011da9283b4...59f58488ac00000000'  /*裸交易*/
       );

7岛琼、數(shù)據(jù)查詢接口

OmniTool使用ExplorerInterface來(lái)約定Omni數(shù)據(jù)查詢功能底循。

接口方法:

  • getBtcBalance($address):查詢指定地址的比特幣余額
  • getOmniBalance(address,propertyId):查詢指定地址的Omni代幣余額

當(dāng)前實(shí)現(xiàn)類:

  • 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;

如果你想學(xué)習(xí)區(qū)塊鏈并在Blockchain Technologies建立職業(yè)生涯槐瑞,那么請(qǐng)查看我們分享的一些以太坊熙涤、比特幣、EOS困檩、Fabric祠挫、Tendermint等區(qū)塊鏈相關(guān)的交互式在線編程實(shí)戰(zhàn)教程:

  • java以太坊開發(fā)教程,主要是針對(duì)java和android程序員進(jìn)行區(qū)塊鏈以太坊開發(fā)的web3j詳解悼沿。
  • python以太坊等舔,主要是針對(duì)python工程師使用web3.py進(jìn)行區(qū)塊鏈以太坊開發(fā)的詳解。
  • php以太坊糟趾,主要是介紹使用php進(jìn)行智能合約開發(fā)交互软瞎,進(jìn)行賬號(hào)創(chuàng)建、交易拉讯、轉(zhuǎn)賬涤浇、代幣開發(fā)以及過(guò)濾器和交易等內(nèi)容。
  • 以太坊入門教程魔慷,主要介紹智能合約與dapp應(yīng)用開發(fā)只锭,適合入門。
  • 以太坊開發(fā)進(jìn)階教程院尔,主要是介紹使用node.js蜻展、mongodb、區(qū)塊鏈邀摆、ipfs實(shí)現(xiàn)去中心化電商DApp實(shí)戰(zhàn)纵顾,適合進(jìn)階。
  • ERC721以太坊通證實(shí)戰(zhàn)栋盹,課程以一個(gè)數(shù)字藝術(shù)品創(chuàng)作與分享DApp的實(shí)戰(zhàn)開發(fā)為主線施逾,深入講解以太坊非同質(zhì)化通證的概念、標(biāo)準(zhǔn)與開發(fā)方案。內(nèi)容包含ERC-721標(biāo)準(zhǔn)的自主實(shí)現(xiàn)汉额,講解OpenZeppelin合約代碼庫(kù)二次開發(fā)曹仗,實(shí)戰(zhàn)項(xiàng)目采用Truffle,IPFS蠕搜,實(shí)現(xiàn)了通證以及去中心化的通證交易所怎茫。
  • C#以太坊,主要講解如何使用C#開發(fā)基于.Net的以太坊應(yīng)用妓灌,包括賬戶管理轨蛤、狀態(tài)與交易、智能合約開發(fā)與交互虫埂、過(guò)濾器和交易等祥山。
  • java比特幣開發(fā)教程,本課程面向初學(xué)者告丢,內(nèi)容即涵蓋比特幣的核心概念枪蘑,例如區(qū)塊鏈存儲(chǔ)损谦、去中心化共識(shí)機(jī)制岖免、密鑰與腳本、交易與UTXO等照捡,同時(shí)也詳細(xì)講解如何在Java代碼中集成比特幣支持功能颅湘,例如創(chuàng)建地址、管理錢包栗精、構(gòu)造裸交易等闯参,是Java工程師不可多得的比特幣開發(fā)學(xué)習(xí)課程。
  • php比特幣開發(fā)教程悲立,本課程面向初學(xué)者鹿寨,內(nèi)容即涵蓋比特幣的核心概念,例如區(qū)塊鏈存儲(chǔ)薪夕、去中心化共識(shí)機(jī)制脚草、密鑰與腳本、交易與UTXO等原献,同時(shí)也詳細(xì)講解如何在Php代碼中集成比特幣支持功能馏慨,例如創(chuàng)建地址、管理錢包姑隅、構(gòu)造裸交易等写隶,是Php工程師不可多得的比特幣開發(fā)學(xué)習(xí)課程。
  • c#比特幣開發(fā)教程讲仰,本課程面向初學(xué)者慕趴,內(nèi)容即涵蓋比特幣的核心概念,例如區(qū)塊鏈存儲(chǔ)、去中心化共識(shí)機(jī)制秩贰、密鑰與腳本霹俺、交易與UTXO等,同時(shí)也詳細(xì)講解如何在C#代碼中集成比特幣支持功能毒费,例如創(chuàng)建地址丙唧、管理錢包、構(gòu)造裸交易等觅玻,是C#工程師不可多得的比特幣開發(fā)學(xué)習(xí)課程想际。
  • EOS入門教程,本課程幫助你快速入門EOS區(qū)塊鏈去中心化應(yīng)用的開發(fā)溪厘,內(nèi)容涵蓋EOS工具鏈胡本、賬戶與錢包、發(fā)行代幣畸悬、智能合約開發(fā)與部署侧甫、使用代碼與智能合約交互等核心知識(shí)點(diǎn),最后綜合運(yùn)用各知識(shí)點(diǎn)完成一個(gè)便簽DApp的開發(fā)蹋宦。
  • 深入淺出玩轉(zhuǎn)EOS錢包開發(fā)披粟,本課程以手機(jī)EOS錢包的完整開發(fā)過(guò)程為主線,深入學(xué)習(xí)EOS區(qū)塊鏈應(yīng)用開發(fā)冷冗,課程內(nèi)容即涵蓋賬戶守屉、計(jì)算資源、智能合約蒿辙、動(dòng)作與交易等EOS區(qū)塊鏈的核心概念拇泛,同時(shí)也講解如何使用eosjs和eosjs-ecc開發(fā)包訪問(wèn)EOS區(qū)塊鏈,以及如何在React前端應(yīng)用中集成對(duì)EOS區(qū)塊鏈的支持思灌。課程內(nèi)容深入淺出俺叭,非常適合前端工程師深入學(xué)習(xí)EOS區(qū)塊鏈應(yīng)用開發(fā)。
  • Hyperledger Fabric 區(qū)塊鏈開發(fā)詳解泰偿,本課程面向初學(xué)者熄守,內(nèi)容即包含Hyperledger Fabric的身份證書與MSP服務(wù)、權(quán)限策略甜奄、信道配置與啟動(dòng)柠横、鏈碼通信接口等核心概念,也包含F(xiàn)abric網(wǎng)絡(luò)設(shè)計(jì)课兄、nodejs鏈碼與應(yīng)用開發(fā)的操作實(shí)踐牍氛,是Nodejs工程師學(xué)習(xí)Fabric區(qū)塊鏈開發(fā)的最佳選擇。
  • Hyperledger Fabric java 區(qū)塊鏈開發(fā)詳解烟阐,課程面向初學(xué)者搬俊,內(nèi)容即包含Hyperledger Fabric的身份證書與MSP服務(wù)紊扬、權(quán)限策略、信道配置與啟動(dòng)唉擂、鏈碼通信接口等核心概念餐屎,也包含F(xiàn)abric網(wǎng)絡(luò)設(shè)計(jì)、java鏈碼與應(yīng)用開發(fā)的操作實(shí)踐玩祟,是java工程師學(xué)習(xí)Fabric區(qū)塊鏈開發(fā)的最佳選擇腹缩。
  • tendermint區(qū)塊鏈開發(fā)詳解,本課程適合希望使用tendermint進(jìn)行區(qū)塊鏈開發(fā)的工程師空扎,課程內(nèi)容即包括tendermint應(yīng)用開發(fā)模型中的核心概念藏鹊,例如ABCI接口、默克爾樹转锈、多版本狀態(tài)庫(kù)等盘寡,也包括代幣發(fā)行等豐富的實(shí)操代碼,是go語(yǔ)言工程師快速入門區(qū)塊鏈開發(fā)的最佳選擇撮慨。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末竿痰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子砌溺,更是在濱河造成了極大的恐慌影涉,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抚吠,死亡現(xiàn)場(chǎng)離奇詭異常潮,居然都是意外死亡弟胀,警方通過(guò)查閱死者的電腦和手機(jī)楷力,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)孵户,“玉大人萧朝,你說(shuō)我怎么就攤上這事∠目蓿” “怎么了检柬?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)竖配。 經(jīng)常有香客問(wèn)我何址,道長(zhǎng),這世上最難降的妖魔是什么进胯? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任用爪,我火速辦了婚禮,結(jié)果婚禮上胁镐,老公的妹妹穿的比我還像新娘偎血。我一直安慰自己诸衔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布颇玷。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪持隧。 梳的紋絲不亂的頭發(fā)上倔叼,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音空郊,去河邊找鬼诊霹。 笑死,一個(gè)胖子當(dāng)著我的面吹牛渣淳,可吹牛的內(nèi)容都是我干的脾还。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼入愧,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鄙漏!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起棺蛛,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤怔蚌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后旁赊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體桦踊,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年终畅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了籍胯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡离福,死狀恐怖杖狼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情妖爷,我是刑警寧澤蝶涩,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站絮识,受9級(jí)特大地震影響绿聘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜次舌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一熄攘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧垃它,春花似錦鲜屏、人聲如沸烹看。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)惯殊。三九已至,卻和暖如春也殖,著一層夾襖步出監(jiān)牢的瞬間土思,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工忆嗜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留己儒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓捆毫,卻偏偏與公主長(zhǎng)得像闪湾,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子绩卤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1 貨幣的演變——從貝殼到比特幣 當(dāng)社會(huì)分工產(chǎn)生之后途样,人類就產(chǎn)生了商品交換的需求。在貨幣被發(fā)明之前濒憋,人類是以以物換...
    longlee閱讀 7,607評(píng)論 1 23
  • 創(chuàng)建交易是大多數(shù)比特幣應(yīng)用程序所做的事情何暇。本節(jié)介紹如何使用比特幣核心的RPC接口創(chuàng)建具有各種屬性的交易。 你的應(yīng)用...
    編程狂魔閱讀 2,858評(píng)論 0 1
  • 看到JVM就不得不說(shuō)垃圾回收凛驮,說(shuō)到垃圾回收(Garbage Collection裆站,GC),顧名思義黔夭,垃圾回收就是釋...
    激情的狼王閱讀 1,603評(píng)論 0 2
  • 人生沒有捷徑宏胯,成長(zhǎng)卻能加速。我們是一群在加速奔跑路上的伙伴纠修。 11月10號(hào)到11號(hào)胳嘲,很有幸在這個(gè)光棍節(jié)的日子里厂僧,我...
    婉章閱讀 291評(píng)論 0 0