數字貨幣使用區塊鏈開發技術由淺入深指南
阿新 • • 發佈:2019-01-03
區塊鏈愛好者(QQ:53016353)
RPC(Remote Procedure Call)即遠端過程呼叫協議,是一種通過網路從遠端計算機程式上請求服務,而不需要了解底層網路技術的協議。
關於如何安裝Ubuntu14.04作業系統和Node.js, 如有需要可以參考上一篇《數字貨幣區塊鏈開發由淺入深指南1》裡面的說明進行安裝
一、安裝Docker執行環境
1.使用apt-get命令安裝Docker容器支援軟體:
$sudo apt-get install docker.io
2.建立軟連線
$sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
3.檢視Docker版本
$docker –version
如看到提示資訊類似“Docker version 1.6.2, build 7c8fca2”則說明你已經在Ubuntu14.04上面快速安裝Docker成功了。
如需瞭解更多關於Docker安裝和執行的入門說明可以網路搜尋更多資料,也可以看看這個網頁: “Docker初試”
二、安裝和執行數字貨幣測試網路(bitcoin-testnet)
1.下載數字貨幣測試網路(bitcoin-testnet)的Docker映象
$sudo docker pull freewil/bitcoin-testnet-box
2.執行Docker映象
$sudo docker run -t -i -p 19001:19001 -p 19011:19011 freewil/bitcoin-testnet-box
注:上述命令中的19001和19011是配置給兩個節點提供RPC服務的埠。
3.進入Docker執行環境後,輸入下面的命令來啟動數字貨幣測試網路:
$ make start
啟動成功後,將在本機模擬執行兩個數字貨幣測試錢包節點,組成一個私有範圍的數字貨幣測試網路。
輸入下面的命令可以檢視測試網路節點狀態資訊:
$ make getinfo
顯示的提示資訊如下,中文為對其中若干關鍵資訊的說明:
bitcoin-cli -datadir=1 getinfo //第一個錢包節點的資訊
{
“version”: 120100,
“protocolversion”: 70012,
“walletversion”: 60000,
“balance”: 0.00000000, //第一個錢包節點的賬戶餘額,初始為0
“blocks”: 0, //已經產生的區塊數量,初始啟動為0,可以通過進一步的命令來模擬生成區塊資料
“timeoffset”: 0,
“connections”: 1,
“proxy”: “”,
“difficulty”: 4.656542373906925e-10,
“testnet”: false,
“keypoololdest”: 1467253951,
“keypoolsize”: 101,
“paytxfee”: 0.00000000,
“relayfee”: 0.00001000,
“errors”: “”
}
bitcoin-cli -datadir=2 getinfo //第二個錢包節點的資訊
{
“version”: 120100,
“protocolversion”: 70012,
“walletversion”: 60000,
“balance”: 0.00000000,
“blocks”: 0,
“timeoffset”: 0,
“connections”: 1,
“proxy”: “”,
“difficulty”: 4.656542373906925e-10,
“testnet”: false,
“keypoololdest”: 1467253951,
“keypoolsize”: 101,
“paytxfee”: 0.00000000,
“relayfee”: 0.00001000,
“errors”: “”
}
4.初始化和測試區塊鏈資料
在Docker執行窗口裡依次輸入下面的命令來初始化建立基本的區塊鏈資料,供進一步的程式示例來使用。
注意:在正式的數字貨幣網路環境下,平均是10分鐘左右才能產生一個新的區塊。但在這裡的測試網路(testnet)特殊設定的環境下,區塊是通過簡單的命令控制就可以即時和批量產生的,方便程式開發測試。
make generate
//說明:模擬新產生1個區塊記錄
make generate BLOCKS=200
//說明:模擬新產生200個區塊記錄
make getinfo
//說明:檢視最新的錢包狀態包括餘額資訊,這時可以留意看到第一個錢包節點的賬戶餘額變為了 5050.00000000 BTC,即通過模擬區塊挖礦產生的測試數字貨幣。
make sendfrom1 ADDRESS=mkiytxYA6kxUC8iTnzLPgMfCphnz91zRfZ AMOUNT=10
//說明:給指定測試錢包地址轉賬10個BTC。注意命令中的測試轉賬地址“mkiytxYA6kxUC8iTnzLPgMfCphnz91zRfZ”對應後續測試程式示例所需要使用的測試錢包地址。
make generate BLOCKS=10
//說明:模擬新產生10個區塊記錄,讓上面的轉賬交易得到足夠有效的確認
make getinfo
//說明:檢視最新的錢包狀態包括餘額資訊, 這時可以留意看到第一個錢包節點的賬戶餘額變為了 5539.99996160 BTC ,即已經交易轉賬支出了10個BTC加上少許的礦工費用。
三、安裝Node.js的RPC支援庫\
常用的Node.js的RPC支援庫有多個,我們這裡選用開源專案kapitalize。
在Ubuntu桌面新起一個終端命令列介面,輸入以下命令進行安裝:
$npm install kapitalize
關於kapitalize開源專案的更多說明可以參考:
四、執行示例程式
將下述示例程式碼複製儲存到測試環境下(儲存檔名為RpcTestnet.js),在命令列下輸入以下命令即可執行並看到執行結果:
node RpcTestnet.js
注意:每執行一次測試程式碼後,都需要到Docker執行環境的命令列下輸入”make generate BLOCKS=10″, 模擬產生新的區塊記錄,讓測試程式碼產生的交易記錄得到有效的確認。
示例程式RpcTestnet.js原始碼如下(原始碼檔案可以點選這裡下載):
/********************* 示例程式碼起始 **********************/
txt1
/********************* 示例程式碼結束 **********************/
在此程式的基礎上,經過對Bitcoin協議的進一步瞭解,我們可以呼叫RPC介面進一步開發出更復雜功能,如自行構建特定交易資料包(比如多重簽名資料)來滿足特定業務需求,後續我們PPkPub將深入介紹。