<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Ubuntu Server搭建Hyperledger Fabric 2.1學習環(huán)境

          共 5318字,需瀏覽 11分鐘

           ·

          2020-10-24 22:01

          最近在學習Hyperledger Fabric,它是由 Linux 基金會發(fā)起創(chuàng)建的開源區(qū)塊鏈分布式賬本。

          Hyperledger Fabric是一個開源區(qū)塊鏈實現(xiàn),開發(fā)環(huán)境建立在 VirtualBox 虛擬機上,部署環(huán)境可以自建網(wǎng)絡,也可以直接部署在 BlueMix 上,部署方式可傳統(tǒng)可 Docker 化,共識達成算法插件化,支持用 Go 和 JavaScript 開發(fā)智能合約,尤以企業(yè)級的安全機制和 membership 機制為特色。

          今天來聊聊怎么搭建一個基于Ubuntu Server的Hyperledger Fabric吧。

          01 基本環(huán)境配置

          建議用虛擬機裝一個Ubuntu Server版本即可,不要裝圖形界面,那個太卡了。Ubuntu Server版本安裝的時候注意,選擇英文版本的,中文簡體安裝會出錯。

          安裝好后記得換源成阿里云的,這里換的時候由于虛擬機上不支持復制黏貼,只能手動輸入一下啦:

          deb?http://mirrors.aliyun.com/ubuntu/?xenial?main?restricted?universe?multiverse

          deb?http://mirrors.aliyun.com/ubuntu/?xenial-security?main?restricted?universe?multiverse

          deb?http://mirrors.aliyun.com/ubuntu/?xenial-updates?main?restricted?universe?multiverse

          deb?http://mirrors.aliyun.com/ubuntu/?xenial-proposed?main?restricted?universe?multiverse

          deb?http://mirrors.aliyun.com/ubuntu/?xenial-backports?main?restricted?universe?multiverse

          deb-src?http://mirrors.aliyun.com/ubuntu/?xenial?main?restricted?universe?multiverse

          deb-src?http://mirrors.aliyun.com/ubuntu/?xenial-security?main?restricted?universe?multiverse

          deb-src?http://mirrors.aliyun.com/ubuntu/?xenial-updates?main?restricted?universe?multiverse

          deb-src?http://mirrors.aliyun.com/ubuntu/?xenial-proposed?main?restricted?universe?multiverse

          deb-src?http://mirrors.aliyun.com/ubuntu/?xenial-backports?main?restricted?universe?multiverse

          換源后把下面的軟件裝上:

          • ssh
          • git
          • go
          • node.js
          • docker
          • docker-compose

          注意大部分只需要sudo apt-install即可安裝,go、docker這種百度一下就知道怎么裝了,就不展開講了。nodejs記得給升級到最新版本。

          02 fabric環(huán)境搭建

          現(xiàn)在網(wǎng)上關(guān)于fabric的教程大部分是基于1.4版本的,今天來演示下搭建2.1版本的Fabric環(huán)境進行學習。

          2.1 下載fabric源碼

          進入GO的目錄創(chuàng)建hyperledger文件夾:

          mkdir?-p?$GOPATH/src/github.com/hyperledger
          ?
          cd?$GOPATH/src/github.com/hyperledger/

          然后下載fabric的源碼,注意這里用碼云Gitee的鏈接,GitHub的太慢了得下到明年去:

          git?clone?https://gitee.com/mirrors/fabric.git

          不知道為啥我這gitee也好慢啊。。。

          將 fabric 切換至 2.1 版本:

          cd?fabric/
          ?
          git?branch?-a
          ?
          git?checkout?release-2.1

          記得加個sudo,沒有管理員權(quán)限啥都干不了。

          2.2 下載fabric-samples源碼、fabric鏡像

          cd?scripts/
          ?
          sudo?./bootstrap.sh

          然后就進入了漫長的等待了。fabric-samples是從GitHub上下載的,可能會比較慢。下載完成后會列出所有下載的docker鏡像。

          2.3 網(wǎng)絡測試

          上面的工作完成后,當前目錄多了一個fabric-samples文件夾,我們進去該目錄下的test-network目錄測試下搭建的環(huán)境是否成功:

          cd?fabric-samples/

          cd?test-network/

          然后啟動我們的測試網(wǎng)絡:

          sudo?./network.sh?up

          記得加sudo保平安哦。開始了一堆代碼之后出現(xiàn):

          說明創(chuàng)建成功了。

          03 Fabcar測試

          fabcar是一個小demo,我們這里運行它測試下看看。我們回到fabric-samples目錄下,然后進入/fabcar目錄中,先把網(wǎng)絡給清理一下,然后啟動:

          sudo?./networkDown.sh

          sudo?./startFabric.sh

          可能存在的問題

          問題1

          當然了你可能會遇到問題,比如找不到go命令等,這是因為sudo命令會重置當前的環(huán)境變量,導致設置go找不到。

          Error:?failed?to?normalize?chaincode?path:?failed?to?determine?module?root:?exec:?"go":?executable?file?not?found?in?$PATH
          !!!!!!!!!!!!!!!?Chaincode?packaging?on?peer0.org1?has?failed?!!!!!!!!!!!!!!!!

          根據(jù)網(wǎng)上解決sudo環(huán)境變量問題的方法,在自己的shell配置文件中如下設置

          vim ~/.bashrc 添加如下

          alias?sudo='sudo?env?PATH=$PATH?LD_LIBRARY_PATH=$LD_LIBRARY_PATH'

          然后刷新下讓配置生效:

          source?~/.bashrc

          問題2

          安裝golang fabric api依賴包的時候,長時間無響應,最后報如下錯誤:

          go:?github.com/hyperledger/[email protected]:?Get?https://proxy.golang.org/github.com/hyperledger/fabric-contract-api-go/@v/v1.0.0.mod:?dial?tcp?172.217.27.145:443:?i/o?timeout?~/fabric-samples/test-network?Finished?vendoring?Go?dependencies?++?peer?lifecycle?chaincode?package?fabcar.tar.gz?--path?../chaincode/fabcar/go/?--lang?golang?--label?fabcar_1?++?res=1?++?set?+x?Error:?failed?to?normalize?chaincode?path:?'go?list'?failed?with:?go:?github.com/hyperledger/[email protected]:?Get?https://proxy.golang.org/github.com/hyperledger/fabric-contract-api-go/@v/v1.0.0.mod:?dial?tcp?172.217.27.145:443:?i/o?timeout:?exit?status?1?!!!!!!!!!!!!!!!?Chaincode?packaging?on?peer0.org1?has?failed?!!!!!!!!!!!!!!!!

          ERROR?!!!?Deploying?chaincode?failed

          解決辦法:

          golang1.13.x 可以直接執(zhí)行:

          go?env?-w?GO111MODULE=on
          go?env?-w?GOPROXY=https://goproxy.cn,direct

          finally,終于成功了:

          04 SDK交互

          在上一步執(zhí)行成功后,會輸出各個語言環(huán)境下的SDK交互實例,比如JavaScript是這樣的:

          JavaScript:

          ??Start?by?changing?into?the?"javascript"?directory:
          ????cd?javascript

          ??Next,?install?all?required?packages:
          ????npm?install

          ??Then?run?the?following?applications?to?enroll?the?admin?user,?and?register?a?new?user
          ??called?appUser?which?will?be?used?by?the?other?applications?to?interact?with?the?deployed
          ??FabCar?contract:
          ????node?enrollAdmin
          ????node?registerUser

          ??You?can?run?the?invoke?application?as?follows.?By?default,?the?invoke?application?will
          ??create?a?new?car,?but?you?can?update?the?application?to?submit?other?transactions:
          ????node?invoke

          ??You?can?run?the?query?application?as?follows.?By?default,?the?query?application?will
          ??return?all?cars,?but?you?can?update?the?application?to?evaluate?other?transactions:
          ????node?query

          可以選擇javascript,typescript,javago語言與網(wǎng)絡交互,這里用javascript試試。進入fabcar中的javascript目錄中,這里得切換到root用戶,我也不知道sudo為什么還存在權(quán)限問題,執(zhí)行:

          cd?javascript/

          su

          npm?install

          安裝相關(guān)的依賴。完成后我們按照合約流程依次啟動:

          注冊管理員賬號:

          sudo?node?enrollAdmin.js

          注冊用戶:

          sudo?node?registerUser.js

          我們接下來,執(zhí)行一筆交易

          sudo?node?invoke.js

          查詢交易后的狀態(tài):

          sudo?node?query.js

          完成啦!!!至此,F(xiàn)abric的環(huán)境已經(jīng)搭建完成。大家可以在上面愉快的學習了。

          參考資料

          最新超詳細的 Hyperledger Fabric2.2 環(huán)境搭建部署

          https://blog.csdn.net/shengsikandan/article/details/107656060

          fabric2.1.0 打包chaincode 報錯

          https://blog.csdn.net/qq_32247229/article/details/108860823

          go 提示failed to normalize chaincode path

          https://www.jason-z.com/post/165

          ubuntu16.04下搭建fabric 1.4.3環(huán)境?

          https://blog.csdn.net/Sun_Hui_/article/details/100928155


          推薦閱讀:

          干貨 | 想學習優(yōu)化算法,不知從何學起?

          干貨 | 運籌學從何學起?如何快速入門運籌學算法?

          干貨 | 學習算法,你需要掌握這些編程基礎(包含JAVA和C++)

          干貨 | 算法學習必備訣竅:算法可視化解密

          干貨 | 模擬退火、禁忌搜索、迭代局部搜索求解TSP問題Python代碼分享

          記得點個在看支持下哦~
          瀏覽 55
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩性爱一区 | 我操综合网 | 艹逼影院| 久久久aaa| 久久久久国产精品夜夜夜夜夜 |