超级账本交易提交

hyperledger transaction commit

如果"As the evaluation of the endorsement policy and evaluation of version dependencies in readset are deterministic, all correct peers will also come to the same conclusion",只有一个节点就足以验证/提交交易。我们必须将交易发送给所有节点,主要是因为这些节点必须更新它们的状态。是真的吗?

你是对的。您有一个分布式账本,因此所有交易都必须发送到所有对等点(发送到该对等点上的领导节点),以便它们可以保留相同的副本。

在 Hyperledger Fabric 中,排序服务对此进行管理,在生产中,这应该是 Kafka。

We have to send the transacion to all peers mostly because these peers must update their states. Is it true?

我不是 100% 确定你说 "send the transaction to all peers" 是什么意思,但让我澄清一下。

  1. 您或更具体的客户端应用程序必须将您的交易发送给同行,以便它满足链码背书政策。

  2. 背书节点将模拟交易执行,return结果以 RWSet + 签名的形式发送给客户端。

  3. 客户端收集所有签名与RWset结果连接并提交给排序服务

  4. 排序服务收集许多由不同客户端提交的交易,并偶尔切块。

  5. 块已交付给领导节点并分发到通道中的所有节点。

  6. 每个节点独立地遍历区块中的所有交易以验证两件事:a)与背书策略的一致性; b) MVCC - 多值并发控制,检查并发修改。

  7. 一旦交易被验证,块最终被提交到账本。