1. 程式人生 > >Hyperledger Fabric1.0 整體結構

Hyperledger Fabric1.0 整體結構

管理 配置文件 erl pro 兩種 protobuf 許可 user ofo

整體結構

Hyperledger Fabric 在 1.0 中,架構已經解耦為三部分:

  • fabric-peer:主要起到 peer 作用,包括 endorser、committer 兩種角色;
  • fabric-ca:即原先的 membersrvc,獨立成一個新的項目。
  • fabric-order:起到 order 作用。

其中,fabric-peer 和 fabric-order 代碼暫時都在 fabric 項目中,未來可能進一步拆分。

核心代碼

fabric 項目中主要包括代碼、工具、腳本等部分,核心源代碼目前約為 430 個文件,80K 行。

$ cd fabric
$ find bccsp common core events gossip msp orderer peer protos     
-not -path "*/vendor/*" -name "*.go" -not -name "*_test.go" | wc -l 431 $ find bccsp common core events gossip msp orderer peer protos -not -path "*/vendor/*" -name "*.go" -not -name "*_test.go" | xargs cat | wc -l 80560

源代碼

實現 fabric 功能的核心代碼,包括:

  • bccsp 包:實現對加解密算法和機制的支持。
  • common 包:一些通用的模塊;
  • core 包:大部分核心實現代碼都在本包下。其它包的代碼封裝上層接口,最終調用本包內代碼;
  • events 包:支持 event 框架;
  • examples 包:包括一些示例的 chaincode 代碼;
  • gossip 包:實現 gossip 協議;
  • msp 包:Member Service Provider 包;
  • order 包:order 服務相關的入口和框架代碼;
  • peer 包:peer 的入口和框架代碼;
  • protos 包:包括各種協議和消息的 protobuf 定義文件和生成的 go 文件。

源碼相關工具

一些輔助代碼包,包括:

  • bddtests:測試包,含有大量 bdd 測試用例;
  • gotools:golang 開發相關工具安裝;
  • vendor 包:管理依賴;

安裝部署

包括:

  • busybox:busybox 環境,精簡的 linux;
  • devenv:配置開發環境;
  • images:鏡像生成模板等。
  • scripts:各種安裝配置腳本;

其它工具

其他工具,包括:

  • docs:文檔,大部分文檔都可以 在線查閱;

配置、腳本和文檔

除了些目錄外,還包括一些說明文檔、安裝需求說明、License 信息文件等。

Docker 相關文件

  • .baseimage-release:生成 baseimage 時候的版本號。
  • .dockerignore:生成 Docker 鏡像時忽略一些目錄,包括 .git 目錄。

git 相關文件

  • .gitattributes:git 代碼管理時候的屬性文件,帶有不同類型文件中換行符的規則,默認都為 linux 格式,即 \n
  • .gitignore:git 代碼管理時候忽略的文件和目錄,包括 build 和 bin 等中間生成路徑。
  • .gitreview:使用 git review 時候的配置,帶有項目的倉庫地址信息。
  • README.md:項目的說明文件,包括一些有用的鏈接等。

travis 相關文件

  • .travis.yml:travis 配置文件,目前是使用 golang 1.6 編輯,運行了三種測試:unit-test、behave、node-sdk-unit-tests。

其它

  • LICENSE:Apache 2 許可文件。
  • docker-env.mk:被 Makefile 引用,生成 Docker 鏡像時的環節變量。
  • Makefile:執行測試、格式檢查、安裝依賴、生成鏡像等操作。
  • mkdocs.yml:生成 http://hyperledger-fabric.readthedocs.io 在線文檔的配置文件。
  • TravisCI_Readme.md

來源:https://github.com/yeasy/hyperledger_code_fabric/blob/master/overview.md

Hyperledger Fabric1.0 整體結構