如何將量子鏈引入業務系統,使用JSON-RPC與錢包通訊(內附區塊鏈學習論,個人理解,歡迎交流)
提示
Tip1.本文適合想要深入瞭解區塊鏈技術的人員閱讀 Tip2.本文適合需要在業務系統中引入比特幣/量子鏈的技術人員閱讀
引言
入門區塊鏈技術之前,如果對於去中心化有一定了解,這無疑將幫助你更好的理解區塊鏈的底層技術;區塊鏈的底層技術由密碼學,共識演算法,點對點網路組成;在學習每個部分之前,如果你能夠對於為什麼需要這樣的技術有一個大概的認識,必可讓你事半功倍。
在這兒給大家推薦兩本書:《精通比特幣》、《比特幣白皮書:一種點對點的電子現金系統》
緣何量子鏈
相比量子鏈,對於身處幣圈外的人們,更為熟知的是比特幣,以太坊;這是當然,作為區塊鏈1.0,2.0的代表,比特幣和以太坊無疑受到了人們更多的關注。 量子鏈基於UTXO
錢包的安裝與使用
安裝篇
因為我們的錢包需要用於開發,所以下載安裝輕錢包是無濟於事的,下面是全節點錢包下載地址: https://github.com/qtumproject/qtum/releases 大家可以根據自己的系統自行選擇下載二進位制檔案進行安裝;當時我在搭建本地環境的時候(Windows),32位,64位的4個版本全部進行了試安裝,全部無法同步區塊資料,後來換了老版本,這才可以;當時的版本號不記得了…
在測試網路執行錢包節點
在安裝好之後,建議大家啟動測試網路來執行錢包,畢竟正式網路的交易,是需要實實在在的QTUM的;
啟動方式一:通過圖形化介面啟動,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
恭喜你,測試通過!!!
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);
最終的目標
當然,這些準備工作完成之後,根據業務系統需求,就要涉及資料庫表結構設計,考慮如何完成整個業務鏈的問題了。
備註:區塊鏈方面資料,相對而言,並不如其他技術體系完善,多數情況下自行摸索需要耗費不少時間,當然,這是不可避免的;同時社群的力量不可小視,他們往往能在你焦頭爛額之時,直擊問題的核心,可謂是柳暗花明又一村。