天天看點

Fabric源碼分析之一概述和目錄

一、概述

本來随着春天的離去,區塊鍊的春天也更快的走了。但是,最高訓示一下子,讓幾乎在隆冬裡的區塊鍊步入了春天,不過,請擦亮眼睛,訓示的是區塊鍊中的聯盟鍊。在網上曾經說過,聯盟鍊是權力鍊。其實就可監管鍊。

在聯盟鍊中,本來就不多,畢竟這玩意不如搞公鍊來錢快。比較突出的就是IBM發起的Fabric,是以國内搞聯盟鍊的,可以說幾乎全部是以這個為主修改、完善或者擴充出來的。

Fabric做為聯盟鍊,要求有準入機制,在新的版本裡還增加了資料隐私保護和加密交易。相對于公鍊來說,支援的并發量較高,延遲也小(這個一定是的,聯盟鍊等于一個區域網路,相對公網來說,能不快啊)。

其設計上也有獨到之處,基本上所有的功能子產品都支援可插拔設計,就這一點,基本就完虐目前的公鍊了。當然做為聯盟鍊不用發币,控制通路和通信權限,安全性自然要高不少。最可貴的是原生就支援多種語言開發合約。

當然,他的缺點也是不少,主要的有,大量使用Docker,導緻對資源的要求相對公鍊來說要高不少。而且不像公鍊一般有一個節點就可以運作起來,而Fabric不管是Solo還是其它都需要相當多的節點。複雜的權限設計和分帳本存儲,組織和通道等,都增加了學習的難度和開發的難度。

正如一枚硬币的兩面性,仁者見仁,智者見智吧。

二、目錄說明

做為源碼分析的開篇,首先以源碼的目錄進行一下簡要的說明:

Fabric源碼分析之一概述和目錄

上面的目錄說明如下:

1、bccsp:加密子產品。所有與加密有關的,比如證書、簽名、哈希、橢圓曲線等都在這個子產品裡。前面說到了,Fabric高度子產品化,優勢展現之一就在這裡,如果想更換其它加密算法,隻要在這個子產品裡将接口重新繼承一下并完成相關的代碼即可。

2、cmd:這個類似于提供了一個用戶端,可以通過指令和Fabric互動。

3、common:公共庫,這個主要是相關的日志、錯誤、工具等。這裡面的彎彎繞挺多,在後面的代碼分析時遇到一個分析一個。

4、core:Fabric的相關核心子產品。包括背書、鍊碼等。

5、devnev:環境設定,Vagrant等相關。

6、discovery:用戶端及相關服務的支援

7、docs:相關文檔

8、examples:例程

9、gossip:網絡發現的通信協定

10、idemix:對IDEMIX的支援相關,和零知識證明相關,适用于開發環境。

11、images:打封包件

12、integration:行為驅動開發相關。

13、msp:成員服務管理,這個是用來在節點間通信的證書驗證管理的。不同的通道可以通過其來劃分開。

14、orderer:排序節點的相關子產品,用于處理區塊的打包處理。

15、peer:節點管理的子產品,包括通道、鍊碼等。

16、protos:相關的通信協定資料處理(protobuf)以及資料結構體。

17、release:釋出模闆

18、release_notes:版本疊代記錄

19、sampleconfig:基礎的配置檔案例子

20、script:相關應用服務的腳本

21、token:資産管理相關接口服務。

22、unit-test:Docker環境下的單元測試。

23、vendor:這個搞Go的都知道,用到的相關的第三方庫。

在這些檔案夾内還有更細分的一些檔案和檔案夾,在後面的具體子產品分析中,會一一展開說明。

三、總結

區塊鍊的“春風”是一股風還是春天到來的前奏,還得擦亮眼睛看一看,畢竟區塊鍊割韭菜的名聲早已在外。不過,趁着這個機會好好的把技術鑽研一下,肯定是好事兒。把聯盟鍊的整體結構、流程和相關的主要技術前沿充公掌握,對公鍊也是一種補充。Fabric、Quorum還有國内的基于以太坊的BCOS都是可以看看的。取其精華,去其糟粕。

繼續閱讀