Hyperledger Fabric如何处理链码的同一“键-值”对的“调用”并发?

威尔·Z

例如,两个应用程序正在连接一个链码,如果几乎同时请求“调用”同一“键值对”链码对的动作,会发生什么?

如果这是Hyperledger Fabric的噩梦,我们该如何应对?在Hyperledger core.yaml设置的一边?还是链码设计的一面?

注意:第一个答案是与Fabric v0.6相关的。Fabric v1使用不同的机制。这些步骤是(据我所知):

  1. 客户将交易发送给背书人。
  2. 背书人执行交易,生成世界状态键/值更改集,称为“读/写集”。背书人将结果返回给客户。
  3. 客户收到所有人的回应,并将结果和R / W Set与认可政策进行比较。
  4. 客户将成功的认可转发给订购服务,该服务从一组交易中创建块。
  5. 订购服务将完整的块转发给所有提交者(认可者,观察者等)。
  6. 每个提交者按顺序应用事务的R / W集,并随着时间的推移更新每个读取密钥的版本(显然使用哈希图)。提交每个集合时,它将对读取集中的每个密钥的版本进行检查,以使密钥版本不得小于当前版本号。

注意:与v0.6相比,这是一个重大更改,即使在调用的情况下,也只能通过读取看到完全提交的事务!如果存在任何键冲突,则交易将在最后一刻失败没有发出链码事件,但失败记录在最后一个块中。世界状态更改丢失,客户必须重新提交交易!

解决此问题的方法是设计链码,使其不对每个资产使用共享密钥,或者设计客户端,以在资产级别(或很可能同时在资产级)对流控制API调用(链码事件,无论您要调用的是什么)进行流控。

因此,原始问题的答案是,事务都可以在v0.6 Fabric上正常工作,并且第一个事务可以工作,但是如果Fabric v1上的事务发送得太近(并且同时发送得太近),则第二个事务在Fabric v1上将失败。

显然,当没有关键冲突时,两者始终有效(假设交易通过了共识并且具有确定性,就像在所有背书人上产生相同的结果一样)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Hyperledger Fabric 2.0提交的链码调用/查询中的错误

来自分类Dev

Hyperledger Fabric,停止并行链码执行

来自分类Dev

如何使用 Hyperledger Fabric 部署链代码?

来自分类Dev

Hyperledger Fabric区块链信息

来自分类Dev

CentOS 上的 Hyperledger Fabric 1.0 背书链码时出错?

来自分类Dev

hyperledger Fabric 链码开发模式连接错误

来自分类Dev

使用链码在 HyperLedger Fabric 上创建令牌

来自分类Dev

Kubernetes 中的 Hyperledger Fabric:无法实例化链码

来自分类Dev

在Hyperledger中,在链码部署和调用,查询上究竟发生了什么?

来自分类Dev

呼叫合同以HYPERLEDGER Fabric中的链码形式形成另一个合同

来自分类Dev

Hyperledger Fabric:如何在JS / Node中使用链码捕获事务错误?

来自分类Dev

【Hyperledger Fabric】不能向对等体发送调用请求

来自分类Dev

Hyperledger fabric Crypto materials

来自分类Dev

Hyperledger Fabric的ChannelCreationPolicy

来自分类Dev

Hyperledger Fabric 通道

来自分类Dev

Hyperledger Fabric 中的 GOPATH

来自分类Dev

如何处理多个调用同一功能的Ajax调用?

来自分类Dev

如何对Hyperledger Fabric进行审核?

来自分类Dev

查看Hyperledger Fabric中的区块链块

来自分类Dev

如何安装hyperledger?

来自分类Dev

无法使用 Hyperledger Fabric v1.0.0 链码查询所有历史/计数数据

来自分类Dev

Hyperledger Fabric installChaincode 错误安装链码请求中缺少对等对象

来自分类Dev

Hyperledger Fabric 链码错误:无法引用未导出的名称 shim.success

来自分类Dev

Hyperledger Fabric:错误:无法组装交易,消息链码注册失败:容器以 127 退出

来自分类Dev

Hyperledger Fabric-Fabcar性能

来自分类Dev

Hyperledger Fabric 2.1 Chaincode安装

来自分类Dev

Hyperledger Fabric活动交付保证

来自分类Dev

Hyperledger Fabric 上的 Gossip 协议

来自分类Dev

Hyperledger Fabric cli 容器的作用

Related 相关文章

  1. 1

    使用Hyperledger Fabric 2.0提交的链码调用/查询中的错误

  2. 2

    Hyperledger Fabric,停止并行链码执行

  3. 3

    如何使用 Hyperledger Fabric 部署链代码?

  4. 4

    Hyperledger Fabric区块链信息

  5. 5

    CentOS 上的 Hyperledger Fabric 1.0 背书链码时出错?

  6. 6

    hyperledger Fabric 链码开发模式连接错误

  7. 7

    使用链码在 HyperLedger Fabric 上创建令牌

  8. 8

    Kubernetes 中的 Hyperledger Fabric:无法实例化链码

  9. 9

    在Hyperledger中,在链码部署和调用,查询上究竟发生了什么?

  10. 10

    呼叫合同以HYPERLEDGER Fabric中的链码形式形成另一个合同

  11. 11

    Hyperledger Fabric:如何在JS / Node中使用链码捕获事务错误?

  12. 12

    【Hyperledger Fabric】不能向对等体发送调用请求

  13. 13

    Hyperledger fabric Crypto materials

  14. 14

    Hyperledger Fabric的ChannelCreationPolicy

  15. 15

    Hyperledger Fabric 通道

  16. 16

    Hyperledger Fabric 中的 GOPATH

  17. 17

    如何处理多个调用同一功能的Ajax调用?

  18. 18

    如何对Hyperledger Fabric进行审核?

  19. 19

    查看Hyperledger Fabric中的区块链块

  20. 20

    如何安装hyperledger?

  21. 21

    无法使用 Hyperledger Fabric v1.0.0 链码查询所有历史/计数数据

  22. 22

    Hyperledger Fabric installChaincode 错误安装链码请求中缺少对等对象

  23. 23

    Hyperledger Fabric 链码错误:无法引用未导出的名称 shim.success

  24. 24

    Hyperledger Fabric:错误:无法组装交易,消息链码注册失败:容器以 127 退出

  25. 25

    Hyperledger Fabric-Fabcar性能

  26. 26

    Hyperledger Fabric 2.1 Chaincode安装

  27. 27

    Hyperledger Fabric活动交付保证

  28. 28

    Hyperledger Fabric 上的 Gossip 协议

  29. 29

    Hyperledger Fabric cli 容器的作用

热门标签

归档