一、概述
本來随着春天的離去,區塊鍊的春天也更快的走了。但是,最高訓示一下子,讓幾乎在隆冬裡的區塊鍊步入了春天,不過,請擦亮眼睛,訓示的是區塊鍊中的聯盟鍊。在網上曾經說過,聯盟鍊是權力鍊。其實就可監管鍊。
在聯盟鍊中,本來就不多,畢竟這玩意不如搞公鍊來錢快。比較突出的就是IBM發起的Fabric,是以國内搞聯盟鍊的,可以說幾乎全部是以這個為主修改、完善或者擴充出來的。
Fabric做為聯盟鍊,要求有準入機制,在新的版本裡還增加了資料隐私保護和加密交易。相對于公鍊來說,支援的并發量較高,延遲也小(這個一定是的,聯盟鍊等于一個區域網路,相對公網來說,能不快啊)。
其設計上也有獨到之處,基本上所有的功能子產品都支援可插拔設計,就這一點,基本就完虐目前的公鍊了。當然做為聯盟鍊不用發币,控制通路和通信權限,安全性自然要高不少。最可貴的是原生就支援多種語言開發合約。
當然,他的缺點也是不少,主要的有,大量使用Docker,導緻對資源的要求相對公鍊來說要高不少。而且不像公鍊一般有一個節點就可以運作起來,而Fabric不管是Solo還是其它都需要相當多的節點。複雜的權限設計和分帳本存儲,組織和通道等,都增加了學習的難度和開發的難度。
正如一枚硬币的兩面性,仁者見仁,智者見智吧。
二、目錄說明
做為源碼分析的開篇,首先以源碼的目錄進行一下簡要的說明:
上面的目錄說明如下:
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都是可以看看的。取其精華,去其糟粕。