第一章 九析帶你輕鬆完爆 hyperledger fabric - 搭建區塊鏈網絡

目錄linux

1 前言git

2 配置超級帳本環境github

    2.1 下載 fabric 源碼docker

    2.2 解壓縮源碼bootstrap

    2.3 下載 Docker 鏡像bash

        2.3.1 啓動腳本添加執行權限微信

        2.3.2 註釋下載語句網絡

        2.3.3 下載 Docker 鏡像curl

3 部署超級帳本多節點網絡ide

    3.1 下載 fabric-sample

    3.2 啓動容器

4. 建立通道

5 安裝和初始化鏈碼

6 鏈碼操做

    6.1 查詢

    6.2 轉帳


1 前言

        我認爲學習一門新技術最好的方式就是動手,而不是學理論。基於這個原則,我在博客除了實操以外不多叨逼叨理論。由於我認爲文本時代早已通過時了,文字的力量明顯蓋不過視頻。現現在,通常逛博客的除了解決實際問題,基本不會多作逗留,漸漸地,技術博客變成了互聯網的衛生間,成爲了你們解決實際須要的場所。

        本節不會講區塊鏈的理論,若是你是抱着聽故事的目的進來的,那麼很差意思,我仍是勸你早早離開。

        現在 hyperledger fabric 已經到了版本 2 的時代了,但我的對 2 這個數字實在介意,因此本文依然使用版本 1。本文會讓整個 fabric 的搭建輕鬆和隨意,因此你盡能夠放心。來吧,寶貝們,哥要發車了,大家排好隊形,時刻準備尖叫。

        這裏有情提示一下,最好仍是按照哥的步驟和指定的版本,不要作什麼修改,沒事不要挑戰這個挑戰那個。你要真是閒得那裏疼,想練練膽,你能夠嘗試強吻漂亮異性或者獨闖異性衛生間,我以爲這更刺激一些,更能讓你有成就感和征服欲。好了,如今咱們開始吧。


2 配置超級帳本環境

2.1 下載 fabric 源碼

        不要一聽到源碼就顫抖,就尿如雨下,不會讓你編譯的。

wget https://github.com/hyperledger/fabric/archive/v1.0.0.tar.gz

2.2 解壓縮源碼

tar -zxvf  fabric-1.0.0.tar.gz

2.3 下載 Docker 鏡像

2.3.1 啓動腳本添加執行權限

cd fabric-1.0.0/scripts

chmod +x bootstrap-1.0.0.sh

2.3.2 註釋下載語句

        若是你是 mac 操做系統:

sed -i '' 's/curl/#curl/g' bootstrap-1.0.0.sh

        若是你是 linux 操做系統:

sed -i 's/curl/#curl/g' bootstrap-1.0.0.sh

        若是你是 window 操做系統:

&(*)(*)#*(_)#(_)#(_)(#_)#()_R*(&T*^&*#^&(*# 你本身隨便玩吧

2.3.3 下載 Docker 鏡像

./bootstrap-1.0.0.sh

image1.png

        自此,整個超級帳本最小化環境就被你輕鬆完爆了。此時,你能夠挪動挪動你僵硬的屁股,放個P活躍一下氣氛吧。


3 部署超級帳本多節點網絡

3.1 下載 fabric-sample

        爲了簡便,你仍是直接下 fabric 提供的樣例部署多節點網絡吧,先有個網絡的概念先。下載地址以下,根據你本身的操做系統選擇:

https://github.com/hyperledger/fabric/releases/tag/v1.1.0

        若是你是 mac 操做系統就直接下這裏,不用謝哥,哥就是這麼體貼。

https://github.com/hyperledger/fabric/releases/download/v1.1.0/hyperledger-fabric-darwin-amd64-1.1.0.tar.gz

3.2 啓動容器

        啓動容器須要 docker-compose,若是你是 mac,並且又安裝了 docker,那麼系統會自動爲你安裝好 docker-compose;若是你是 linux,能夠參考哥的《九析帶你玩轉 docker-compose - 安裝篇》安裝 docker-compose。

cd fabric-samples-1.1.0/basic-network

docker-compose -f docker-compose.yml up -d

docker ps

image2.png


4. 建立通道

        其實我特別討厭這些專業術語,我以爲如今 IT 界愈來愈不說人話。你能夠把通道想成微信羣,若是一些人想互相聊天,必需要同處於一個微信羣才能夠。記好了:通道 == 微信羣。

        這裏還須要介紹一個術語:MSP,你說這都是些什麼玩意。你能夠把 MSP 聯想成一種身份。好比管理員身份、普通用戶身份等等。

        好了,介紹完通道和 MSP 以後,你能夠繼續下面的操做了。

        首先以管理員 MSP 登陸 Peer 節點,而後建立通道。你能夠聯想成管理員(MSP)登陸微信(Peer)建立微信羣。登陸 peer 所在節點(由於 peer 節點已經 docker 化了,其實這裏就是直接登陸 docker 容器):

docker exec -it -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" peer0.org1.example.com bash

        建立通道(管理員建立微信羣):

peer channel create -o orderer.example.com:7050 -c mychannel -f /etc/hyperledger/configtx/channel.tx

        加入通道(微信管理員也要把本身加入到微信羣)

peer channel join -b mychannel.block

        建立完通道以後,直接退出 peer0 容器便可:

exit


5 安裝和初始化鏈碼

        安裝和初始化鏈碼的工做是在 cli 容器進行,因此要先進入 cli 容器:

docker exec -it cli /bin/bash

        安裝鏈碼:

peer chaincode install -n jiuxi -v v0 -p github.com/chaincode_example02/go

        實例化鏈碼:

peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n jiuxi -v v0 -c '{"Args": ["init", "a", "100", "b", "200"]}'


6 鏈碼操做

6.1 查詢

        一樣在 cli 容器中,查詢初始化值:

peer chaincode query -C mychannel -n jiuxi -v v0 -c '{"Args": ["query", "a"]}'

image3.png

6.2 轉帳

        在 cli 容器中繼續執行轉帳操做:

peer chaincode invoke -C mychannel -n jiuxi -v v0 -c '{"Args": ["invoke", "a", "b", "10"]}'

        執行成功後,再次查詢 a 帳戶的值,發現已經從 100 變成 90。

        自此,整個區塊鏈網絡搭建成功,並簡單驗證了一個鏈碼(智能合約)的例子。不知道你什麼感覺,有沒有想尖叫的慾望,若是有,請幫我點個贊。

相關文章
相關標籤/搜索