在Ubuntu中部署並測試Fabric 1.0 Beta

【更新:1.0Beta已是過去式了,如今出了1.0.0的正式版,請你們參照 http://www.cnblogs.com/studyzy/p/7437157.html  安裝Fabric 1.0.0】html

今天HyperLedger Fabric放出了1.0 Beta版的鏡像,按照命名上來講,這應該是一個基本可用的版本了,因此我趕忙第一時間下載下來,把玩把玩。如下是在Ubuntu中安裝並測試Fabric 1.0 Beta的步驟:java

1、環境準備

1.1 安裝VirtualBox並在其中安裝好Ubuntu

這一步其實沒啥好說的,下載好最新版的VirtualBox,下載Ubuntu Server,我用的是16.10 X64。在安裝完Ubuntu後,須要保證apt source是國內的,否則若是是國外的話會很慢很慢的。具體作法是node

sudo vi /etc/apt/sources.list

打開這個apt源列表,若是其中看到是http://us.xxxxxx之類的,那麼就是外國的,若是看到是http://cn.xxxxx之類的,那麼就不用換的。個人是美國的源,因此須要作一下批量的替換。在命令模式下,輸入:python

:%s/us./cn./g

就能夠把全部的us.改成cn.了。而後輸入:wq便可保存退出。linux

sudo apt-get update

更新一下源。git

而後安裝ssh,這樣接下來就能夠用putty或者SecureCRT之類的客戶端遠程鏈接Ubuntu了。github

sudo apt-get install ssh

1.2 安裝Docker

安裝Docker也會遇到外國網絡慢的問題,幸虧國內有很好的鏡像,推薦DaoClound,安裝Docker的命令是:docker

curl -sSL https://get.daocloud.io/docker | sh
安裝完成後,運行如下腳本將當前用戶添加到Docker的組中
sudo usermod -aG docker studyzy
從新登陸當前用戶,接下來修改 Docker 服務配置( 文件)。/etc/default/docker
sudo vi /etc/default/docker
添加如下內容:
DOCKER_OPTS="$DOCKER_OPTS -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --api-cors-header='*'"
接下來就須要設置國內的Docker鏡像地址,須要註冊一個帳號,而後在加速器頁面提供了設置Docker鏡像的腳本,加速器頁面是:
https://www.daocloud.io/mirror 我提供的腳本是:
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://d4cc5789.m.daocloud.io
運行完腳本後,重啓Docker服務
sudo service docker restart

1.3 安裝docker-compose

Docker-compose是支持經過模板腳本批量建立Docker容器的一個組件。在安裝Docker-Compose以前,須要安裝Python-pip,運行腳本:bootstrap

sudo apt-get install python-pip

安裝完成後,接下來從DaoClound安裝Docker-compose,運行腳本:api

curl -L https://get.daocloud.io/docker/compose/releases/download/1.10.1/docker-compose-`uname -s`-`uname -m` > ~/docker-compose 
sudo mv ~/docker-compose /usr/local/bin/docker-compose 
chmod +x /usr/local/bin/docker-compose

2、部署Fabric 1.0 Beta

2.1下載官方自動化部署腳本

咱們首先建立一個文件夾,用於存放自動化部署的腳本。

mkdir fabric-sample
cd fabric-sample
而後就可使用curl命令下載並運行自動化部署腳本了:
1.0 beta的命令是:
curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap-1.0.0-beta.sh | bash
【2017/6/24更新: 1.0 rc1 那麼獲取的命令是:】
curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap-1.0.0-rc1.sh | bash

這個過程會比較漫長,會下載大量的x86_64-1.0.0-beta或者x86_64-1.0.0-rc1的docker image。下載完全部鏡像後會再作一次rename,把x86_64-1.0.0-beta改成latest,這樣才方便使用。
當全部下載完畢後,咱們運行
docker images
能夠看到有以下的鏡像:

REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
hyperledger/fabric-tools       latest              ae6b0f53cb70        14 hours ago        1.32 GB
hyperledger/fabric-tools       x86_64-1.0.0-beta   ae6b0f53cb70        14 hours ago        1.32 GB
hyperledger/fabric-couchdb     latest              31bbbec3d853        14 hours ago        1.48 GB
hyperledger/fabric-couchdb     x86_64-1.0.0-beta   31bbbec3d853        14 hours ago        1.48 GB
hyperledger/fabric-kafka       latest              c4ac1c9a4797        14 hours ago        1.3 GB
hyperledger/fabric-kafka       x86_64-1.0.0-beta   c4ac1c9a4797        14 hours ago        1.3 GB
hyperledger/fabric-zookeeper   latest              2c4ebacb6f00        14 hours ago        1.31 GB
hyperledger/fabric-zookeeper   x86_64-1.0.0-beta   2c4ebacb6f00        14 hours ago        1.31 GB
hyperledger/fabric-orderer     latest              11ff350dd297        14 hours ago        179 MB
hyperledger/fabric-orderer     x86_64-1.0.0-beta   11ff350dd297        14 hours ago        179 MB
hyperledger/fabric-peer        latest              e01c2b645f11        14 hours ago        182 MB
hyperledger/fabric-peer        x86_64-1.0.0-beta   e01c2b645f11        14 hours ago        182 MB
hyperledger/fabric-javaenv     latest              61c188dca542        14 hours ago        1.42 GB
hyperledger/fabric-javaenv     x86_64-1.0.0-beta   61c188dca542        14 hours ago        1.42 GB
hyperledger/fabric-ccenv       latest              7034cca1918d        14 hours ago        1.29 GB
hyperledger/fabric-ccenv       x86_64-1.0.0-beta   7034cca1918d        14 hours ago        1.29 GB
hyperledger/fabric-ca          latest              e549e8c53c2e        15 hours ago        238 MB
hyperledger/fabric-ca          x86_64-1.0.0-beta   e549e8c53c2e        15 hours ago        238 MB

