快速入門: http://hyperledger-fabric.readthedocs.io/en/release-1.1/getting_started.html
前提
安裝git
$ sudo apt update
$ sudo apt install git
安裝curl
$ sudo apt install curl
安裝vim (可選)
$ sudo apt install vim
安裝Docker
在命令行中輸入
docker --version
如果已經(jīng)安裝,會(huì)顯示初版本號(hào),如果沒有安裝,會(huì)給我們提示安裝命令
sudo apt install docker.io
安裝完成后 再執(zhí)行docker-verison
,顯示出版本號(hào),就算安裝完成了.
$ sudo apt update
$ docker --version
$ sudo apt install docker.io
查看Docker版本信息
version 1.12+
$ docker --version
輸出: Docker version 1.13.1, build 092cba3
安裝Docker Compose
實(shí)現(xiàn)了對(duì)docker的自動(dòng)化操作
簡(jiǎn)化了docker容器的操作命令.一條命令即可啟動(dòng)docker容器.相關(guān)的操作命令是被集成在一個(gè)配置文件中.
$ docker-compose --version
$ sudo apt install docker-compose
查看DockerCompose版本信息
$ docker-compose --version
輸出: docker-compose version 1.8.0, build unknown
Golang
Fabric1.1.0版本要求Go1.9+
Fabric1.0.0版本要求Go1.7+
上傳go1.10.1.linux-amd64.tar.gz
解壓文件
$ tar -zxvf go1.10.1.linux-amd64.tar.gz
編輯環(huán)境變量文件
$ vim .bashrc
添加如下內(nèi)容:
export GOPATH=$HOME/gocode
export GOROOT=$HOME/go
export PATH=$GOROOT/bin:$PATH
$ source .bashrc
$ go version
輸出: go version go1.10.1 linux/amd64
如果系統(tǒng)中有舊版本的golang,則使用如下命令卸載舊版本的golang,然后再重新安裝
# sudo apt-get remove golang-go --purge && apt-get autoremove --purge && apt-get clean
安裝Node與npm
安裝nvm
$ sudo apt update
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.10/install.sh | bash
$ export NVM_DIR="$HOME/.nvm"
$ [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
安裝Node
$ nvm install v8.11.1
檢查Node版本
$ node -v
輸出: v8.11.1
檢查npm版本
$ npm -v
輸出: 5.6.0
Hyperledger Fabric Samples 下載安裝
創(chuàng)建一個(gè)空目錄
$ mkdir hyfa
進(jìn)入該目錄
$ cd hyfa
下載方式一:
新建文件bootstrap.sh
$ vim bootstrap.sh
將https://github.com/hyperledger/fabric/blob/master/scripts/bootstrap.sh
中的內(nèi)容拷貝到bootstrap.sh,然后保存退出
賦予bootstrap.sh可執(zhí)行權(quán)限并運(yùn)行
$ chmod +x bootstrap.sh
配置docker加速器
配置docker加速器的目的是為了在下載docker鏡像文件時(shí)加速
$ curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://8890cb8b.m.daocloud.io
重啟docker服務(wù)
$ sudo systemctl restart docker.service
執(zhí)行bootstrap.sh
確定網(wǎng)絡(luò)穩(wěn)定,否則會(huì)導(dǎo)致各種問題叙量,例如下載到一半時(shí)網(wǎng)絡(luò)超時(shí)熙揍,下載失敗等等
$ sudo ./bootstrap.sh 1.1.0
下載完成后, 查看相關(guān)輸出內(nèi)容, 如果下載有失敗的鏡像, 可再次執(zhí)行 $ sudo ./bootstrap.sh 1.1.0
命令
下載方式二:
**建議使用方式一進(jìn)行下載 **
配置docker加速器,
$ curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://8890cb8b.m.daocloud.io
重啟docker服務(wù)
$ sudo systemctl restart docker.service
$ curl https://github.com/hyperledger/fabric/blob/master/scripts/bootstrap.sh | bash -s 1.1.0
安裝完成后輸出:
hyperledger/fabric-ca latest 72617b4fa9b4 5 weeks ago 299 MB
hyperledger/fabric-ca x86_64-1.1.0 72617b4fa9b4 5 weeks ago 299 MB
hyperledger/fabric-tools latest b7bfddf508bc 5 weeks ago 1.46 GB
hyperledger/fabric-tools x86_64-1.1.0 b7bfddf508bc 5 weeks ago 1.46 GB
hyperledger/fabric-orderer latest ce0c810df36a 5 weeks ago 180 MB
hyperledger/fabric-orderer x86_64-1.1.0 ce0c810df36a 5 weeks ago 180 MB
hyperledger/fabric-peer latest b023f9be0771 5 weeks ago 187 MB
hyperledger/fabric-peer x86_64-1.1.0 b023f9be0771 5 weeks ago 187 MB
hyperledger/fabric-javaenv latest 82098abb1a17 5 weeks ago 1.52 GB
hyperledger/fabric-javaenv x86_64-1.1.0 82098abb1a17 5 weeks ago 1.52 GB
hyperledger/fabric-ccenv latest c8b4909d8d46 5 weeks ago 1.39 GB
hyperledger/fabric-ccenv x86_64-1.1.0 c8b4909d8d46 5 weeks ago 1.39 GB
hyperledger/fabric-zookeeper latest 92cbb952b6f8 2 months ago 1.39 GB
hyperledger/fabric-zookeeper x86_64-0.4.6 92cbb952b6f8 2 months ago 1.39 GB
hyperledger/fabric-kafka latest 554c591b86a8 2 months ago 1.4 GB
hyperledger/fabric-kafka x86_64-0.4.6 554c591b86a8 2 months ago 1.4 GB
hyperledger/fabric-couchdb latest 7e73c828fc5b 2 months ago 1.56 GB
hyperledger/fabric-couchdb x86_64-0.4.6 7e73c828fc5b 2 months ago 1.56 GB
添加環(huán)境變量
$ export PATH=<path to download location>/bin:$PATH
注: <path to download location>表示下載的fabric-samples
文件目錄所在路徑
例: $ export PATH=$HOME/hyfa/fabric-samples/bin:$PATH
HyperLedger Fabric
環(huán)境搭建完成
總結(jié)和解釋
Fabric的安裝過程總結(jié):
- 在當(dāng)前用戶目錄中創(chuàng)建一個(gè)新的目錄 -- 方便管理Fabric
- vim bootstrap.sh -- touch bootstrap.sh
- 從指定的網(wǎng)絡(luò)中路徑中將其對(duì)應(yīng)的腳本內(nèi)容拷貝至新建的腳本文件中 https://github.com/hyperledger/fabric/blob/master/scripts/bootstrap.sh
- bootstrap.sh添加可執(zhí)行權(quán)限 -- chmod +x bootstrap.sh
- 添加docker加速器
- 執(zhí)行 bootstrap.sh -->
sudo ./bootstrap.sh 1.1.0
鏡像解釋:
如何查看自己本地的鏡像呢埂陆?
終端中執(zhí)行一下命令即可
sudo docker iamges
docker images 解釋:
ca:
證書頒發(fā)機(jī)構(gòu)
peer
包含了Peer相關(guān)的文件
處理交易
保存區(qū)塊
orderer
包含了Orderer相關(guān)的文件
排序
生成區(qū)塊
javaenv
包含了支持Java語(yǔ)言的鏈碼(智能合約)
ccenv
包含支持Go語(yǔ)言的鏈碼環(huán)境
tools
包含Peer, cryptogen, configtxgen相關(guān)工具
支持客戶端測(cè)試
zookeeper
kafka
支持couchdb(一種特定的KV數(shù)據(jù)庫(kù)), 保存數(shù)據(jù)
fabric-samples解釋
我們打開我們之前執(zhí)行的bootstrap.sh
文件润讥,會(huì)發(fā)現(xiàn)里面有一個(gè)samplesInstall()
方法,就會(huì)在我們執(zhí)行命令的所在目錄(我們上面hyfa)中 git clone
一個(gè)fabric-samples
文件衷畦。
我們先來粗略的解釋一下這個(gè)文件,后面的教程中會(huì)有詳細(xì)的解釋
abric-samples/bin:
cryptogen: 用來生成組織結(jié)構(gòu)及相應(yīng)的證書密鑰
在聯(lián)盟鏈中有哪些組織,及對(duì)應(yīng)組織下有哪些節(jié)點(diǎn)
Orderer
Org
Org1
peer0.org1.example.com
peer1.org1.example.com
org2
peer0.org2.example.com
peer0.org2.example.com
什么組織可以訪問通道中的數(shù)據(jù)依賴于生成的證書及密鑰
configtxgen:
1. 用來生成Orderer服務(wù)的初始區(qū)塊(創(chuàng)世區(qū)塊)
2. 可以生成對(duì)的通道交易配置文件(包含了通道中的成員, 及訪問策略)
3. 生成Anchor(錨節(jié)點(diǎn)更新配置文件)
-1. 用來跨組織的數(shù)據(jù)交換
-2. 發(fā)現(xiàn)通道內(nèi)新加入的組織/節(jié)點(diǎn)
每個(gè)組織都會(huì)有一個(gè)Anchor
configtxlator: 用來添加新組織
fabric目錄簡(jiǎn)介:
bin: 相應(yīng)的工具目錄
chaincode: 鏈碼示例
chaincode-docker-devmode: 用于在開發(fā)模式下測(cè)試的環(huán)境
fabcar: 提供的一個(gè)Node.JS的簡(jiǎn)單示例
fabric-ca: 簡(jiǎn)單的證書
first-network: 搭建Fabric網(wǎng)絡(luò)的目錄
節(jié)點(diǎn):
Orderer
Peer
背書節(jié)點(diǎn)
commiter節(jié)點(diǎn)
leader節(jié)點(diǎn): 負(fù)責(zé)與Orderer通信, 接收orderer產(chǎn)生的區(qū)塊, 然后將區(qū)塊同步到同組織中的節(jié)點(diǎn)
Anchor節(jié)點(diǎn): 負(fù)責(zé)跨組織的數(shù)據(jù)交換
CA節(jié)點(diǎn)
客戶端節(jié)點(diǎn)
第一次寫教程茎截,如有考慮不周,望解釋赶盔。