写在前面:
Hyperledger Fabric 这个项目很大,又涉及一些具体实现上的技术选择,Fabric 本身又涉及非常多的概念。面对这种大型项目时,我们初学者往往容易感到迷茫。
我个人觉得最好的学习方式是带着问题去学习,不断地解决主线问题,先把框架搭起来,对 Fabric 有个整体的认识,学有余力可以去深入研究某个支线。
我也是结合很多大佬的学习过程总结了如下的学习路线,希望可以帮助到大家。
一、基础
-
(了解基础的密码学知识:哈希、非对称加密、公钥基础设施)
-
理解 Fabric 的关键概念
-
什么是 peer、endorser、orderer?
-
什么时 anchor peer、leading peer?
-
什么是 智能合约、链码?
-
什么是 通道(channel)?
-
什么是 Execute-Order-Validation?与Order-Execute 有什么不同?各有什么好处?
-
初步了解一个 transaction 的生命周期:从 client 发起,到最终上链。
-
学习 Linux 的基本操作
-
学习 Docker 即 Docker Composer 的使用
-
在单机上使用现成的脚本搭建一个简单的区块链网络(比如经典的 BYFN,主要是为了验证环境配置成功)
-
去分步弄清楚第四步中部署的区块链网络是如何启动的
-
在区块链网络上部署一个智能合约,并进行简单测试
二、进阶
- 去弄明白第四步启动网络时的参数,比如
-
Dockerfile 文件里那些变量的意义
-
如何修改参数启动更多的 Org 和加入更多的 peer
-
将 Solo 单节点共识替换成其它生产环境下使用的共识机制,比如 Raft
-
了解 MSP:弄明白 Fabric 如何管理区块链网络中的身份
-
了解 背书策略(Endorsement Policy)
-
了解 private collection
-
了解 validation 阶段的 MVCC 做了什么,为什么会有 transaction 验证失败被标记为无效
-
学习如何编写智能合约(即开发应用)
-
学习如何多机器分布式部署(关键在于 Docker 网络配置)
-
学习使用 Caliper 测试 Fabric 的性能,并尝试调整 Fabric 的核心参数观察性能的变化
-
将 Raft 共识机制替换成 拜占庭共识(比如 BFT-SMaRt)
三、高阶
高阶主要是一些源码的东西
18. 学习 cryptogen 这个工具,知道 Fabric 里的CA系统是如何工作的
-
学习 Fabric 是如何注册、部署、启动链码的,链码容器如何与peer交互的
-
学习 MSP 和 Endorsement Policy 是如何工作的
-
学习 Gossip 模块
-
学习 VSCC 是如何工作的
-
学习如何进行冲突检测的,即 MVCC 模块是如何工作的
-
学习底层存储机制:
-
block 和 world state 是如何存储的?
-
多通道的数据底层是如何隔离的?
-
不同链码访问数据结构底层是如何隔离的?
自己也是还在学习之中,欢迎交流,peace~