超級賬本HyperLedger:Fabric原始碼走讀(一):專案構建與程式碼結構
說明
這是網易雲課堂“ofollow,noindex" target="_blank">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 checkoutrelease-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/ configtxgendiscoverorderer configtxlatorget-docker-images.sh peer cryptogenidemixgen