如果多个交易在Hyperledger Fabric的同一区块中更改相同资产,将会发生什么变化?

时间:2018-12-02 15:51:43

标签: hyperledger-fabric

我对理解以下用例感到有些困惑:

让我们假设,同一区块中有多个交易正在改变同一资产的状态,那么在Hyperledger Fabric的共识周期中会发生什么?

  • 封锁将被拒绝
  • 区块中的第一笔交易将成功,但其余部分将失败

请帮助我了解这种极端情况。

1 个答案:

答案 0 :(得分:3)

织物共识涉及多个方面:

  1. 调用链码功能并获得足够的认可 (通常是签名)以通过调用来满足背书策略 链码并接收正确数量的响应 同行
  2. 将交易提交给在交易顺序上达成共识的订购服务节点,然后将其打包成块
  3. 订购节点将交易广播到对等节点,然后对等节点验证交易并提交有效交易的状态更改

对等方通过检查以确保每个交易都符合所调用链码的背书策略来验证交易,然后检查每个交易的读取集以确保读取的每个密钥的版本链码未更改。如果已更改,则将事务标记为无效,并且不处理其写集(状态更改)。事务仍然保留在块中,但是用指示该块中每个事务状态的元数据注释该块。验证和提交逻辑是确定性的。

您应该通读文档中的Transaction FlowRead-Write set semantics,以获取较低级别的详细信息。