<kbd id="5sdj3"></kbd>
<th id="5sdj3"></th>

  • <dd id="5sdj3"><form id="5sdj3"></form></dd>
    <td id="5sdj3"><form id="5sdj3"><big id="5sdj3"></big></form></td><del id="5sdj3"></del>

  • <dd id="5sdj3"></dd>
    <dfn id="5sdj3"></dfn>
  • <th id="5sdj3"></th>
    <tfoot id="5sdj3"><menuitem id="5sdj3"></menuitem></tfoot>

  • <td id="5sdj3"><form id="5sdj3"><menu id="5sdj3"></menu></form></td>
  • <kbd id="5sdj3"><form id="5sdj3"></form></kbd>

    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ū)塊鏈實現,開發(fā)環(huán)境建立在 VirtualBox 虛擬機上,部署環(huán)境可以自建網絡,也可以直接部署在 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)境搭建

    現在網上關于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,沒有管理員權限啥都干不了。

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

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

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

    2.3 網絡測試

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

    cd?fabric-samples/

    cd?test-network/

    然后啟動我們的測試網絡:

    sudo?./network.sh?up

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

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

    03 Fabcar測試

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

    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?!!!!!!!!!!!!!!!!

    根據網上解決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語言與網絡交互,這里用javascript試試。進入fabcar中的javascript目錄中,這里得切換到root用戶,我也不知道sudo為什么還存在權限問題,執(zhí)行:

    cd?javascript/

    su

    npm?install

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

    注冊管理員賬號:

    sudo?node?enrollAdmin.js

    注冊用戶:

    sudo?node?registerUser.js

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

    sudo?node?invoke.js

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

    sudo?node?query.js

    完成啦?。?!至此,Fabric的環(huán)境已經搭建完成。大家可以在上面愉快的學習了。

    參考資料

    最新超詳細的 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="5sdj3"></kbd>
    <th id="5sdj3"></th>

  • <dd id="5sdj3"><form id="5sdj3"></form></dd>
    <td id="5sdj3"><form id="5sdj3"><big id="5sdj3"></big></form></td><del id="5sdj3"></del>

  • <dd id="5sdj3"></dd>
    <dfn id="5sdj3"></dfn>
  • <th id="5sdj3"></th>
    <tfoot id="5sdj3"><menuitem id="5sdj3"></menuitem></tfoot>

  • <td id="5sdj3"><form id="5sdj3"><menu id="5sdj3"></menu></form></td>
  • <kbd id="5sdj3"><form id="5sdj3"></form></kbd>
    天天视频国产 | 91麻豆精品秘密秘 入口-百度 | 久久加勅比 | 深爱五月激情 | 天天搞B网 |