随着区块链技术的日益普及,Hyperledger Fabric作为一种联盟链解决方案,受到了广泛关注。那么,Fabric的交易流程究竟是怎样的呢?本文将为您一一揭晓。
1. Fabric交易的参与方
-
客户端:交易流程的发起方,发起交易提案。
-
背书节点:负责对客户端发起的提案进行验证,确认提案无误后对提案进行签名背书。
-
排序节点:对背书通过后的交易提案按时间顺序进行排序,排序后将交易提案打包发送给各组织节点。
-
组织节点:对打包后的区块进行验证,校验无误后打包上链。
2. Fabric交易流程概览
Fabric的交易流程主要包括以下几个步骤:提案(Proposal)、背书(Endorsement)、提交交易(Submit Transaction)、验证和提交(Validation & Committing)。
2.1. 客户端发起提案
客户端创建交易请求,通过SDK发起向背书节点(endorse peer)发出交易提案,提案并行发送,有多少个背书节点就发送多少次提案。
2.2. 背书节点对提案背书
背书节点对客户端发送的提案进行验证。验证规则包括:
-
交易提案的格式完整
-
验证该交易提案之前没有被提交过(重放攻击保护)
-
验证签名是有效的(使用 MSP)
-
验证发起者
验证通过后,背书节点会模拟执行提案中的交易,生成交易响应值、读集和写集,然后将这些结果进行签名,将签名和响应值一起作为提案响应返回给客户端SDK,SDK解析响应。
读集和写集:读集和写集都是键值对数组形式,读集中包括本次交易要读取的资产的key和其对应的版本,写集中包括本次交易要插入、更新、删除的资产的key和其对应的value。
2.3. 将提案发送给排序服务
客户端SDK检查背书响应签名是否正确,校验通过后,如果提案只进行查询操作则提案不会发送给排序服务。如果提案中包括了更新操作,则客户端SDK会校验背书响应是否满足了背书策略(策略包括大部分背书节点都通过、全部背书节点都通过等)。
如果满足了背书策略则SDK会将背书后的交易提案发送给排序节点,排序节点会将交易提案按时间顺序排列,打包成交易(交易会包含读写集,背书节点的签名和通道 ID)发送给各组织的peer节点。
2.4. 交易上链
组织peer节点会对交易进行验证,校验交易是否满足了背书策略。交易中背书策略满足,交易中的读集中的变量在交易过程中没有发生变化,则认为本次交易是有效的,否则认为本次交易无效。
2.5. 账本更新
每个 Peer 节点都将区块追加到通道的链上,对于每个有效的交易,写集都提交到当前状态数据库。区块链系统会发出一个事件,通知客户端应用程序本次交易(调用)已被不可更改地附加到链上,同时还会通知交易验证结果是有效还是无效。
3. 交易泳道图
这一流程确保了交易的有序性、安全性和可信度,是Fabric作为联盟链解决方案的核心机制。掌握这些知识,将有助于您更好地理解和应用Fabric技术。