1. 程式人生 > >【視頻】超級賬本HyperLedger:Fabric源碼走讀(一):項目構建與代碼結構

【視頻】超級賬本HyperLedger:Fabric源碼走讀(一):項目構建與代碼結構

lag flag mes ins ima mar over tag docke

作者: 李佶澳 轉載請保留:原文地址 發布時間:2018/11/18 14:26:00

  • 說明
  • 編譯方法
  • make peer
  • make release 和 make release-all
  • 後續

說明

這是網易雲課堂“IT技術快速入門學院”使用的素材。系列文章可以在系列教程匯總中找到。

這裏梳理一下HyperLedger Fabric項目的代碼結構。

這裏分析的代碼是Fabric 1.3:

git clone https://github.com/hyperledger/fabric.git
git branch release-1.3 -t origin/release-1.3
git checkout  release-1.3

下載代碼後,先用dep命令更新一下依賴代碼,需要翻qiang:

dep ensure

dep命令的使用參考:Go語言簡明手冊:依賴代碼管理

編譯方法

在開始之前,先了解一下fabric項目是如何編譯的,這樣才能知道要從哪裏開始看代碼,修改的代碼要怎樣生效的。

fabric的README.md文件中沒有介紹編譯的方法,通過查看Makefile文件,得知可以用以下命令:

make all          # 編譯所有目標,並進行測試
make peer         # 編譯某一個組件
make release      # 為當前平臺編譯所有組件
make release-all  # 為所有支持的目標平臺編譯所有組件
...

Makefile中一些變量的含義,可以到make:編譯管理工具make與makefile中查找。

make peer

執行一些make peer:

$ make peer
.build/bin/peer
CGO_CFLAGS=" " GOBIN=/Users/lijiao/Work/Bin/gopath/src/github.com/hyperledger/fabric/.build/bin go install -tags "" -ldflags "-X github.com/hyperledger/fabric/common/metadata.Version=1.3.1 -X github.com/hyperledger/fabric/common/metadata.CommitSHA=6c073551a -X github.com/hyperledger/fabric/common/metadata.BaseVersion=0.4.13 -X github.com/hyperledger/fabric/common/metadata.BaseDockerLabel=org.hyperledger.fabric -X github.com/hyperledger/fabric/common/metadata.DockerNamespace=hyperledger -X github.com/hyperledger/fabric/common/metadata.BaseDockerNamespace=hyperledger -X github.com/hyperledger/fabric/common/metadata.Experimental=false" github.com/hyperledger/fabric/peer
Binary available as .build/bin/peer

可以看到peer對應的源代碼目錄是github.com/hyperledger/fabric/peer

其它組件類似

make release 和 make release-all

編譯後的組件位於release目錄中,每個平臺一個目錄:

$ ls release/darwin-amd64/bin/
configtxgen          discover             orderer
configtxlator        get-docker-images.sh peer
cryptogen            idemixgen

後續

編譯過程很簡單,代碼入口也很找,一眼就看明白了。視頻HyperLedger Fabric進階實戰課中稍微展開講了下,主要針對對編譯過程沒有感性認識的朋友。

後續抽時間看代碼,會在這裏補充一些內容,當然重要的內容會開新的頁面記錄。

【視頻】超級賬本HyperLedger:Fabric源碼走讀(一):項目構建與代碼結構