Fabric开发(四)Fabric源码赏析

前面几章,我们从网络搭建,系统编译,执行一个demo的角度,体验了facbic系统,我们从整体认识了fabric。

在公链领域,有BTC,ETH,EOS等优秀的开源项目,我们对这些源码都有阅读,在联盟链领域,比较突出的就是IBM发起的fabric,fabric做为联盟链,要求有准入机制,在新的版本里还增加了数据隐私保护和加密交易。相对于公链来说,支持的并发量较高,延迟也小。

系统设计的独到之处在于,可插拔的模块设计,方便的适用各种环境。并有权限访问机制。提高系统的安全机制。支持多语言开发智能合约。但是也有一些缺点,复杂的权限设计和分帐本存储,组织和通道等,都增加了学习的难度和开发的难度。

今天,我们开始进入fabric源码赏析。我们先从目录结构,解释一下各个目录结构的内容,方便大家一个个模块的理解。

  1. bccsp:加密模块。所有与加密有关的,比如证书、签名、哈希、椭圆曲线等都在这个模块里。前面说到了,Fabric高度模块化,优势体现之一就在这里,如果想更换其它加密算法,只要在这个模块里将接口重新继承一下并完成相关的代码即可。

    • 主要包含 factory 工厂包,mocks 模拟测试包,加解密关联包 pkcs11、signer 签名包、sw 加解密实现包以及工具包 utils。
    • factory 工厂包,主要描述了 sw 工厂的实现,pkcs11 的工厂方法实现,同时还包含了一部分 opts 的实现。
    • pkcs11 实现包,主要描述了对于标准算法的实现。
    • signer 签名包,主要描述了签名者相关实现。
    • sw 实现包,主要描述了可插拔式自定制算法的实现。
    • utils 工具包,主要描述了其他相关工具的实现。
    • 核心包之 BCCSP(区块链加密服务提供者)包之 factory 工厂包,提供工厂模式支持,将来包括若干类型的 BCCSP 实现。
  2. cmd:这个类似于提供了一个客户端,可以通过命令和Fabric交互。

  3. common:公共库,这个主要是相关的日志、错误、工具等。这里面的弯弯绕挺多,在后面的代码分析时遇到一个分析一个。

  4. core:Fabric的相关核心模块。包括背书、链码等。

  5. devnev:环境设置,Vagrant等相关。

  6. discovery:客户端及相关服务的支持。

  7. docs:相关文档

  8. script:例程,相关应用服务的脚本,早期版本将例程放在 examples下,后续版本,合并在script文件夹里。

  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. token:资产管理相关接口服务。

  21. vendor:用到Go的相关的第三方库。

我们先对第一层目录功能了解后,后续我们就可以挑选内容开始赏析源码。

后续我会在很多个篇幅,给大家分享,这些包的源码赏析。与大家共同学习。
谢谢大家,希望能够帮助到大家。

你可能感兴趣的:(区块链开发,区块链,技术篇,区块链)