Peer节点类型
--Endorser背书节点
用于背书签名
只有一部分节点是背书节点
--commit节点
用于保存区块
所有节点都是commit节点
--Leader节点
获取orderer服务节点生成的区块,广播给本组织中的其他节点
--Anchor锚节点
跨组织的数据交换
交易过程:
1、应用首先将交易提案发送给背书节点
2、如果是一个合法的交易提案,背书节点会模拟执行交易
- 不会对账本中的数据进行更改,也就是说不生成区块
3、模拟执行会产生一个提案响应返回给应用程序
4、应用程序接收到提案响应后,收集到足够的背书
- 将交易提案及提案响应
- 打包生成真正的交易请求
- 将该交易请求发送给orderer服务节点
5、orderer服务节点根据接收到的请求根据时间进行排序,生成区块
6、orderer服务节点将生成的区块通过Gossip协议广播给leader节点
7、Leader节点执行VSCC
- 验证交易是否合法,提交的请求格式是否正确,版本号是否一致
- 节点是否在指定的通道中
- <font color=red>验证区块只在leader节点中验证</font>
8、保存区块至链中
9、通过Gossip协议广播给组织内的其他节点
10、通过anchor节点通知其他组织
一些补充:
fabric账本:leverdb、couchdb
fabric中的数据库
-
stateDB:状态数据库 –保存最新的状态数据
-
Block Index:区块索引数据库 –区块编号,交易ID
-
History Index:历史数据库
orderer节点通过Gossip
广播时,使用gRPC
框架中的protobuf
将区块序列化