1-快速搭建一個Fabric1.0環境|基於shell指令碼的方式
前言
區塊鏈數字貨幣的火熱,從去年的暴漲,吸引了不少人的目光。關於應用場景,顛覆之類的就不說了。誠然,現實世界有很多漫天飛舞的誇大和吹捧。作為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
得到結果如下:
docker映象安裝成功
7.啟動Fabric網路並完成ChainCode的測試
我們仍然停留在e2e_cli資料夾,這裡提供了啟動、關閉Fabric網路的自動化指令碼。我們要啟動Fabric網路,並自動執行Example02 ChainCode的測試,執行一個命令:
。/network_setup。sh up
最後執行完畢,我們可以看到這樣的介面:
如果您看到這個介面,這說明我們整個Fabric網路已經通了。
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:
然後,我們試一試把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”]}’
執行結果為:
現在轉賬完畢, 我們試一試再查詢一下a賬戶的餘額,沒問題的話,應該是隻剩下70了。我們看看實際情況:
果然,一切正常。最後我們要關閉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網路時,會產生衝突。
以上都是經過欄主自動動手實踐執行出來的。如果有錯誤的地方,歡迎指出~
上一篇:求一份臺兒莊古城旅遊攻略?
下一篇:至購房者:老破小沒有未來