此文章系列計(jì)劃記錄本人從零開始學(xué)習(xí)JD Chain的歷程,因?yàn)槭菑牧汩_始,理所當(dāng)然會(huì)有許多理解不夠深入的地方,還望各位同好及時(shí)指正錯(cuò)誤,共同成長(zhǎng)。不定期更新,但盡量堅(jiān)持下去,分享文章也是想立個(gè)Flag,讓大家監(jiān)督我的學(xué)習(xí)進(jìn)度。
JD Chain 是京東區(qū)塊鏈開發(fā)團(tuán)隊(duì)自主研發(fā)的,專門為企業(yè)應(yīng)用設(shè)計(jì)的區(qū)塊鏈框架系統(tǒng),適用多種通用業(yè)務(wù)場(chǎng)景。不同于超級(jí)賬本(Hyperledger Fabric)生態(tài)和企業(yè)級(jí)以太坊聯(lián)盟(Enterprise Ethereum Alliance,EEA),JD Chain 擁有完全的自主知識(shí)產(chǎn)權(quán)和充分開放的開源協(xié)議(Apache-2.0 License)。在我大中華和美麗國(guó)在各個(gè)維度頻頻摩擦,連Docker這種應(yīng)用廣泛的開源項(xiàng)目都不再能愉快使用的當(dāng)下,學(xué)習(xí)了解完全自主可控的開源項(xiàng)目,也算為加速內(nèi)循環(huán)做出微薄貢獻(xiàn)(此處應(yīng)該有掌聲^ ^)。
-------------這里是廢話的分割線-------------------
為了幫助開發(fā)者快速部署,JD Chain 項(xiàng)目在部署腳本中內(nèi)置了一個(gè)可視化管理工具,除了一些必要的配置修改外,大部分如快速實(shí)現(xiàn)JDChain的初始化和peer節(jié)點(diǎn)啟動(dòng)等區(qū)塊鏈部署工作只需要在前端頁(yè)面按照操作提示進(jìn)行簡(jiǎn)單的點(diǎn)點(diǎn)點(diǎn)即可,減少用戶的各種繁瑣操作,簡(jiǎn)直是我這種懶人的福音。
部署模型
JD Chain 官網(wǎng) 提供了面向中小型企業(yè)和大型企業(yè)的兩種不同部署模型。其中面向中小企業(yè)的最簡(jiǎn)部署模型為JD Chain可正常運(yùn)行的最低配置,在硬件條件滿足的情況下,可以支持億級(jí)交易,通常用于Demo實(shí)驗(yàn)或小型應(yīng)用,也正是下文采用的部署模型。最簡(jiǎn)部署模型需要部署一個(gè)客戶端節(jié)點(diǎn)、一個(gè)網(wǎng)關(guān)節(jié)點(diǎn)和多個(gè)共識(shí)節(jié)點(diǎn)(共識(shí)節(jié)點(diǎn)數(shù)量依賴于共識(shí)算法,本次部署部署了四個(gè)共識(shí)節(jié)點(diǎn))

操作步驟

安裝、修改配置
從http://ledger.jd.com下載安裝包,其中jdchain-peer-1.2.1-xxx.zip為peer節(jié)點(diǎn)壓縮包,jdchain-gateway-1.2.1-xxx.zip為網(wǎng)關(guān)壓縮包。
如果peer節(jié)點(diǎn)部署在不同的機(jī)器上,采用默認(rèn)端口安裝就可以;
如果peer節(jié)點(diǎn)部署在同一臺(tái)機(jī)器上,需要修改管理工具和peer節(jié)點(diǎn)的默認(rèn)端口,避免端口沖突導(dǎo)致服務(wù)無(wú)法啟動(dòng)。還需要做一些假設(shè):
- 管理工具的端口定義為:8000/8001/8002/8003
-
peer節(jié)點(diǎn)的啟動(dòng)端口定義為:7080/7081/7082/7083 -
JDChain項(xiàng)目的安裝路徑為:/export/jdchain
對(duì)節(jié)點(diǎn)配置進(jìn)行修改,具體修改如下(如果為不同機(jī)器部署,只需執(zhí)行如下步驟1和步驟2):
- 切換路徑
cd /export/jdchain - 解壓
Peer節(jié)點(diǎn)安裝包unzip jdchain-peer-1.2.1.RELEASE.zip –d peerX - 切換路徑
cd /export/jdchain/peerX/bin - 修改管理工具
manager端口(如下圖所示位置)vi manager-startup.shimage - 修改
peer啟動(dòng)端口和內(nèi)存大小vi peer-startup.sh。本機(jī)多peer部署建議把內(nèi)存配置改小一點(diǎn)避免內(nèi)存不夠用應(yīng)用程序無(wú)法啟動(dòng)或者被系統(tǒng)kill,下圖提示位置建議修改為:-Xmx512m -Xms512m
image.png
啟動(dòng)管理工具
- 進(jìn)入可執(zhí)行腳本目錄
cd /export/jdchain/peerX/bin - 執(zhí)行:
sh manager-startup.sh - 管理工具的后臺(tái)日志默認(rèn)存放在
jump.out文件內(nèi) - 管理工具會(huì)啟動(dòng)一個(gè)
UI操作界面方便部署,界面默認(rèn)的訪問(wèn)端口為 8000。
創(chuàng)建公私鑰
登錄管理端UI界面,點(diǎn)擊左側(cè)菜單:公私鑰管理->生成公私鑰。在彈出的界面中填寫相關(guān)信息:

