日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hyperledger/fabric-区块链快速入门教程+错误解决——良好用户体验

發布時間:2023/12/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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操作系統的用戶。

  • 包括了很多win的軟件如vscode、微信和qq等 ,基本上和在win沒太大區別;
  • Deepin中包括了自己的u盤啟動器和鏡像,按照教程完全 裝機ok
  • Deepin的UI非常舒服,自帶特效;
  • Deepin和Ubuntu類似,相關操作均通用,無使用難度;
  • Deepin開源,安全可靠;
  • Deepin為國產,現有較好的軟件生態,感覺ok;
    當然其他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的安裝包,右鍵獲取鏈接。
    打開終端,輸入以下命令獲取:

    // 也可以下載下來進行解壓,都行 //2020-08-07,此時鏈接可用 wget https://studygolang.com/dl/golang/go1.14.6.linux-amd64.tar.gz //在get到go語言的安裝包后解壓到/usr/local/software下 // 先新建/usr/local/software文件夾再解壓 mkdir /usr/local/software tar -zxvf go1.14.6.linux-amd64.tar.gz -C /usr/local/software

    到此時,go已經解壓完成在/usr/local/software/go文件夾中

    docker安裝

    hyperledger使用docker打包應用為鏡像進行移植,使得所有的客戶端均可獲取到每個版本對應的鏡像。
    Deepin的安裝教程類似Ubuntu的安裝,參考教程

    // 安裝代碼如下 // 先更新本地的軟件源,使用中科大的 cp /etc/apt/sources.list /etc/apt/sources.list.bak sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list apt update // 更新完成后先安裝需要的包,共5個 apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common // 由于安裝docker需要類似先注冊一下,所以先添加 Docker 的官方 GPG 密鑰: curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - // 添加 Docker-ce 軟件源 add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \ $(lsb_release -cs) stable" // 再次更新并安裝 apt-get update apt-get install docker-ce //設置開機自啟動 systemctl enable docker systemctl start docker //沒報錯即安裝完成

    源碼獲取

    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

    //2020-08-07 // 注意git clone 下來的項目是在你目前所在的目錄下,所以我們需要先進入對應的目錄再git // 我們在根目錄/下創建了個workspace,一個go用于以后的go開發路徑,并繼續創建github.com作為存放git項目的文件目錄 mkdir /workspace \ /workspace/go /workspace/go/bin \ /workspace/github.com \ /workspace/github.com/hyperledger // 進入目錄/workspace/github.com/hyperledger/ cd /workspace/github.com/hyperledger/ // 獲取源碼,由于網絡問題,會有點慢 git clone https://github.com/hyperledger/fabric.git git clone https://github.com/hyperledger/fabric-samples.git // 注意,通過這種方式獲取的是master的,也就是最新的源碼 // 獲取完成后更改權限 chmod 777 -R /workspace/github.com/hyperledger/

    環境配置

    當源碼獲取完成后,前期安裝的軟件需要進行環境配置

  • go的環境配置:
    修改/etc/profile文件,將go的路徑加入,代碼如下
  • // vim進行修改/etc/profile vim /etc/profile // 按i并移動光標在最后添加如下內容: #workspace export WORKSPACE=/workspace #go export GOROOT=/usr/local/software/go export GOBIN=$GOROOT/bin export GOPATH=$WORKSPACE/go #hyperledger export FABRIC=$WORKSPACE/github.com/hyperledger #path export PATH=$PATH:$GOROOT/bin:$GOPATH/bin:$FABRIC/fabric-samples/bin #END // 添加完成按esc并輸入:wq進行保存 // 修改生效 source /etc/profile

    當修改完成后,通過輸入 go version測試,結果如下

    2. docker添加鏡像加速器
    由于國內網絡問題,當通過docker獲取鏡像時,往往速度不如人意(誰試誰知道)這時候鏡像加速器讓你感受到網速的美妙:
    以阿里云鏡像加速器為例:通過搜索容器鏡像服務找到最下面的鏡像加速器,而右邊則是你的地址。

    // 具體教程可參考上圖 mkdir /etc/docker vim /etc/docker/daemon.json // 添加你的加速器地址 {"registry-mirrors":["https://xxxx.mirror.aliyuncs.com"]} // 保存并退出 systemctl daemon-reload systemctl restart 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的鏡像,通過右邊代碼進行獲取

    // 輸入復制代碼,即可pull對應的鏡像文件 docker pull hyperledger/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.sh
    releas-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相關的命令行來手動完成交易:

  • 先新建一名為channel1的通道,其中包含a用戶和b用戶,其初始余額為100和200;
  • 通過query查詢a此時的余額,返回結果100,說明初始化成功;
  • 通過invoke來新建一場交易記錄,調用智能合約example02,完成a向b轉10的操作;
  • 再次query查詢a此時余額,返回結果90,說明交易完成。
  • 具體細節如下圖:

    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..

    解決方法:獲取二進制文件

  • make release
    這里是說明fabric的作用,進入fabric文件,看到有個Makefile文件,通過make release可以編譯出二進制文件,輸出到$GOPATH下的bin/目錄中,但是,由于網絡問題,可能無法編譯成功
  • ./bootstrap.sh
    官方在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.0

    docker 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

    // 例子:刪除2.2版本,留下2.2.0版本 docker rmi hyperledger/fabric-ccenv:2.2

    具體如圖所示:

    或者一個比較直接的方法:修改network.sh內容,將其中對image的tag進行直接指定:修改此處:#default image tag

    總結

    以上是生活随笔為你收集整理的hyperledger/fabric-区块链快速入门教程+错误解决——良好用户体验的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。