1. 程式人生 > >區塊鏈之Hyperledger(超級賬本)Fabric v1.0 的環境搭建(超詳細教程)

區塊鏈之Hyperledger(超級賬本)Fabric v1.0 的環境搭建(超詳細教程)

首先感謝深藍居,這篇教程是基於他的教程[http://www.cnblogs.com/studyzy/p/7437157.html]整理的,區塊鏈技術發展很快,在大神的教程上稍做了些補充。另外,有也在學習區塊鏈的同學可以聯絡我,大家互相學習!

在剛開始接觸Hyperledger時,非常迷茫,不知道從何入手。導師建議我別隻看理論知識,試著在機器上執行一下,邊用邊學。於是開始在網上各種查怎麼搭建Fabric環境,菜鳥(非計算機本科)第一次裝虛擬機器,用linux,指令也是邊查邊用,終於花了近五天時間搭建成功,過程艱難。所以寫下此教程,讓後面學習的同學少走彎路。

1. 安裝Linux系統 建議Ubuntu 16.04

關於是使用虛擬機器還是雙系統,我的筆記本用的虛擬機器,實驗室臺式電腦裝得雙系統。兩種都體驗過之後,建議大家還是最好雙系統。其實Ubuntu的介面很友好,就算完全不會Linux指令(比如我),基本操作還是能完成的,而且使用起來更直接。
虛擬機器教程:(1)下載最新的VirtualBox或者VM ware。(2)下載Ubuntu 16.04 映象,按著步奏匯入就好。網上很多裝虛擬機器安裝教程。跟著做準沒錯

2.保證apt source是國內的

輸入下面指令:
sudo vi /etc/apt/sources.list
檢視apt源列表,如果其中看到是http://us.xxxxx之類的,那麼就是外國的,如果看到是

http://cn.xxxxx之類的,那麼就不用換的。
如果是us,原教程方法是在命令模式下,輸入:
:%s/us./cn./g
批量替換,然後輸入:wq 儲存退出。

*tips:* 我這裡提供一個簡單的方法,開啟系統設定,選擇軟體和更新
這裡寫圖片描述
然後在下載自:中選擇aliyun,如下圖。這樣原始檔也是在國內。
這裡寫圖片描述

更新一下源sudo apt-get update
然後安裝ssh,這樣接下來就可以用Xshell或者SecureCRT之類的客戶端遠端連線Ubuntu。

sudo apt-get install ssh

3. go的安裝

Ubuntu的apt-get自帶的go版本太低,這裡我們重新安裝,輸入指令:
wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz

然後解壓:
sudo tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz
接下來編輯當前使用者的環境變數
vi ~/.profile
在最後新增以下內容

export PATH=$PATH:/usr/local/go/bin 
export GOROOT=/usr/local/go 
export GOPATH=$HOME/go 
export PATH=$PATH:$HOME/go/bin

如圖
這裡寫圖片描述
:wq 儲存並退出

最後載入環境變數
source ~/.profile

我們把go的目錄GOPATH設定在當前使用者的資料夾下,所以記得要建立go資料夾
cd ~ 回到根目錄
mkdir go 建立go資料夾
go環境安裝完成!!

4.Docker的安裝

更新一下:這裡也可以直接去看docker的官方文件下載,很多人反應這個源掛了,我也試了一下確實下不全,所以下面方法不行的話就去官網下載。(更新時間2018.6.20)

按照深藍居教程,docker的安裝,我使用的是阿里提供的映象,安裝指令如下
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
然後修改當前使用者的許可權
sudo usermod -aG docker XXX
登出並重新登入,然後新增阿里雲的Docker Hub映象:
建立docker檔案 sudo mkdir -p /etc/docker

sudo gedit /etc/docker/daemon.json 
{
 "registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"]
}
儲存並退出
sudo systemctl daemon-reload
sudo systemctl restart docker

最後 docker version 結果如下則成功。

這裡寫圖片描述

docker安裝完成!!

5.Docker-Compose的安裝

Docker-compose是支援通過模板指令碼批量建立Docker容器的一個元件。在安裝Docker-Compose之前,需要安裝Python-pip,執行指令:
sudo apt-get install python-pip
然後安裝docker-compose,考慮到國內外牆的原因,為了下載速度更快,我們選擇從DaoClound安裝Docker-compose,執行指令:

curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-uname -s-uname -m> ~/docker-compose

sudo mv ~/docker-compose /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

官方推薦為1.8.0版本以上,這裡我們下載的是1.12.0。
檢視docker-compose version 如下,docker-compose 安裝成功!!

這裡寫圖片描述

要是上面方法不行,還有一種方法就是直接sudo pip install docker-compose 效果一樣(更新)

6.Fabric原始碼下載

首先建好存放原始碼的資料夾(也可手動建)路徑如下:
mkdir –p ~/go/src/github.com/hyperledger
cd ~/go/src/github.com/hyperledger
用git命令下載完整原始碼
git clone https://github.com/hyperledger/fabric.git