2.2啓動Fabric實例

在前面下載的官方提供的自動化部署腳本中,已經包含了啓動Fabric實例的腳本。直接運行:
cd ~/fabric-sample/release/linux-amd64
./network_setup.sh up
系統運行完畢後會看到這樣的界面:
image
系統就會建立1個客戶端實例cli,1個orderer節點,還有4個peer節點。另外,當前的腳本包含了咱們接下來要測試的mycc的實例,因此可能還會看到3個鏈上代碼的實例在運行。
這是命令運行完畢後,使用docker ps命令看到的實例:

CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS              PORTS                                              NAMES
0bfa0ff5e77c        dev-peer1.org2.example.com-mycc-1.0   "chaincode -peer.a..."   3 minutes ago       Up 3 minutes                                                           dev-peer1.org2.example.com-mycc-1.0
05751dedc36a        dev-peer0.org1.example.com-mycc-1.0   "chaincode -peer.a..."   4 minutes ago       Up 4 minutes                                                           dev-peer0.org1.example.com-mycc-1.0
7006bcd8e671        dev-peer0.org2.example.com-mycc-1.0   "chaincode -peer.a..."   4 minutes ago       Up 4 minutes                                                           dev-peer0.org2.example.com-mycc-1.0
fd52ef8e4be8        hyperledger/fabric-tools              "/bin/bash -c './s..."   5 minutes ago       Up 5 minutes                                                           cli
11e34078645f        hyperledger/fabric-peer               "peer node start"        5 minutes ago       Up 5 minutes        0.0.0.0:10051->7051/tcp, 0.0.0.0:10053->7053/tcp   peer1.org2.example.com
af042ab813ed        hyperledger/fabric-peer               "peer node start"        5 minutes ago       Up 5 minutes        0.0.0.0:8051->7051/tcp, 0.0.0.0:8053->7053/tcp     peer1.org1.example.com
08723b2ec1ec        hyperledger/fabric-peer               "peer node start"        5 minutes ago       Up 5 minutes        0.0.0.0:7051->7051/tcp, 0.0.0.0:7053->7053/tcp     peer0.org1.example.com
e84bc309e09e        hyperledger/fabric-orderer            "orderer"                5 minutes ago       Up 5 minutes        0.0.0.0:7050->7050/tcp                             orderer.example.com
3ec6e7cf006b        hyperledger/fabric-peer               "peer node start"        5 minutes ago       Up 5 minutes        0.0.0.0:9051->7051/tcp, 0.0.0.0:9053->7053/tcp     peer0.org2.example.com

3、測試Fabric

其實咱們在前面運行./network_setup.sh up的時候系統已經運行了一個Example02的ChainCode測試,部署上去的ChainCodeName是mycc,因此接下來咱們要測試的話不能再初始化並部署一樣名字的ChainCode了,咱們可使用本身另外命名的名字,好比devincc。

3.1在CLI中測試Example02

首先咱們須要登陸到CLI這個容器中,才能執行Fabric的CLI命令。

docker exec -it cli bash
若是成功進入,咱們會切換到該容器的root用戶下,獲得以下的命令行目錄:
root@12f2eb6d9fa6:/opt/gopath/src/github.com/hyperledger/fabric/peer#
與0.6Fabric不一樣的是,在1.0中,鏈上代碼是須要通過Install和Instantiate兩步的。下面咱們首先安裝Example02,並指定一個名字,好比咱們這裏就用devincc:
peer chaincode install -n devincc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02
運行後能夠看到提示運行成功,返回200狀態:
image
接下來是Instantiate,也就是初始化實例,設置a帳戶有100元,b帳戶有200元。
peer chaincode instantiate -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/cacerts/ca.example.com-cert.pem -C mychannel -n devincc -v 1.0 -c '{"Args":["init","a", "100", "b","200"]}' -P "OR ('Org1MSP.member','Org2MSP.member')"
運行成功後能夠看到以下的結果:
image
接下來咱們用Query命令來看一看a帳戶的餘額:
peer chaincode query -C mychannel -n devincc -c '{"Args":["query","a"]}'
返回的結果是:
image
好接下來咱們須要把a帳戶的10元轉給b帳戶,須要調用invoke命令:
peer chaincode invoke -o orderer.example.com:7050  --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/cacerts/ca.example.com-cert.pem  -C mychannel -n devincc -c '{"Args":["invoke","a","b","10"]}'
運行返回的結果爲:

image

最後咱們再調用query命令來查一下b帳戶的餘額,若是沒有計算錯,應該是210元。

peer chaincode query -C mychannel -n devincc -c '{"Args":["query","b"]}'

image

看來咱們的Fabric 1.0 Beta已經部署成功並測試經過了。

相關文章
相關標籤/搜索