hyperledger/fabric-区块链快速入门教程+错误解决——良好用户体验
hyperledger/fabric-區塊鏈快速入門
- 目錄
- 操作系統
- 軟件安裝
- git 安裝
- go安裝
- docker安裝
- 源碼獲取
- hyperledger
- 環境配置
- 鏡像獲取
- 入門測試
- fabric-samples
- releas-1.0
- 開始測試
- releas-1.0
- master(2.2.0)
- 智能合約
- fabric
- 相關錯誤與解決方案
- fabric-samples測試出錯
- cryptogen文件不存在
- 解決方法:獲取二進制文件
- 查看對應版本
- 修改版本
- docker image does not match the version
- 解決方案
目錄
包括前期的操作系統環境、前期的軟件獲取、前期的項目源碼獲取、中期的測試、最后可能遇到的問題和解決方案。PS:本文所說的網絡問題,均無任何含義,只是網絡問題。
操作系統
我使用的是deepin 20Beta,它比較適合習慣用windows操作系統的用戶。
當然其他linux均可
linux內核版本:Linux version 5.3.0-3-amd64
軟件安裝
作為前期的準備,我們需要安裝git、go和docker三個軟件。git用于獲取源碼,go用于編譯,docker作為容器獲取鏡像。
git 安裝
hyperledger的源碼是在github上,所以需要用git進行獲取,而系統默認無git,安裝就完事了。注意,以下所有代碼均默認已有root權限
// 安裝代碼如下 // 獲取root權限,輸入root密碼回車即可 sudo su // deepin安裝git,注意,如果是centos,用yum install +軟件名 apt-get install git //沒報錯即安裝完成go安裝
hyperledger的fabric采用go語言編寫,所以需要先下載go語言安裝包:
由于網絡問題,我們選擇并點擊go語言中文網獲取linux的安裝包,右鍵獲取鏈接。
打開終端,輸入以下命令獲取:
到此時,go已經解壓完成在/usr/local/software/go文件夾中
docker安裝
hyperledger使用docker打包應用為鏡像進行移植,使得所有的客戶端均可獲取到每個版本對應的鏡像。
Deepin的安裝教程類似Ubuntu的安裝,參考教程
源碼獲取
hyperledger
地址:https://github.com/hyperledger
我們需要獲取兩個子項目:fabric和fabric-samples,fabric通過編譯成二進制文件,提供給其他子項目使用。
但在實際過程中我們實際上只會用到了一個子項目:fabric-samples
先通過git獲取到這兩個子項目的源碼:
以hyperledger/fabric-samples為例:
具體的代碼如下:
fabric-samples的鏈接:https://github.com/hyperledger/fabric-samples.git
fabric的鏈接:https://github.com/hyperledger/fabric.git
環境配置
當源碼獲取完成后,前期安裝的軟件需要進行環境配置
修改/etc/profile文件,將go的路徑加入,代碼如下
當修改完成后,通過輸入 go version測試,結果如下
2. docker添加鏡像加速器
由于國內網絡問題,當通過docker獲取鏡像時,往往速度不如人意(誰試誰知道)這時候鏡像加速器讓你感受到網速的美妙:
以阿里云鏡像加速器為例:通過搜索容器鏡像服務找到最下面的鏡像加速器,而右邊則是你的地址。
完成后輸入 docker version測試,結果如下,說明docker正常啟動
鏡像獲取
當添加完成加速器后,可以去https://hub.docker.com/u/hyperledger/來獲取hyperledger的docker鏡像。
我們需要以下鏡像:
以hyperledger/fabric-peer為例,https://hub.docker.com/r/hyperledger/fabric-peer
點擊進入即可獲取fabric-peer的鏡像,通過右邊代碼進行獲取
注:官方給了一個腳本bootstrap.sh(具體路徑如下圖),可以通過執行此文件來獲取所有的鏡像。但是,由于網絡問題,執行此文件通常會以失敗告終。只能說,官方的想法是很好,但是網絡問題,無解。所以還是老老實實的一個一個pull。
通過pull相關的鏡像文件,最后通過docker images進行查看。如果出現的鏡像和所需鏡像均吻合,則鏡像下載完成。
至此,基本上所有的文件都已經準備完畢。開始區塊鏈的入門吧!
入門測試
我們之前git了兩個子項目,fabric和fabric-samples,先進入fabric-samples來看看如何上手吧。
fabric-samples
fabric-samples中包括了很多,但是作為入門我也不清楚,先進入test-network來開始入門的測試
注意,我們的是最新的版本,而網上的教程大多是V1.0時候的fabric-samples,所以會出現比如測試路徑名稱不同:
比如當你選擇fabric-samples版本為1.0時,顯示的可執行文件為byfn.sh,如下圖所示
而如果是master(2020-08-07)時
進入后可以看到一個可執行文件network.sh
releas-1.0
具體的獲取方法如上,只是注意需要修改鏡像對應的版本,即pull時添加上對應的tag即可
開始測試
命令行進入此路徑執行此文件
// 防止萬一,直接絕對路徑執行 ./$FABRIC/fabric-samples/test-network/xxx.shreleas-1.0
如果是releas-1.0版本,即網上常見的版本時,通過./byfn.sh執行時,顯示常用的3個命令-up、-down、-generate
通過./byfn.sh generate執行區塊鏈網絡創建
而在創建完成后即可通過./byfn.sh up開始區塊鏈的網絡。這里報錯,說明沒有安裝docker-compse安裝即可
重新通過./byfn.sh up開始區塊鏈的網絡,一切正常顯示:START
區塊鏈網絡搭建完成,添加了一個名為mychannel的通道,并添加了兩個用戶a和b,完成了交易,最后查詢query a的賬戶,由原來的100變為現在的90.
此時docker images查看docker 鏡像,可以看到多出3個測試鏡像。
master(2.2.0)
查看執行結果,紅色部分為翻譯
./network.sh 包括以下幾個執行命令
通過 ./network.sh up createChannel -c testchannel 來新建并加入一個名為testchannel的通道
最后結果:
智能合約
這里通過peer相關的命令行來手動完成交易:
具體細節如下圖:
fabric
fabric的結構包括:網絡、通道、orderer、peer和鏈碼chaincode。
各個部分間的關系如下圖所示。在一個大的區塊鏈網絡中,存在多個peer 節點,不同節點間通過channel進行交易,并通過鏈碼(智能合約)對自身賬本進行讀寫等操作,并將修改后的交易信息交給orderer節點進行排序,orderer節點確定交易是否可行,并將最終的正確交易數據排好序,發送至各個peer節點,完成所有節點賬本的同步。
相關錯誤與解決方案
fabric-samples測試出錯
cryptogen文件不存在
當我們執行例子中的可執行文件時,顯示沒有二進制文件:
Starting nodes with CLI timeout of '5' tries and CLI delay of '3' seconds and using database 'leveldb' with crypto from 'cryptogen'ERROR! Peer binary and configuration files not found..解決方法:獲取二進制文件
這里是說明fabric的作用,進入fabric文件,看到有個Makefile文件,通過make release可以編譯出二進制文件,輸出到$GOPATH下的bin/目錄中,但是,由于網絡問題,可能無法編譯成功
官方在fabric/scripts/中設置了腳本文件:bootstrap.sh,可以獲取鏡像、二進制文件和范例,但是由于網絡問題,會出現無法下載的情況。
打開bootstrap.sh文件,我們可以看到里面有二進制對應的url:
獲取對應的地址:https://github.com/hyperledger/fabric/releases和https://github.com/hyperledger/fabric-ca/releases/,通過這便可獲取對應版本的二進制文件。
當然這里網絡仍然存在問題,我將各個版本的二進制文件均下載上傳至藍奏云,有需要可自取:密碼:fabric
fabric/ca1.5以上版本:https://hyperledger.lanzous.com/b01hlg8gf
fabric/ca1.1-1.5版本:https://hyperledger.lanzous.com/b01hlg8ti
fabric/ca1.1以下版本:https://hyperledger.lanzous.com/b01hlg90f
查看對應版本
通過fabric/scripts/bootstrap.sh進行查看
如果是git master的版本時,打開進入master對應的bootstrap.sh,可以看到fabric的版本為:VERSION=2.2.0,fabric-ca的版本為:CA_VERSION=1.4.8
于是通過進入fabric/ca1.5以上版本:https://hyperledger.lanzous.com/b01hlg8gf和fabric/ca1.1-1.5版本:https://hyperledger.lanzous.com/b01hlg8ti下載fabric和fabric-ca的對應版本二進制文件并解壓到本地的fabric-samples即可
修改版本
進入本地目錄修改版本
cd /workspace/github.com/hyperledger/fabric // 查看目前的git對應版本 git branch -a // 當顯示已有的版本后,可以修改對應的版本 // git checkout +xxx // 如修改為release-2.0版本 git checkout release-2.0docker image does not match the version
錯誤代碼:
ERROR! Fabric Docker image version of x.x.x does not match the versions supported by the test network.報錯顯示:
解決方案
這里就先查看docker的鏡像文件,看看是不是沒有對應的版本鏡像就行。
docker images // 發現的確沒有2.2.0版本的鏡像 // 那就很簡單 // pull + 路徑 + tag,看哪些不是2.2的,pull就是了 pull hyperledger/fabric-tools:2.2 // 如果鏡像里出現其他的,可以通過 // docker rmi + 鏡像ID // 進行刪除注意,這種情況下可能會出現:同名同id不同tag的鏡像需要刪除:
參考教程:https://blog.csdn.net/qq_37674858/article/details/80282068?utm_medium=distribute.pc_relevant.none-task-blog-baidulandingword-1&spm=1001.2101.3001.4242
通過docker rmi 鏡像名稱:鏡像tag
具體如圖所示:
或者一個比較直接的方法:修改network.sh內容,將其中對image的tag進行直接指定:修改此處:#default image tag
總結
以上是生活随笔為你收集整理的hyperledger/fabric-区块链快速入门教程+错误解决——良好用户体验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android通过代码设置铃声_iOS、
- 下一篇: 20款密码破解工具