1. 程式人生 > >如何將量子鏈引入業務系統,使用JSON-RPC與錢包通訊(內附區塊鏈學習論,個人理解,歡迎交流)

如何將量子鏈引入業務系統,使用JSON-RPC與錢包通訊(內附區塊鏈學習論,個人理解,歡迎交流)

提示

Tip1.本文適合想要深入瞭解區塊鏈技術的人員閱讀 Tip2.本文適合需要在業務系統中引入比特幣/量子鏈的技術人員閱讀

引言

入門區塊鏈技術之前,如果對於去中心化有一定了解,這無疑將幫助你更好的理解區塊鏈的底層技術;區塊鏈的底層技術由密碼學共識演算法點對點網路組成;在學習每個部分之前,如果你能夠對於為什麼需要這樣的技術有一個大概的認識,必可讓你事半功倍。

在這兒給大家推薦兩本書:《精通比特幣》《比特幣白皮書:一種點對點的電子現金系統》

緣何量子鏈

相比量子鏈,對於身處幣圈外的人們,更為熟知的是比特幣以太坊;這是當然,作為區塊鏈1.0,2.0的代表,比特幣和以太坊無疑受到了人們更多的關注。 量子鏈基於UTXO

,相比比特幣,將量子鏈好好挖掘一番的成本自然要比去同步9年資料的比特幣的成本要低的多。

錢包的安裝與使用

安裝篇

因為我們的錢包需要用於開發,所以下載安裝輕錢包是無濟於事的,下面是全節點錢包下載地址: https://github.com/qtumproject/qtum/releases 大家可以根據自己的系統自行選擇下載二進位制檔案進行安裝;當時我在搭建本地環境的時候(Windows),32位,64位的4個版本全部進行了試安裝,全部無法同步區塊資料,後來換了老版本,這才可以;當時的版本號不記得了…

在測試網路執行錢包節點

在安裝好之後,建議大家啟動測試網路來執行錢包,畢竟正式網路的交易,是需要實實在在的QTUM的;

啟動方式一:通過圖形化介面啟動,testnet即為測試網路

testnet即為測試網路

啟動方式二:通過命令列啟動

通過命令列進入daemon目錄,執行如下命令:

// --daemon引數代表程序在後臺駐留
qtumd --daemon --testnet

啟動注意事項

第一次啟動之後,會提示你定義新的datadir還是使用預設datadir,此處建議大家使用自定義datadir來儲存資料,因為隨著區塊的生成,datadir會越來越大

圖形化介面操作

獲取測試網路QTUM

啟動成功之後開始同步區塊資料,同步完成之後,大家就可以測試錢包功能了,可以通過朋友給你轉一些QTUM,或者自行獲取QTUM,獲取地址如下: http://testnet-faucet.qtum.info/#!/

通過qtum-cli訪問錢包

接下來,我們通過qtum-cli訪問錢包,注意,通過該項命令訪問錢包有兩點需要注意: 1.使用該項命令需要指定datadir,除非是預設datadir 2.後續因為我們要通過JSON-RPC訪問錢包,此處可以提前配置好qtum.conf

qtum.conf配置檔案

qtum-cli命令示例

qtum-cli getinfo -->該命令在0.16版本之後會被移除,取而代之的是getblockchaininfo, getnetworkinfo, getwalletinfo qtum-cli getblockchaininfo -->檢視區塊資訊 qtum-cli getnetworkinfo -->檢視網路資訊 qtum-cli getwalletinfo -->檢視錢包資訊,會顯示balance、txcount等資訊 qtum-cli getnewaddress -->獲得一個新地址 qtum-cli validateaddress -->校驗該地址是否屬於該網路 qtum-cli getaccountaddress -->檢視指定賬戶地址,如果帳戶不存在,則會返回一個新的地址 qtum-cli getaddressesbyaccount -->檢視指定賬戶所有地址 qtum-cli getaccount -->檢視指定地址所屬賬戶 qtum-cli sendfrom -->轉賬 qtum-cli getbalance -->檢視錢包餘額:1.如果後面不帶任何引數,返回的是錢包餘額;2.如果後面攜帶賬戶引數,返回的是賬戶餘額 qtum-cli listunspent -->檢視錢包UTXO,可選引數也可檢視指定地址UTXO qtum-cli listaccounts -->檢視所有賬戶餘額 qtum-cli listtransactions -->檢視錢包所有交易 qtum-cli gettransaction -->根據txid查詢交易 qtum-cli getrawtransaction -->The serialized, hex-encoded data for ‘txid’ qtum-cli decoderawtransaction -->檢視某個交易的詳細資訊 qtum-cli walletpassphrase -->解鎖錢包,可選引數可以指定解鎖時間 qtum-cli getstakinginfo -->檢視Staking狀態 qtum-cli stop -->停止執行服務端

另外:qtum-cli help 可以展示所有命令,由於目前官方並沒有提供API文件,所以更多情況下,我們需要使用help命令來檢視每個命令如何使用,譬如功能,入參,出參的描述

qtum-cli help $commad$

注意:上面所有的命令在使用的時候,你都需要指定datadir,除非是預設目錄,譬如你要使用help命令,正確的姿勢是:

qtum-cli.exe --datadir=E:\qtum help

JSON-RPC訪問錢包-Postman

你可以通過Postman來檢驗你的配置是否生效,你需要在請求中定義Basic Auth,也就是你的rpcuser,rpcpassword Postman使用JSON-RPC訪問錢包

恭喜你,測試通過!!!

JSON-RPC訪問錢包-程式碼

這個時候,就該考慮我們的專案中如何去訪問錢包API了,目前主流語言都擁有一些成熟的JSON-RPC庫,如java語言的jsonrpc4j,使用方法在官方的README當中也有詳細的介紹: https://github.com/briandilley/jsonrpc4j 注意:需要對rpcuser和rpcpassword進行base64編碼,新增到請求的Basic Auth中,可以使用jsonrpc4j庫提供的net.iharder.Base64進行如下處理:

String encodeBytes = Base64.encodeBytes((username + ":" + password).getBytes());
headers.put("Authorization", "Basic " + encodeBytes);

最終的目標

當然,這些準備工作完成之後,根據業務系統需求,就要涉及資料庫表結構設計,考慮如何完成整個業務鏈的問題了。

備註:區塊鏈方面資料,相對而言,並不如其他技術體系完善,多數情況下自行摸索需要耗費不少時間,當然,這是不可避免的;同時社群的力量不可小視,他們往往能在你焦頭爛額之時,直擊問題的核心,可謂是柳暗花明又一村。