摘要:如果你的環境搭建再云服務器上,例如阿里云或者騰訊云,可以不用更新源,直接在自己的主機上使用遠程連接工具連接上云主機,環境就算完成了若在本地不能連接上云主機,或者虛擬機,檢查一下是否已經安裝并啟動若沒有,可以參加網上的教程,配置遠程連接。
前言
最近在參加一個比賽,使用到了區塊鏈的開源軟件hyperledger,由于之前從未接觸過區塊鏈,以及和區塊鏈開發相關的內容,所有在網上查閱了大量的資料,并且通過學習yeasy(楊寶華)開源的入門書籍區塊鏈技術指南以及進階學習的《區塊鏈原理、設計與應用》,對區塊鏈的一些相關概念有了一定認識。這里記錄的是我安裝hyperledger fabric的所有步驟,同時也是一個快速搭建單機環境的參考教程。
準備好機器環境本人的區塊鏈網絡部署在VMware搭建的ubuntu16.04的環境下(推薦使用該版本的系統),詳細的系統版本為ubuntu-16.04.4-desktop-amd64.iso ,是從網易開源鏡像站下載的。對于如何使用VMware安裝虛擬機以及讓虛擬機訪問網絡,網上有許多教程,這里就不重復講了。
當將系統安裝完成后,需要更換源,使用desktop版的可以直接在設置里面選擇最佳服務器,如下圖所示
若使用的是服務器版本,則可以使用如下命令換成高速的源
先備份原來的源文件
$ sudo cp /etc/apt/source.list /etc/apt/source.list.bak
打開source.list文件,刪除原來的內容
$ sudo vim /etc/apt/source.list
任選下面一組源文件復制到source.list中
網易源
deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
阿里源
# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial universe deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties deb http://archive.canonical.com/ubuntu xenial partner deb-src http://archive.canonical.com/ubuntu xenial partner deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
搜狐源
deb http://mirrors.sohu.com/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.sohu.com/ubuntu/ trusty-security main restricted universe multiverse deb http://mirrors.sohu.com/ubuntu/ trusty-updates main restricted universe multiverse deb http://mirrors.sohu.com/ubuntu/ trusty-proposed main restricted universe multiverse deb http://mirrors.sohu.com/ubuntu/ trusty-backports main restricted universe multiverse deb-src http://mirrors.sohu.com/ubuntu/ trusty main restricted universe multiverse deb-src http://mirrors.sohu.com/ubuntu/ trusty-security main restricted universe multiverse deb-src http://mirrors.sohu.com/ubuntu/ trusty-updates main restricted universe multiverse deb-src http://mirrors.sohu.com/ubuntu/ trusty-proposed main restricted universe multiverse deb-src http://mirrors.sohu.com/ubuntu/ trusty-backports main restricted universe multiverse
復制進去后,使用:wq保存,然后使用如下命令更新一下
$ sudo apt-get install update
執行完成后環境就基本上準備好了,如果使用的是服務器版本,覺得使用不方便的話,可以使用xshell之類的遠程連接工具連接你的虛擬機。如果你的環境搭建再云服務器上,例如阿里云或者騰訊云,可以不用更新源,直接在自己的主機上使用遠程連接工具連接上云主機,環境就算完成了(若在本地不能連接上云主機,或者虛擬機,檢查一下ssh是否已經安裝并啟動,若沒有,可以參加網上的教程,配置遠程連接)。
安裝GO語言環境不推薦使用apt的方式安裝GO,原因是這樣安裝的版本比較老,推薦安裝最新版的GO,具體安裝命令如下
下載最新的GO安裝包,具體的最新版本號可以從Golang官網上查看
$ wegt https://dl.google.com/go/go1.10.2.linux-amd64.tar.gz
解壓安裝包到/usr/local目錄下
$ sudo tar -C usr/local -xzf go1.10.2.linux-amd64.tar.gz
編輯當前用戶的環境變量
$ vim ~/.profile
添加如下內容
export PATH=$PATH:/usr/local/go/bin export GOROOT=/usr/local/go #這里配置的GOPATH目錄為家目錄的的go文件夾 export GOPATH=$HOME/go export PATH=$PATH:$HOME/go/bin
使用:wq保存后使用如下命令將保存立即刷新
$ source ~/.profile
建立GOPATH目錄
由于在環境變量中配置了GOPATH目錄的位置,所以我們需要在家目錄下創建該文件夾
$ cd ~ $ mkdir go
查看go版本,測試環境配置是否成功
$ go version go version go1.10 linux/amd64安裝Docker
這里使用的Docker的官方文檔來安裝docker
如果系統中有舊版本的Docker,需要先使用如下命令卸載
$ sudo apt-get remove docker docker-engine docker.io
更新apt包索引
$ sudo apt-get update
安裝軟件包以允許apt通過HTTPS使用遠程庫
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
若出現無法識別命令,可以先將該命令復制到一個文本文件中,將去掉,將所有語句放在同一行下,然后復制執行。
添加Docker的官方GPG密鑰
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
通過搜索指紋的最后8個字符,確認您現在擁有指紋識別碼9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
$ sudo apt-key fingerprint 0EBFCD88 pub 4096R/0EBFCD88 2017-02-22 Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 uid Docker Release (CE deb)sub 4096R/F273FCD8 2017-02-22
使用以下命令設置穩定版本的遠程庫
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
再次更新apt包索引
$ sudo apt-get update
使用apt安裝docker-ce
$ sudo apt-get install docker-ce
查看docker版本,測試環境配置是否成功
$ docker version Client: Version: 18.03.1-ce API version: 1.37 Go version: go1.9.5 Git commit: 9ee9f40 Built: Thu Apr 26 07:17:20 2018 OS/Arch: linux/amd64 Experimental: false Orchestrator: swarm Server: Engine: Version: 18.03.1-ce API version: 1.37 (minimum version 1.12) Go version: go1.9.5 Git commit: 9ee9f40 Built: Thu Apr 26 07:15:30 2018 OS/Arch: linux/amd64 Experimental: false
安裝完成之后,需要將當前用戶添加到docker用戶組,然后為該用戶添加sudo權限
若沒有創建docker用戶組,可以使用如下命令創建一個GID為999,組名為docker的用戶組
$ sudo groupadd –g 999 docker
將當前用戶(ubuntu)添加到docker用戶組并分配sudo權限
$ sudo usermod -aG docker ubuntu
注銷后重新登錄,然后添加阿里云的Docker Hub鏡像(注意,不同版本的添加方法不同,見阿里云容器 Hub)
$ sudo mkdir -p /etc/docker $ sudo tee /etc/docker/daemon.json <<-"EOF" { "registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"] } EOF $ sudo systemctl daemon-reload $ sudo systemctl restart docker
如果覺得阿里云鏡像不好用,可以選擇DaoClound的鏡像,配置方式見DaoCloud官方文檔
安裝Docker-ComposeDocker-Compose是支持通過模板腳本批量創建的一個組件。在安裝 Docker-Compose之前,需要安裝python-pip
安裝python-pip
$ sudo apt-get python-pip
下載 Docker-Compose,這里使用的是國內的DaoClound加速器進行下載
$ curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > ~/docker-compose
將Docker-Compose文件夾移動到/usr/local/bin目錄下
$ sudo mv ~/docker-compose /usr/local/bin/docker-compose
為Docker-Compose附上可執行權限
$ chmod +x /usr/local/bin/docker-compose下載Fabric源碼
先在GOPATH下創建對應的目錄
$ mkdir -p ~/go/src/github.com/hyperledger
切換到對應目錄,使用Git命令將fabric的源碼從github上克隆下來
$ 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下載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
由于剛才設置的是國內的鏡像站,在本地網速還不錯的情況下下載數度還是很快的。當下載完成后,使用如下命令檢查鏡像列表
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE dev-peer0.org1.example.com-marbles-v4 latest 089d43e100c9 5 hours ago 173MB dev-peer0.org1.example.com-fabcar-1.0 latest 6047921ee993 7 hours ago 173MB hyperledger/fabric-tools latest 0403fd1c72c7 10 months ago 1.32GB hyperledger/fabric-tools x86_64-1.0.0 0403fd1c72c7 10 months ago 1.32GB hyperledger/fabric-couchdb latest 2fbdbf3ab945 10 months ago 1.48GB hyperledger/fabric-couchdb x86_64-1.0.0 2fbdbf3ab945 10 months ago 1.48GB hyperledger/fabric-kafka latest dbd3f94de4b5 10 months ago 1.3GB hyperledger/fabric-kafka x86_64-1.0.0 dbd3f94de4b5 10 months ago 1.3GB hyperledger/fabric-zookeeper latest e545dbf1c6af 10 months ago 1.31GB hyperledger/fabric-zookeeper x86_64-1.0.0 e545dbf1c6af 10 months ago 1.31GB hyperledger/fabric-orderer latest e317ca5638ba 10 months ago 179MB hyperledger/fabric-orderer x86_64-1.0.0 e317ca5638ba 10 months ago 179MB hyperledger/fabric-peer latest 6830dcd7b9b5 10 months ago 182MB hyperledger/fabric-peer x86_64-1.0.0 6830dcd7b9b5 10 months ago 182MB hyperledger/fabric-javaenv latest 8948126f0935 10 months ago 1.42GB hyperledger/fabric-javaenv x86_64-1.0.0 8948126f0935 10 months ago 1.42GB hyperledger/fabric-ccenv latest 7182c260a5ca 10 months ago 1.29GB hyperledger/fabric-ccenv x86_64-1.0.0 7182c260a5ca 10 months ago 1.29GB hyperledger/fabric-ca latest a15c59ecda5b 10 months ago 238MB hyperledger/fabric-ca x86_64-1.0.0 a15c59ecda5b 10 months ago 238MB hyperledger/fabric-baseos x86_64-0.3.1 4b0cab202084 12 months ago 157MB
出現以上結果說明鏡像已經下載成功
啟動Fabric網絡并運行e2e_cli項目進入e2e_cli目錄,并執行啟動命令
$ cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/ $ ./network_setup.sh up
這個過程做了如下操作
1.編譯生成Fabric公私鑰,證書的程序,程序在目錄:fabric/release/linux-amd64/bin下2.基于configtx.yaml生成創世區塊和通道相關信息,并保存到channel-artifacts文件夾中
3.基于crypto-config.yaml生成公私鑰和證書信息,并保存在crypto-config文件夾中
4.基于docker-compose-cli.yaml啟動1 Orderer + 4 Peer + 1 CLI的Fabric容器
5.在CLI啟動的時候,會運行srcipt/script.sh文件,這個腳本文件包含了創建Channel,加入Channel,安裝Example02,運行Example02等功能
最后運行完成,我們會看到如下截圖,說明網絡啟動成功了
我們以安裝好的Example02進行測試,在官方例子中,channel的名字是mychannel,鏈碼的名字是mycc,我們首先重新打開一個命令行,然后進入CLI,
輸入以下命令即可
$ docker exec -it cli bash
運行以下命令可以查詢a賬戶的余額
$ peer chaincode query -C mychannel -n mycc -c "{"Args":["query","a"]}"
查詢結果如下圖所示
可以看到a賬戶的余額現在是90
運行以下命令可以查詢b賬戶的余額
$ peer chaincode query -C mychannel -n mycc -c "{"Args":["query","b"]}"
查詢結果如下圖所示
可以看到b賬戶的余額現在是210
現在將b賬戶的余額轉100給a賬戶,運行如下命令
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","b","a","100"]}"
執行結果如下圖所示
可以看到執行成功了
再次查詢a賬戶的余額
$ peer chaincode query -C mychannel -n mycc -c "{"Args":["query","a"]}"
查詢結果如下圖所示
可以看到a賬戶的余額現在是190,比之前多了100
再次查詢b賬戶的余額
$ peer chaincode query -C mychannel -n mycc -c "{"Args":["query","b"]}"
查詢結果如下圖所示
可以看到b賬戶的余額現在是110,比之前少了100
調用鏈碼一切正常
關閉區塊鏈網絡退出CLI容器
root@4941e8bd4bd6:/opt/gopath/src/github.com/hyperledger/fabric/peer# exit
關閉Fabric網絡
$ cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli $ ./network_setup.sh down
最后出現如下圖說明關閉區塊鏈網絡成功
至此,部署以及測試fabric的環境已經全部完成,下一篇博客我將記錄如何在此基礎上部署及運行IBM官方區塊鏈例子marbles(彈珠資產)
參考快速搭建一個Fabric 1.0的環境
Hyperledger Fabric 1.0 從零開始(五)——運行測試e2e
超級賬本搭建流程fabric-sample first-network
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/24075.html
摘要:協議的細節由一個名為的處理。運行下面的腳本來讓所有的事情都發生一兩分鐘后,命令提示符將返回運行結果如下圖所示現在運行該命令查看當前正在運行的容器。 showImg(https://segmentfault.com/img/bVbazHF?w=709&h=159); 前言 本教程基本上是對Marbles項目的翻譯過程. 如果英文比較好的話,建議根據官方操作說明,一步步進行環境部署。當然你...
摘要:腳本列出了在結束時安裝的映像。在不同的體系結構,將用標識體系結構的字符串替換。提供了許多來支持各種編程語言,官方發布了兩款針對和的和文檔。。 入門 在我們開始之前,如果你還沒有這樣做,你可能希望檢查是否已經在開發區塊鏈應用程序和/或運行Hyperledger Fabric的平臺上安裝了所有前提條件。 一旦安裝了前提條件,就可以下載并安裝HyperLedger Fabric了,當我們在F...
摘要:和比特幣協議有所不同的是,以太坊的設計十分靈活,極具適應性。超級賬本區塊鏈的商業應用超級賬本超級賬本是基金會下的眾多項目中的一個。證書頒發機構負責簽發撤 showImg(https://segmentfault.com/img/bV2ge9?w=900&h=385); 從比特幣開始 一個故事告訴你比特幣的原理及運作機制 這篇文章的定位會比較科普,盡量用類比的方法將比特幣的基本原理講出來...
摘要:阿里云容器服務區塊鏈解決方案第一時間同步升級,在新功能的基礎上,提供了彈性裸金屬服務器神龍內置容器化集成阿里云日志服務等方面的增強。 摘要: 全球開源區塊鏈領域影響最為廣泛的Hyperledger Fabric日前宣布了1.1版本的正式發布,帶來了一系列豐富的新功能以及在安全性、性能與擴展性等方面的顯著提升。阿里云容器服務區塊鏈解決方案第一時間同步升級,在v1.1新功能的基礎上,提供了...
摘要:企業區塊鏈平臺企業級許可的分布式分類賬平臺,為廣泛的行業用例提供模塊化和多功能性。這些節點通過應用已經由共識協議驗證的交易來維護分類帳的副本,該交易被分組為包括將每個塊綁定到前一個塊的散列的塊中。 企業區塊鏈平臺 企業級許可的分布式分類賬平臺,為廣泛的行業用例提供模塊化和多功能性。 介紹 一般而言,區塊鏈是一個不可變的交易分類賬,維護在一個分布式對等節點網絡中。這些節點通過應用已經由共...
閱讀 3513·2021-11-17 17:01
閱讀 3918·2021-11-08 13:12
閱讀 2477·2021-10-08 10:04
閱讀 687·2021-09-29 09:35
閱讀 1418·2021-09-26 10:12
閱讀 2020·2021-09-07 09:58
閱讀 1953·2019-08-30 15:55
閱讀 2134·2019-08-30 13:14