*tips* Fabric程式碼一直在更新,以後如果只想下載最新的程式碼,可以通過–single-branch -b master –depth 1 命令選項來只獲取master分支最新的程式碼。
由於我們只是在搭建環境。不需要最新的程式碼,所以只需要切換到v1.0.0大版本就行。

cd ~/go/src/github.com/hyperledger/fabric 進入fabric目錄
git checkout v1.0.0

Fabric原始碼下載完成!!

7. Fabric Docker映象的下載

之前我們已經設定了Docker Hub映象地址,所以下載也會很快。執行指令

cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/

source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0

這樣就可以下載所有需要的Fabric Docker映象了。由於我們設定了國內的映象,所以下載應該是比較快的。
下載完畢後,我們執行以下命令檢查下載的映象列表:
docker images
結果如下圖
這裡寫圖片描述

其每個映象的主要功能就不一一列舉了,具體可看《區塊鏈原理,設計與應用》這本書,講的還是很詳細的。

8.啟動Fabric網路並完成ChainCode的測試

現在還停留在e2e_cli檔案中(如果沒有先進入),這裡提供了啟動、關閉Fabric網路的自動化指令碼。我們要啟動Fabric網路,並自動執行Example02 ChainCode的測試,執行一個命令:
./network_setup.sh up

這個指令具體進行了如下操作:
編譯生成Fabric公私鑰、證書的程式,程式在目錄:fabric/release/linux-amd64/bin

基於configtx.yaml生成創世區塊和通道相關資訊,並儲存在channel-artifacts資料夾。

基於crypto-config.yaml生成公私鑰和證書資訊,並儲存在crypto-config資料夾中。

基於docker-compose-cli.yaml啟動1Orderer+4Peer+1CLI的Fabric容器。

在CLI啟動的時候,會執行scripts/script.sh檔案,這個指令碼檔案包含了建立Channel,加入Channel,安裝Example02,執行Example02等功能。
稍等一會以後,會看見這個介面,那就恭喜啦,整個Fabric網路已經通了 ,
這裡寫圖片描述

ctrl+c退出
啟動成功!!

9.手動測試Fabric網路

這裡有官方提供的小例子,在官方例子中,channel名字是mychannel,鏈碼的名字是mycc。
首先進入CLI,然後重新開啟一個命令列視窗,輸入:
docker exec -it cli bash
這時使用者為[email protected],在/opt/gopath/src/github.com/hyperledger/fabric/peer目錄下,執行以下命令可以查詢a賬戶的餘額:
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
這裡寫圖片描述

方框內可以看見餘額為:90

下面我們可以進行轉賬操作,操作為invoke ,由a轉b 50:
peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc -c '{"Args":["invoke","a","b","50"]}'

現在轉賬完畢, 我們試一試再查詢一下a賬戶的餘額,重複之前的查詢指令,結果為:
這裡寫圖片描述
結果正確,a的餘額只有40了。
最後,我們需要關閉Fabric,這裡先使用exit命令退出cli容器。
exit
然後類似於啟動指令:
cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli
./network_setup.sh down

這裡寫圖片描述

到這,我們整個Fabric的環境已經測試完畢!!去做研究或者開發吧!!!

寫在最後:這個教程也算是自己一段工作的總結,目前在慢慢學習Ubuntu系統的操作和研究Fabric v1.0的架構與設計。希望能幫到你們!

相關推薦

區塊學習——HyperLedger-Fabric v1.0環境搭建詳細教程

相對與v0.6版本來說,1.0版本改變較大,此處不多說,只是將小白自己搭建1.0環境的過程分享給大家。希望對大家能有所幫助! 這一篇可能對前面的環境搭建會寫的有些粗略,如有疑問,可閱讀上一篇V0.6版本的環境搭建詳細步驟。 一.環境準備 雲伺服器(CentOS7.2) Go語言環境 docker安裝 d

區塊Hyperledger超級賬本Fabric v1.0環境搭建更新

mirror linu stat iyu wget glob 保存 url oba 參考鏈接:https://blog.csdn.net/so5418418/article/details/78355868 https://blog.csdn.net/wgh101539

區塊Hyperledger超級賬本Fabric v1.0環境搭建詳細教程

