fabric v1.1 交易流程
1. 客户端节点构造好交易提案,提交到背书节点。提交提案的顺序没有要求
2. 背书节点接收到提案,模拟交易并签名
首先会做一些验证,比如:交易提案的格式是否正确,交易是否被重复提交,提案签名是否正确,是否有权限提交提案。
验证通过,会提交到 chaincode隔离模拟执行,将结果返回到客户端。
3.返回执行结果
客户端会对消息进行验证,如果验证通过,才会进行后续操作。
如果是查询交易,就没有对账本产生状态的影响,客户端拿到返回值,作为下一步业务逻辑的判断依据。
如果是写的交易,客户端就要收集到足够的背书结果,然后将交易提案,背书结果,再加上自己的签名合起来,组成一个交易,将其发送给 orderer节点。
4.提交交易(模拟执行结果+签名)
如果客户端提交了背书结果不一致的交易,排序节点也不会发现,因为排序节点并不读取交易的内容,只是负责接收网络中的交易,然后对其进行排序。
5.交易排序并结块
按照指定的排序规则进行排序,并生成区块
6.广播区块
将区块广播给其他组织的主节点
7.保存区块更新交易
主节点接收到区块以后,会在记账的过程中去验证该笔交易是否有效,如果无效的话,会被标记处无效交易。该无效交易并不会被丢弃,只是不会更新到世界状态,所以无效交易只会浪费磁盘空间。
8.同步交易
在组织内部区块同步,通过gossip协议
9.保存区块更新交易
在记账节点保存区块,更新交易
fabric 网络拓扑图
本作品采用《CC 协议》,转载必须注明作者和本文链接