Fabric源码分析之一概述和目录

一、概述

本来随着春天的离去,区块链的春天也更快的走了。但是,最高指示一下子,让几乎在隆冬里的区块链步入了春天,不过,请擦亮眼睛,指示的是区块链中的联盟链。在网上曾经说过,联盟链是权力链。其实就可监管链。
在联盟链中,本来就不多,毕竟这玩意不如搞公链来钱快。比较突出的就是IBM发起的Fabric,所以国内搞联盟链的,可以说几乎全部是以这个为主修改、完善或者扩展出来的。
Fabric做为联盟链,要求有准入机制,在新的版本里还增加了数据隐私保护和加密交易。相对于公链来说,支持的并发量较高,延迟也小(这个一定是的,联盟链等于一个局域网,相对公网来说,能不快啊)。
其设计上也有独到之处,基本上所有的功能模块都支持可插拔设计,就这一点,基本就完虐目前的公链了。当然做为联盟链不用发币,控制访问和通信权限,安全性自然要高不少。最可贵的是原生就支持多种语言开发合约。
当然,他的缺点也是不少,主要的有,大量使用Docker,导致对资源的要求相对公链来说要高不少。而且不像公链一般有一个节点就可以运行起来,而Fabric不管是Solo还是其它都需要相当多的节点。复杂的权限设计和分帐本存储,组织和通道等,都增加了学习的难度和开发的难度。
正如一枚硬币的两面性,仁者见仁,智者见智吧。

二、目录说明

做为源码分析的开篇,首先以源码的目录进行一下简要的说明:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lCa014D3-1580265650670)(img/fabric-dir.png)]

上面的目录说明如下:
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都是可以看看的。取其精华,去其糟粕。

发布了104 篇原创文章 · 获赞 12 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/fpcc/article/details/104104940