林劍宏
摘要:區(qū)塊鏈?zhǔn)且环N顛覆現(xiàn)有格局的底層技術(shù)架構(gòu)體系。區(qū)塊鏈超級(jí)賬本Hyperlegder Fabric 1.0網(wǎng)絡(luò)系統(tǒng)的部署涉及硬件、軟件等多種工具和技術(shù)環(huán)境的搭建。為了減少在部署Fabric過(guò)程中出現(xiàn)的錯(cuò)誤,文章通過(guò)演示在實(shí)際生產(chǎn)環(huán)境下的搭建操作,從零開(kāi)始詳細(xì)介紹了部署區(qū)塊鏈Hyperlegder Fabric 1.0網(wǎng)絡(luò)系統(tǒng)的全過(guò)程,使初學(xué)者能夠快速高效地體驗(yàn)Fabric網(wǎng)絡(luò)系統(tǒng)的核心功能。
關(guān)鍵詞:區(qū)塊鏈;Hyperlegder Fabric;網(wǎng)絡(luò)系統(tǒng);部署;搭建
中圖分類(lèi)號(hào):TP316.4? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)30-0050-04
Abstract: Blockchain is an underlying technology architecture system that subverts the existing pattern. The deployment of the blockchain hyperledger fabric 1.0 network system involves the construction of hardware, software and other tools and technical environment. In order to reduce the errors in the process of deploying fabric, this paper introduces the whole process of deploying the blockchain hyperlegder fabric 1.0 network system in detail from scratch by demonstrating the construction operation in the actual production environment, so that beginners can experience the core functions of fabric network system quickly and efficiently.
Key words:Blockchain; Hyperlegder Fabric; network system ; deployment; Build
1 引言
區(qū)塊鏈[1]的概念由學(xué)者“中本聰”研究者(或研究團(tuán)隊(duì))于2008年提出,區(qū)塊鏈(Blockchain)是一種源自比特幣的分布式存儲(chǔ)機(jī)制數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)的核心內(nèi)容是通過(guò)一串使用非對(duì)稱(chēng)加密算法、安全散列算法等密碼學(xué)方法產(chǎn)生的數(shù)據(jù)塊(block),使得用戶可以在任意節(jié)點(diǎn)中參與系統(tǒng)數(shù)據(jù)的維護(hù)。目前主要有如下幾種主流的區(qū)塊鏈技術(shù)平臺(tái):比特幣(Bitcoin)、以太坊(Ethereum)、和Linux基金會(huì)的開(kāi)源項(xiàng)目超級(jí)賬本(Hyperledger Fabric)、EOS企業(yè)級(jí)區(qū)塊鏈操作系統(tǒng)(Enterprise Operation System)。超級(jí)賬本HyperLedger Fabric作為一個(gè)典型的區(qū)塊鏈技術(shù)平臺(tái),是一個(gè)帶有可插入各種功能模塊架構(gòu)的區(qū)塊鏈實(shí)施方案,目標(biāo)是打造成一個(gè)由全社會(huì)共同維護(hù)的開(kāi)源超級(jí)賬本。HyperLedger Fabric系統(tǒng)上沒(méi)有中心機(jī)構(gòu)擁攬權(quán)力,我們的每一筆交易都是全網(wǎng)公開(kāi)并且安全的,信用由全社會(huì)共同認(rèn)證;超級(jí)賬本具有強(qiáng)大的容器技術(shù)來(lái)支持任何主流的語(yǔ)言來(lái)開(kāi)發(fā)智能合約(鏈碼)。因此,通過(guò)由淺入深、循序漸進(jìn)地掌握超級(jí)賬本HyperLedger Fabric 1.0網(wǎng)絡(luò)系統(tǒng)的部署全過(guò)程,將能夠進(jìn)一步搭建符合自身業(yè)務(wù)場(chǎng)景的區(qū)塊鏈網(wǎng)絡(luò)平臺(tái),利用區(qū)塊鏈Fabric技術(shù)實(shí)現(xiàn)具有去中心化、信息不可篡改的區(qū)塊鏈應(yīng)用項(xiàng)目。
2 HyperLedger Fabric系統(tǒng)的環(huán)境搭建
2.1 基礎(chǔ)環(huán)境
根據(jù)區(qū)塊鏈超級(jí)賬本HyperLedger Fabric的官方技術(shù)文檔,F(xiàn)abric系統(tǒng)能夠部署在Linux操作系統(tǒng)、Windows操作系統(tǒng)以及蘋(píng)果電腦的MAC等操作系統(tǒng)上,但是在生產(chǎn)環(huán)境中,鑒于穩(wěn)定性、兼容性和安全性的要求,一般都是將Fabric系統(tǒng)部署在Linux操作系統(tǒng)之上。本文的實(shí)驗(yàn)演示環(huán)境采用了64位的Ubantu 16.04LTS, 系統(tǒng)內(nèi)核為GNU/Linux4.15.0-51-generic_x86_64。如果讀者的常用操作系統(tǒng)為Windows系統(tǒng),可以通過(guò)采用虛擬機(jī)VM的方法來(lái)安裝Ubantu系統(tǒng)。硬件資源要求:內(nèi)存最低為2Gb以上,磁盤(pán)空間最低為30Gb以上,本實(shí)驗(yàn)演示環(huán)境采用了4Gb 的內(nèi)存和40Gb的磁盤(pán)空間。
2.2 工具軟件
首先,超級(jí)賬本HyperLedger Fabric網(wǎng)絡(luò)的運(yùn)行環(huán)境需要安裝git工具,git是一個(gè)非常優(yōu)秀的免費(fèi)、開(kāi)源的版本管理控制工具,我們可以使用git工具方便地下載各個(gè)官方源代碼文件,例如:Golang、Hyperledger Fabric等在Github網(wǎng)站上發(fā)布的相關(guān)源代碼或其它數(shù)據(jù)。在Ubantu系統(tǒng)中通過(guò)敲打鍵盤(pán)上的“Ctrl+Alt+T”組合鍵調(diào)出終端,然后輸入命令: sudo apt-get install git 即可。接著,下載并安裝開(kāi)發(fā)基于區(qū)塊鏈應(yīng)用的重要技術(shù)Node.js[2],Node.js通過(guò)Google的JavaScript V8引擎解析JavaScript代碼。另外,還需要在Ubantu系統(tǒng)中安裝vim、tree、npm等工具及管理軟件。
2.3 Docker和Docker-Compose的安裝配置
HyperLedgerFabric1.0 依賴(lài)Docker容器執(zhí)行智能合約chaincode,Docker [3]是一個(gè)開(kāi)源的應(yīng)用容器引擎,基于Go語(yǔ)言并遵從Apache2.0協(xié)議開(kāi)源。 Docker可以讓開(kāi)發(fā)者打包他們的應(yīng)用以及依賴(lài)包到一個(gè)輕量級(jí)、可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。Docker容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口(類(lèi)似 iPhone 的 App),更重要的是容器性能開(kāi)銷(xiāo)極低。
首先,安裝依賴(lài)包后在終端輸入如下命令安裝docker容器:sudo apt-get install docker-ce, 在終端輸入命令測(cè)試Docker:sudo docker pull hello-world,同時(shí)可以查看Docker版本:docker --version。Docker Compose的主要功能是能夠在一臺(tái)主機(jī)上創(chuàng)建出相互隔離的多個(gè)網(wǎng)絡(luò),并通過(guò)命令行管理多人Docker容器。我們可以使用如下命令來(lái)安裝docker-compose工具:sudo curl -L https://github.com/docker/compose/releases/download/1.24.0-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose,安裝成功后,執(zhí)行如下命令查看Docker-Compose版本信息: docker-compose –version。
2.4 安裝配置go語(yǔ)言
Golang(go語(yǔ)言) 是HyperLedger Fabric區(qū)塊鏈系統(tǒng)底層以用智能合約chaincode的開(kāi)發(fā)語(yǔ)言。我們可以通過(guò)使用wget工具來(lái)下載Golang的最新版本壓縮包文件 go1.12.5.linux-amd64.tar.gz,在終端輸入如下命令行下載go 語(yǔ)言:$ wget https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz,接著,使用 tar 命令將下載后的壓縮包文件解壓到指定的 /usr/local/ 路徑下,在終端輸入如下命令:$ sudo tar -zxvf go1.12.5.linux-amd64.tar.gz -C /usr/local/ 。最后,還要配置go 語(yǔ)言環(huán)境變量,解壓源文件之后,為了使go 語(yǔ)言能夠?qū)ο到y(tǒng)的所有用戶開(kāi)放正常使用,所以我們采用 vim 文件編輯工具打開(kāi)系統(tǒng)的 profile 文件進(jìn)行編輯:$ sudo vim /etc/profile 并且在profile文件最后添加如下內(nèi)容:export GOPATH=$HOME/go ;export GOROOT=/usr/local/go ;export PATH=$GOROOT/bin:$PATH。使用 source 命令,使剛剛添加的配置信息生效:$ source /etc/profile。最后,通過(guò) go env命令驗(yàn)證是否正確完成go語(yǔ)言的安裝配置。
3超級(jí)賬本HyperLedger Fabric的安裝和編譯
3.1 下載超級(jí)賬本HyperLedger Fabric源代碼
首先,通過(guò)在終端命令行上輸入如下命令創(chuàng)建工程目錄:sudo mkdir -p /project/goworkspace/src/github.com/hyperLedger 。接著執(zhí)行命令切換到工程目錄,然后在終端上輸入如下命令下載Fabric源代碼:git clone -b release-1.0 https://github.com/hyperledger/fabric 。完成Fabric源代碼的下載后,下一步還需要下載安裝fabric-samples存儲(chǔ)庫(kù),執(zhí)行如下命令即可下載fabric-samples存儲(chǔ)庫(kù)到當(dāng)前目錄下:
git clone -b release-1.0 https://github.com/hyperledger/fabric-samples。
3.2 編譯HyperLedger Fabric源代碼
Hyperledger Fabric 可以有兩種方式進(jìn)行編譯安裝,第一種方式(bootstrap.sh腳本方式)進(jìn)行環(huán)境的安裝,優(yōu)點(diǎn)是簡(jiǎn)單、方便,能夠快速上手;第二種方式是以 Fabric 源碼方式進(jìn)行編譯,適合動(dòng)手能力較強(qiáng)的人員,優(yōu)點(diǎn)是可以對(duì) Hyperledger Fabric 相關(guān)組件有深入的理解,但缺點(diǎn)是容易出現(xiàn)各種錯(cuò)誤且修正比較麻煩。為了使讀者能夠更進(jìn)一步了解Hyperledger Fabric系統(tǒng)各個(gè)核心模塊的功能,本文采用了第二種方式對(duì) Fabric 源碼進(jìn)行直接手動(dòng)編譯。我們?cè)贔abric源代碼所在的文件夾下,執(zhí)行如下命令:make release可以對(duì)Fabric進(jìn)行編譯。
3.3? HyperLedger Fabric模塊的安裝
完成對(duì)Fabric源代碼的編譯之后,這些模塊就可以被運(yùn)行了,但是目前只能在編譯文件所在的文件夾中運(yùn)行Fabric模塊,這樣是非常不方便的。為了更加方便地使用這些模塊,可以通過(guò)下面的命令將Fabric模塊的可執(zhí)行文件復(fù)制到系統(tǒng)目錄中,這樣在系統(tǒng)中的任何路徑下面都能運(yùn)行這些可執(zhí)行這些模塊:復(fù)制成功之后通過(guò)以下命令修改各個(gè)Fabric模塊文件的執(zhí)行權(quán)限,否則無(wú)法行這些模塊。進(jìn)入Fabric模塊所在目錄下,接著依次執(zhí)行下面命令對(duì)Fabric各個(gè)核心模塊文件執(zhí)行權(quán)限的配置:sudo chmod -R 777 /usr/local/bin/configtxgen 。完成對(duì)Fabric各個(gè)核心模塊文件執(zhí)行權(quán)限的配置后即可正確運(yùn)行并使用Fabric核心模塊的功能??梢酝ㄟ^(guò)如下命令來(lái)檢查Fabric模塊安裝過(guò)程是否成功:peer version。
3.4 采用Docker運(yùn)行Fabric模塊
除了前面介紹的直接編譯源代碼的方式,還可以通過(guò)Docker來(lái)運(yùn)行這些模塊。通過(guò)Docker運(yùn)行Fabric相關(guān)模塊有兩種方法:通過(guò)本地源代碼生成Fabric模塊的Docker鏡像文件和從Docker倉(cāng)庫(kù)中下載Fabric模塊的鏡像文件。下面將介紹這兩種方法的詳細(xì)步驟。第一是通過(guò)本地源代碼生成Fabric模塊的Docker鏡像通過(guò)本地源代碼生成Fabric模塊的Docker鏡像文件是非常簡(jiǎn)單的,具體的操作命令為:make docker,上訴命令的執(zhí)行過(guò)程涉及從docker的遠(yuǎn)程服務(wù)器中下載文件,因此需要等待一段時(shí)間,具體的安裝時(shí)間視網(wǎng)絡(luò)情況而定。在執(zhí)行命令的過(guò)程中需要保持網(wǎng)絡(luò)暢通。
第二種方法是從Docker倉(cāng)庫(kù)中下載Fabric模塊的Docker鏡像文件。為了方便用戶使用Fabric,F(xiàn)abric開(kāi)發(fā)小組會(huì)定期將Fabric穩(wěn)定版本的源代碼編譯之后制作成Docker鏡像文件,然后把這些Docker鏡像文件上傳到Docker倉(cāng)庫(kù)中供下載使用。
4 HyperLedger Fabric系統(tǒng)的部署
通過(guò)上面對(duì)的Hyperledger Fabric系統(tǒng)的開(kāi)發(fā)環(huán)境搭建之后,我們接下來(lái)就可以啟動(dòng)相關(guān)的Fabric模塊進(jìn)行Fabric系統(tǒng)的部署。
4.1 生成Fabric系統(tǒng)的成員證書(shū)文件
成員管理服務(wù)MSP[4] (Merbership Service Provider)在許可區(qū)塊鏈/聯(lián)盟鏈Hyperledger Fabric上認(rèn)證、授權(quán)和管理身份。在對(duì)等節(jié)點(diǎn)和排序服務(wù)節(jié)點(diǎn)中運(yùn)行成員管理服務(wù)的代理。MSP為客戶端、peer節(jié)點(diǎn)、Orderer節(jié)點(diǎn)等提供PKI數(shù)字證書(shū)以及管理組織成員身份。在MSP機(jī)制下,每個(gè)節(jié)點(diǎn)都擁有自己的證書(shū),每個(gè)節(jié)點(diǎn)發(fā)出去的消息都會(huì)用自己的證書(shū)進(jìn)行簽名,同時(shí)對(duì)端節(jié)點(diǎn)可以對(duì)這些消息進(jìn)行真?zhèn)悟?yàn)證。啟動(dòng)Fabric之前首先需要生成相關(guān)的成員證書(shū),一般情況下,MSP證書(shū)可以通過(guò)cryptogen模塊生成,同時(shí)可以由Fabric-CA管理。本文的案例采用cryptogen模塊生成MSP證書(shū),cryptogen模塊會(huì)根據(jù)提供的配置文件生成后續(xù)模塊運(yùn)行過(guò)程中需要的證書(shū)和數(shù)據(jù)文件。在生成證書(shū)之前我們需要?jiǎng)?chuàng)建一個(gè)文件夾存放配置文件和生成的證書(shū)文件。本例中我們將配置文件和生成的證書(shū)文件放在文件夾/opt/hyperledger/fabricconfig中。創(chuàng)建存放證書(shū)的文件夾的命令如下所示: mkdir -p /opt/hyperledger/fabricconfig。cryptogen模塊提供了一個(gè)命令可以獲取cryptogen模塊所需要的配置文件的樣式,該命令為: cryptogen showtemplate 。把上述命令生成的內(nèi)容復(fù)制到一個(gè)文件中稍加修改即可使用。打開(kāi)終端并執(zhí)行命令:sudo gedit crypto-config.yaml , 將配置文件的內(nèi)容保存到文件夾/opt/hyperledger/fabricconfig中,配置文件夾命名為crypto-config.yaml。保存之后依次執(zhí)行如下命令生成2個(gè)組織org1.sy.com和org2.sy.com。然后我們會(huì)發(fā)現(xiàn)在文件夾/opt/hyperledger/fabricconfig中會(huì)新增加一個(gè)文件夾crypto-config,里面存放著本例的相關(guān)配置文件,可以通過(guò)在終端執(zhí)行命令:tree-L 5查看生成證書(shū)文件的內(nèi)容。
4.2 創(chuàng)建Fabric系統(tǒng)的創(chuàng)世區(qū)塊
創(chuàng)世區(qū)塊是初始化區(qū)塊鏈網(wǎng)絡(luò)或通道的配置區(qū)塊,也是區(qū)塊鏈上的第一個(gè)區(qū)塊。利用congfigtxgen模塊生成Fabric系統(tǒng)創(chuàng)世區(qū)塊和Channel創(chuàng)始區(qū)塊的配置文件。創(chuàng)世區(qū)塊Genesis Block是初始化區(qū)塊鏈網(wǎng)絡(luò)或channel的配置區(qū)塊,也是本Fabric系統(tǒng)區(qū)塊鏈上的第一個(gè)區(qū)塊。首先進(jìn)入Order的目錄下,通過(guò)執(zhí)行如下命令即可生成基于Fabric的區(qū)塊鏈系統(tǒng)創(chuàng)世區(qū)塊, 系統(tǒng)創(chuàng)世區(qū)塊的創(chuàng)建如下圖1所示:
4.3 創(chuàng)建Fabric系統(tǒng)的賬本創(chuàng)世區(qū)塊
賬本[5]是通道中的區(qū)塊鏈和通道中每個(gè)節(jié)點(diǎn)維護(hù)的世界狀態(tài)的集合。在Fabric中稱(chēng)為通道Channel,本文后續(xù)內(nèi)容中用Channel表示,Channel是Fabric中非常重要的概念,一個(gè)Channel表示一個(gè)賬本。Fabric和其他區(qū)塊鏈平臺(tái)最大的區(qū)別是Fabric支持多賬本。每個(gè)Fabric應(yīng)用都至少包含一個(gè)Channel,因此創(chuàng)建Channel是Fabric中比較重要的步驟。創(chuàng)建通道的命令執(zhí)行完成之后會(huì)在相應(yīng)的文件夾下面生成文件Org1MSPanchors.tx和Org2MSPanchors.tx,這些文件是Fabric后續(xù)的部署過(guò)程中作為配置參數(shù)所需要的。
4.4? 啟動(dòng)Orderer 節(jié)點(diǎn)
Orderer節(jié)點(diǎn)的核心功能是排序服務(wù)或共識(shí)服務(wù),將交易排序放進(jìn)區(qū)塊的節(jié)點(diǎn)的集合。排序服務(wù)獨(dú)立于對(duì)等節(jié)點(diǎn)流程之外,并以先到先得的方式為網(wǎng)絡(luò)上所有的通道做交易排序。排序服務(wù)支持可插拔實(shí)現(xiàn),目前默認(rèn)實(shí)現(xiàn)了Solo和Kafka兩種方式。本實(shí)驗(yàn)由于在單機(jī)環(huán)境下部署區(qū)塊鏈系統(tǒng),因此采用了Solo的排序方式來(lái)進(jìn)行。Orderer節(jié)點(diǎn)負(fù)責(zé)交易的打包和區(qū)塊的生成,Orderer節(jié)點(diǎn)的配置信息通常放在環(huán)境變量或者配置文件中,本實(shí)驗(yàn)中的配置信息統(tǒng)一存放在配置文件中。Fabric源碼提供了Orderer啟動(dòng)所用到的配置文件的實(shí)例,將示例配置文件復(fù)制到Orderer的文件夾下面稍加修改即可使用。在配置文件orderer.yaml所在的目錄執(zhí)行如下命令:orderer start啟動(dòng)orderer節(jié)點(diǎn)。
4.5 啟動(dòng)peer節(jié)點(diǎn)
Peer模塊是維護(hù)賬本并運(yùn)行智能合約容器來(lái)對(duì)賬本執(zhí)行讀、寫(xiě)操作的網(wǎng)絡(luò)實(shí)體。Peer節(jié)點(diǎn)由成員擁有和維護(hù)。Peer節(jié)點(diǎn)是Fabric的核心模塊,所有的交易數(shù)據(jù)經(jīng)過(guò)Orderer排序打包之后由Peer模塊存儲(chǔ)在區(qū)塊鏈中。所有的Chaincode也是由Peer模塊打包并且激活的。Peer模塊的配置信息同樣由環(huán)境變量和配置文件組成,本例中我們采用配置文件的方式來(lái)配置peer節(jié)點(diǎn)的參數(shù)。在設(shè)定配置文件之前需要?jiǎng)?chuàng)建一個(gè)文件夾存放Peer模塊的配置文件和區(qū)塊數(shù)據(jù)。在Fabric源碼中同樣提供了Peer模塊配置文件的示例,將示例配置文件復(fù)制到Peer模塊的文件夾下面稍加修改即可使用。創(chuàng)建存儲(chǔ)Peer模塊的配置文件和區(qū)塊數(shù)據(jù)的文件夾,并復(fù)制示例配置文件,接著采用編輯器修改該文。完成編輯后在配置文件core.yaml所在的文件夾中執(zhí)行命令:peer node start啟動(dòng)peer節(jié)點(diǎn)。
4.6 創(chuàng)建Fabric系統(tǒng)通道
通道是構(gòu)建在Fabric網(wǎng)絡(luò)系統(tǒng)上的私有區(qū)塊鏈,實(shí)現(xiàn)了數(shù)據(jù)的隔離和保密。通道內(nèi)特定的賬本在通道中是與所有的對(duì)等節(jié)點(diǎn)共享的,并且交易方必須通過(guò)該通道的正確性驗(yàn)證才能與賬本進(jìn)行交互。現(xiàn)在我們可以創(chuàng)建通道,創(chuàng)建通道的過(guò)程一共分為如下三個(gè)步驟。第一步,創(chuàng)建通道如圖2所示:
4.7 Chaincode的部署和調(diào)用
在Hyperlegder Fabric系統(tǒng)中,智能合約稱(chēng)為Chaincode[6] ,中文譯為鏈碼。在Fabric中一個(gè)交易的具體邏輯是在Chaincode中運(yùn)行的,智能合約是用戶編寫(xiě)的一段獨(dú)立的可執(zhí)行代碼或應(yīng)用程序,與Fabric自身的模塊程序之間是相互獨(dú)立的。Chaincode運(yùn)行在基于Docker的安全容器中,Chaincode在啟動(dòng)的時(shí)候和背書(shū)節(jié)點(diǎn)建立gRPC連接,在運(yùn)行過(guò)程中通過(guò)接口和背書(shū)節(jié)點(diǎn)通信。鏈碼是在線下預(yù)先開(kāi)發(fā)好后再部署到線上的智能合約,部署的時(shí)候需要一定的權(quán)限,部署成功就意味著鏈碼的業(yè)務(wù)邏輯是各個(gè)關(guān)聯(lián)方都已經(jīng)達(dá)成一致的。Chaincode的實(shí)現(xiàn)必須依賴(lài)于Peer節(jié)點(diǎn)和Orderer節(jié)點(diǎn)的正確部署。這里采用Fabric源碼附帶的例子chaincode_example02來(lái)作為測(cè)試Chaincode。Chaincode擁有完整的生命周期,測(cè)試Chaincode相關(guān)的測(cè)試一共有四個(gè)步驟: 第一步,安裝Chaincode;第二步,實(shí)例化Chaincode代碼;第三步,通過(guò)Chaincode調(diào)用(寫(xiě)入數(shù)據(jù)),第四步,通過(guò)Chaincode查詢數(shù)據(jù)。Fabric智能合約Chaincode的部署和調(diào)用如下圖5所示:
通過(guò)對(duì)HyperLedger Fabric智能合約Chaincode的安裝、調(diào)用,我們可以查詢到在本超級(jí)賬本通道為linjianhongchannel上的所產(chǎn)生的區(qū)塊數(shù)為4個(gè),執(zhí)行invoke的調(diào)用命令后,a向b轉(zhuǎn)移了101,交易完成并進(jìn)行查詢可知,此時(shí)a的值為699。經(jīng)過(guò)在本實(shí)驗(yàn)的演示,基于HyperLedger Fabric1.06版本的區(qū)塊鏈系統(tǒng)已順利完成部署。
至此,我們對(duì)HyperLedger Fabric系統(tǒng)的整體架構(gòu)有了更深入的理解:客戶端peer節(jié)點(diǎn)先將交易提案交給Endorser進(jìn)行背書(shū),通過(guò)背書(shū)的交易提案會(huì)被提交到Orderer節(jié)點(diǎn)排序并生成交易記錄,然后Orderer節(jié)點(diǎn)會(huì)把一系列交易打包成區(qū)塊Block提交給Committer,Committer會(huì)在交易驗(yàn)證后將Block寫(xiě)入?yún)^(qū)塊鏈文件中持久性保存。其次,F(xiàn)abric的多組織和多通道也是這個(gè)項(xiàng)目的特色之一,多組織是指交易中有兩個(gè)或兩個(gè)以上的組織間進(jìn)行時(shí),可以由多方組織進(jìn)行交易背書(shū),這些組織既可以是公司內(nèi)部的不同的部門(mén),也可以是不同的公司。綜上所述,區(qū)塊鏈技術(shù)的重要特征之一就是能夠保證實(shí)現(xiàn)安全的交易。HyperLedger Fabric與公有鏈的交易實(shí)現(xiàn)上有很大的區(qū)別,如權(quán)限、認(rèn)證、數(shù)據(jù)隔離等優(yōu)點(diǎn),并克服了比特幣、以太坊等公有鏈項(xiàng)目的缺陷。
5 結(jié)語(yǔ)
本文詳細(xì)介紹了全程手動(dòng)部署IBM HyperLedger Fabric區(qū)塊鏈系統(tǒng)所需要的關(guān)鍵步驟,主要包括了Fabric開(kāi)發(fā)運(yùn)行環(huán)境的搭建過(guò)程、Fabric核心模塊的編譯、運(yùn)行和配置;同時(shí)介紹了Fabric核心概念:賬本通道Channel的創(chuàng)建和使用,最后實(shí)現(xiàn)了對(duì)Fabric智能合約Chaincode的安裝、實(shí)例化以及調(diào)用。文中內(nèi)容通俗易懂、圖文并茂,從零開(kāi)始將理論知識(shí)與手把手操作演示相結(jié)合,通過(guò)熟悉文中的實(shí)踐案例,有助于使讀者快速掌握區(qū)塊鏈Fabric網(wǎng)絡(luò)系統(tǒng)的組成部分和部署流程,為區(qū)塊鏈應(yīng)用的項(xiàng)目落地開(kāi)發(fā)奠定堅(jiān)實(shí)的基礎(chǔ)。
參考文獻(xiàn):
[1] SWAN M.Blockchain:blueprint for a new economy[M].USA:0Reilly Media Inc,2015:1-3.
[2] 李寧.第一行代碼-以太坊[M].北京: 水利水電出版社,2018:65-66.
[3] Leader-us,李艷軍,趙鍇.區(qū)塊鏈輕松上手:原理、源碼、搭建與應(yīng)用[M].北京: 電子工業(yè)出版社,2018:78-79.
[4] 李鑫. Hyperledger Fabric 技術(shù)內(nèi)幕:架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)原理[M].北京: 機(jī)械工業(yè)出版社,2019:25-30.
[5] 蔡亮,李啟雷,梁秀波.區(qū)塊鏈技術(shù)進(jìn)階與實(shí)戰(zhàn)[M].北京市:人民郵電出版社,2018:116-118.
[6] 張?jiān)鲵E,董寧,朱軒彤,等.深度探索區(qū)塊鏈:Hyperledger技術(shù)與應(yīng)用[M].北京: 機(jī)械工業(yè)出版社,2018:159-164.
【通聯(lián)編輯:王力】