OK! 創(chuàng)建完畢!公鑰(以及公鑰衍生的地址)將作為區(qū)塊鏈上各個(gè)參與方節(jié)點(diǎn)或用戶的數(shù)字身份(類比于郵箱賬號(hào)),私鑰作為區(qū)塊鏈上各個(gè)參與方節(jié)點(diǎn)或用戶的數(shù)字身份的密碼(類比于郵箱密碼,需要妥善保管)
創(chuàng)建數(shù)據(jù)賬本
- 修改配置信息:點(diǎn)擊左側(cè)菜單:賬本->初始化賬本,選擇一臺(tái)機(jī)器作為協(xié)調(diào)方,其它的作為參與方。每個(gè)節(jié)點(diǎn)填寫內(nèi)容之后先不要點(diǎn)擊“保存配置信息”按鈕,都填寫完成之后統(tǒng)一,先保存協(xié)調(diào)方,其它依次快速保存。
注意事項(xiàng):
- 參與方要使用協(xié)調(diào)方的邀請(qǐng)碼;
- 共識(shí)協(xié)議:目前為:
Bftsmart; - 密碼算法:默認(rèn);
- 參與方數(shù)量:包含協(xié)調(diào)方在內(nèi);
- 共識(shí)節(jié)點(diǎn)信息:如果在同一臺(tái)機(jī)器,一定要保證共識(shí)端口不同(共識(shí)會(huì)占用多個(gè)連續(xù)端口,步長(zhǎng)建議設(shè)置為10,即:6300/6310/6320/6330);
- 初始化共識(shí)地址:如果在同一臺(tái)機(jī)器,一定要保證共識(shí)端口不同(共識(shí)會(huì)占用多個(gè)連續(xù)端口,步長(zhǎng)建議設(shè)置為10,即:22000/22010/22020/22030);
-
peer節(jié)點(diǎn)公鑰:選擇上一步創(chuàng)建的公鑰; - 數(shù)據(jù)庫(kù)名稱:在同一個(gè)機(jī)器上的名稱不能重復(fù)。
- 由于
peer節(jié)點(diǎn)之間的通信設(shè)置了時(shí)延,一定要確保四個(gè)peer節(jié)點(diǎn)的配置都無(wú)誤的前提下,在盡可能短的時(shí)間內(nèi)同時(shí)點(diǎn)擊界面下方的“保存配置信息”按鈕。
協(xié)調(diào)方配置信息如下:

參與方配置信息如下:


-
賬本初始化:點(diǎn)擊界面下方的“開始”按鈕,則啟動(dòng)四個(gè)參與方的初始化操作,初始化進(jìn)度會(huì)在下方展示。最終展示界面如下:image
注意:一定要確保所有的賬本初始化都完成之后,再進(jìn)行后續(xù)操作。初始化完成表示創(chuàng)世區(qū)塊已經(jīng)創(chuàng)建。否則在啟動(dòng)節(jié)點(diǎn)過(guò)程中會(huì)出現(xiàn)報(bào)錯(cuò)。
- 啟動(dòng)
peer節(jié)點(diǎn):點(diǎn)擊菜單 賬本->查看賬本,剛生成的賬本會(huì)在內(nèi)容區(qū)展示。點(diǎn)擊其中的“啟動(dòng)節(jié)點(diǎn)”按鈕,即可啟動(dòng)peer節(jié)點(diǎn)(見下圖)。啟動(dòng)無(wú)誤后,進(jìn)度狀態(tài)會(huì)展示為:已啟動(dòng)->已加載。image
安裝、啟動(dòng)Gateway節(jié)點(diǎn)
- 確定路徑
cd /export/jdchain - 解壓
gateway節(jié)點(diǎn)安裝包unzip jdchain-gateway-1.2.1.RELEASE.zip –d gw - 管理端查看公私鑰(即上文在管理端為每個(gè)節(jié)點(diǎn)創(chuàng)建的公私鑰)
- 查看加密后的口令
cd peer0→cd config/keys→more *.pwd - 修改端口 、添加公私鑰
cd /export/jdchain/gw/config→vi gateway.conf - 腳本啟動(dòng)
gateway:sh startup.sh - 稍等片刻,如果沒(méi)有修改默認(rèn)端口配置,可通過(guò)
http://localhost:18081頁(yè)面訪問(wèn)區(qū)塊鏈瀏覽器,界面如下:image - 大功告成!
注意事項(xiàng):
- 公私鑰可以在管理工具的“公私鑰管理”中獲得,但私鑰的解密密碼(
keys.default.privkey-password參數(shù)),需要通過(guò)登錄后臺(tái)才能查看,即上文中的第4步。 - 注意,公鑰以
3sn開頭,私鑰以177開頭。
image
劃重點(diǎn):以上基于JDChain1.2.1.RELEASE版本搭建,最新版本JDChain1.3.0.RELEASE版本已經(jīng)發(fā)布,建議基于最新版本部署,部署過(guò)程完全一致。
參考鏈接:
https://zhuanlan.zhihu.com/p/102270006
JD Chain GitHub項(xiàng)目鏈接:https://github.com/blockchain-jd-com/jdchain,歡迎各位跟我一樣先Star收藏關(guān)注起來(lái),共同學(xué)習(xí)共同成長(zhǎng)!





