您當前的位置:首頁 > 旅遊

1-快速搭建一個Fabric1.0環境|基於shell指令碼的方式

作者:由 蘇小樂 發表于 旅遊時間:2018-03-29

前言

區塊鏈數字貨幣的火熱,從去年的暴漲,吸引了不少人的目光。關於應用場景,顛覆之類的就不說了。誠然,現實世界有很多漫天飛舞的誇大和吹捧。作為IT行業的從業人員,我們更應該做的是好好了解這背後的技術,只有理解了技術,才能更好的落實應用。

區塊鏈大致有三種類型,公有鏈,私有鏈,聯盟鏈。而HyperLedger則是典型的聯盟鏈,引入了許可權管理機制。訪問該區塊鏈,只有經過了授權,才有資格訪問。

區塊鏈開發的流程是什麼?

那麼,區塊鏈應用到底該怎麼開發呢?

這裡簡單介紹一下流程,後面的一系列文章會陸續給出一些學習教程。

基本步驟是:

搭建開發環境

——->

編寫智慧合約

——->

編寫可以呼叫智慧合約的應用程式

——>

部署應用程式。

接下來,就介紹第一部分,快速搭建一個Fabric 1。0的環境。

大部分內容參考:

快速搭建一個Fabric 1。0的環境

快速搭建一個Fabric 1.0的環境

1.安裝好Ubuntu

本次專案是在Ubuntu16。04環境下開發的。我用的是Ubuntu16。04桌面版。 在安裝完Ubuntu後,需要保證apt source是國內的,不然如果是國外的話會很慢很慢的。具體做法是:

進入ubuntu桌面右上角按鈕選單中選擇“系統設定”, 在彈出的視窗中選擇 “軟體和更新”。

切換到“Ubuntu軟體”選項,在底部“下載自”中選擇國內的映象,然後點選關閉。

系統彈出對話方塊,選擇“重新載入”即可。

2.Go的安裝

Ubuntu的apt-get雖然提供了Go的安裝,但是版本比較舊,最好的方法還是參考官方網站

https://

golang。org/dl/

,下載最新版的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

【注意:不要使用apt方式安裝go,apt的go版本太低了!】

接下來編輯當前使用者的環境變數:

vi ~/。profile

新增以下內容:

export PATH=$PATH:/usr/local/go/bin

export GOROOT=/usr/local/go

export GOPATH=$HOME/go

export PATH=$PATH:$HOME/go/bin

$HOME

是當前使用者主目錄。

export GOPATH=$HOME/go 表示我們把go的目錄GOPATH設定為當前使用者的資料夾。

PATH 表示環境變數。在Linux環境中,是區分大小寫的。

其次,在Linux中,引用變數,要在前面加上一個$符號。

綜上所述,$PATH 以及 $HOME均表示對變數的引用。

其中,PATH=$PATH:/usr/local/go/bin 表示將/usr/local/go/bin這個路徑,加入到環境變數中!

編輯儲存並退出vi後,記得把這些環境載入:

source ~/。profile

由於我們把go的目錄GOPATH設定為當前使用者的資料夾下,所以記得建立go資料夾

cd ~

mkdir go

3. Docker安裝

我們可以使用阿里提供的映象,安裝也非常方便。透過以下命令來安裝Docker

curl -fsSL https://get。docker。com/ | sh

或者 curl -sSL https://get。daocloud。io/docker | sh

安裝完成後需要修改當前使用者(我使用的使用者叫sxl)許可權:

sudo usermod -aG docker sxl

登出並重新登入

,然後在終端執行一下命令,以新增阿里雲的Docker Hub映象:

sudo tee /etc/docker/daemon。json <<-‘EOF’

{

“registry-mirrors”: [“https://obou6wyb。mirror。aliyuncs。com”]

}

EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

4. Docker-Compose的安裝

Docker-compose是支援透過模板指令碼批次建立Docker容器的一個元件。在安裝Docker-Compose之前,需要安裝Python-pip,執行指令碼:

sudo apt-get install python-pip

然後是安裝docker-compose,我們從官方網站(

https://

github。com/docker/compo

se/releases

)下載也可以從國內的進行DaoClound下載,為了速度快接下來從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

5. Fabric原始碼下載

我們可以使用Git命令下載原始碼,首先需要建立對應的目錄,然後進入該目錄,Git下載原始碼:

mkdir -p ~/go/src/github。com/hyperledger

cd ~/go/src/github。com/hyperledger

git clone https://github。com/hyperledger/fabric。git

由於Fabric一直在更新,所有我們並不需要最新最新的原始碼,需要切換到v1。0。0版本的原始碼即可:

cd ~/go/src/github。com/hyperledger/fabric

git checkout v1。0。0

6. 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

得到結果如下:

1-快速搭建一個Fabric1.0環境|基於shell指令碼的方式

docker映象安裝成功

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

我們仍然停留在e2e_cli資料夾,這裡提供了啟動、關閉Fabric網路的自動化指令碼。我們要啟動Fabric網路,並自動執行Example02 ChainCode的測試,執行一個命令:

。/network_setup。sh up

最後執行完畢,我們可以看到這樣的介面:

如果您看到這個介面,這說明我們整個Fabric網路已經通了。

1-快速搭建一個Fabric1.0環境|基於shell指令碼的方式

Fabric網路開啟成功

8.手動測試一下Fabric網路

我們仍然是以現在安裝好的Example02為例,在官方例子中,channel名字是mychannel,鏈碼的名字是mycc。我們首先進入CLI,我們重新開啟一個命令列視窗,輸入:

docker exec -it cli bash

執行以下命令可以查詢a賬戶的餘額:

peer chaincode query -C mychannel -n mycc -c ‘{“Args”:[“query”,“a”]}’

可以看到餘額是90:

1-快速搭建一個Fabric1.0環境|基於shell指令碼的方式

然後,我們試一試把a賬戶的餘額再轉20元給b賬戶,執行命令:

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”,“20”]}’

執行結果為:

1-快速搭建一個Fabric1.0環境|基於shell指令碼的方式

現在轉賬完畢, 我們試一試再查詢一下a賬戶的餘額,沒問題的話,應該是隻剩下70了。我們看看實際情況:

1-快速搭建一個Fabric1.0環境|基於shell指令碼的方式

果然,一切正常。最後我們要關閉Fabric網路,首先需要執行exit命令退出cli容器。關閉Fabric的命令與啟動類似,命令為:

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

。/network_setup。sh down

現在我們整個Fabric的環境已經測試完畢,恭喜,一切正常,接下來我們就是去做自己的區塊鏈的開發。

總結:

透過上述快速搭建一個Fabric網路,我們做了些什麼?為以後打下了什麼基礎?

在“ Fabric Docker映象的下載”這一步驟中,我們下載了Fabric 網路所需要的映象檔案,這是Fabric網路中必要的檔案。

在e2ecli例子中,使用的是startFabric.sh指令碼來自動搭建Fabric網路的。不同的fabric應用,所需要的Fabric網路結構也是不同的,這裡的Fabric網路只適合e2e_cli 例子中。

用完記得關閉網路,不然開啟其他Fabric網路時,會產生衝突。

以上都是經過欄主自動動手實踐執行出來的。如果有錯誤的地方,歡迎指出~

標簽: Fabric  com  go  docker