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的主要代碼文件清單如下:
<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(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(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ā)的最佳選擇撮慨。