首先感謝深藍居,這篇教程是基於他的教程[http://www.cnblogs.com/studyzy/p/7437157.html]整理的,區塊鏈技術發展很快,在大神的教程上稍做了些補充。另外,有也在學習區塊鏈的同學可以聯絡我,大家互相學習! 在剛開始接觸Hy

白話區塊 1: 為什麼賬本要這麼記?

【編者Peter Ye按】週末帶小朋友逛王府井書店,很高興看到,我參與翻譯的《VMware軟體定

springboot啟動自定義banner--佛祖版/千里馬版/悟空版/兔子版/龍舟版/美女版本 詳細教程(多個自定義版本)

1在專案目錄下resource下新建banner.txt檔案 2在banner中新增圖案(任何字元圖案) 1:佛祖版 //////////////////////////////////////////////////////////////////// //

微信開發學習總結——微信開發環境搭建轉載

轉自:https://www.cnblogs.com/xdp-gacl/p/5149171.html   目前移動開發處於比較火的的趨勢,很多的開發者都躍躍欲試,目前移動App開發領域主要分為以下幾種型別      我在平時的工作中接觸得比較多的就是基於Android的

caffe學習系列:訓練自己的圖片集詳細教程

    學習的caffe的目的,不是簡單的做幾個練習,而是最終落實到自己的專案或科研中去。因此,本文介紹一下,從自己的原始圖片到lmdb資料,再到訓練和測試的整個流程。 一、資料的準備     有條件的同學,可以去ImageNet的官網點選開啟連結,下載ImageNet圖片

MySQL5.7.24安裝配置圖文詳細教程

1.下載MySQL 我用的是5.7.24 開啟下載連結:https://dev.mysql.com/downloads/windows/installer/5.7.html 點選Download進行下載 彈出頁面 點選No thanks進行下載 下載下來的檔名是 mysql-instal

多圖CentOS下安裝NVIDIA driver的詳細教程

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and runnin

VC2015搭建OpenCV環境詳細教程

1、首先下載OpenCV原始碼庫① https://sourceforge.net/projects/opencvlibrary/?source=typ_redirect②雙擊執行.exe檔案,匯出原始碼2、windows環境變數設定(測試環境是win7 64位)①找到系統高

Heritrix3.3.0-環境搭建maven專案

Heritrix3.3.0是maven專案,但是當我們把它匯入eclipse裡後,總是有一些jar包不能下載下來,導致專案無法正常。網上有介紹把它改為普通java專案並利用釋出版lib目錄下的jar包

cloudera search1.0.0環境搭建1搭建solrcloud

本文基於Cloudera Manager5.0.0,所有服務基於CDH5.0.0 parcel安裝。 CM 安裝solr是非常方便的,在叢集上新增服務就行了,solrcloud需要zookeeper叢集的支援,所以新增solr服務之前,先新增zookeeper服務。在此不贅

超級記賬本學習筆記:Hyperledger Fabric 1.0環境搭建,及執行e2e的問題

Cannot run peer because cannot init crypto, missing /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[ema

Hadoop實踐---叢集和開發環境搭建Intellij IDEA & Maven 開發Hadoop

1. 開發環境準備 1. Hadoop叢集安裝 2. Maven安裝 3. Intellij IDEA安裝 2. 建立專案 1. 建立Maven專案 2. 輸入GroupId 和 ArtifactId 新建專案後有提示

hyperledger fabric 1.0環境搭建出錯記錄

cp: cannot stat 'build/docker/gotools/bin/protoc-gen-go': No such file or directory(找不到protoc-gen-go檔案) 編譯生成 protoc-gen-go #編譯生成 protoc-g

【我的區塊路】- Hyperledger fabric的簡單入門fabric主要配置檔案細講

fabric的各個配置檔案做講解 Peer 配置剖析         本例子是拿fabric-samples 來說的,【如果是 fabric 的話,在 fabric/的根目錄下有一個 core.yaml 】在 fabric-samples/config 目錄下有

創建區塊v2實現powProofOfWork工作量證明

nil locks 取出 enc awd targe 哈希 binary mat block.go package main import ( "time" ) //定義塊結構 type Block struct{ Version int64 P

區塊比特幣篇

區塊 比特幣的區塊大小為1M。由區塊頭和該區塊所包含的交易列表組成。區塊頭大小為80位元組,其構成包括:    4位元組:版本號 ,記錄本區塊產生的時間。   32位元組:上一個區塊的雜湊值 ,用於追溯前一個區塊;   32位元組:交易列表的Merkle根雜湊值 ,包含本區塊的所有交易和幣基

區塊比特幣篇

什麼是比特幣? 比特幣並不是真正的幣,而是一種虛擬的加密數字貨幣,是電腦裡一串虛擬的數字,由比特幣軟體通過一定的機制發行。比特幣並不存在於任何地方,即使是硬碟上。有人如果持有比特幣,那麼他們其實是擁有特定比特幣的地址,但是其實所謂的幣並不是直接就存在於這個地址中的,地址就相當於你的銀行賬戶。

SpringBoot區塊以太坊區塊高度掃描簡潔版

繼續昨天的demo往下寫寫:[SpringBoot區塊鏈之以太坊開發(整合Web3j)](https://juejin.im/post/5d88e6c1518825094f69e887),將複雜的邏輯都去除了,留下最簡單區塊高度掃描部分程式碼,這樣更好讓開發者上手 首先自定義個區塊高度處理執行緒類 ``` p