当前位置:   article > 正文

fabric 遇到的坑(一)共识问题_fabric 随机数

fabric 随机数

共识失败的出现得最多的原因是,各个节点根据读写集模拟的结果不一致。

智能合约四宗“罪” ,时间戳 ,随机数,外部依赖,分布式

1.

fabric 里面随机数和时间戳这些可能产生变动的东西会导致多节点间共识失败。

但是并不是所有的随机数产生方式和时间戳都会导致多节点间不一致。

例如:math/rand 所产生的随机数能在多个节点间保持一致

通过ChaincodeStubInterface 获取stub.GetTxTimestamp()所产生的时间戳也会在多个节点间保持一致,

如果使用的 time.now().unix()获取的时间戳并不能保证在多节点间一致,可能会导致共识失败。

2.

智能合约版本问题

各个节点间,chaincode的版本不一致导致共识失败

智能合约安装升级后,部分节点还没有完成实例化,这种情况下去调用合约,会导致不一致

可以通过 peer chaincode list --instantiated -C channel_name 可以查看到该节点的已经实例化的合约以及版本

也可以通过 peer chaincode list --installed 查看已安装的chaincode 以及版本,进行对比。

3.

在一个方法内对同一个KEY进行getState和putState在并发量高的情况下, 会出现共识失败的风险,并发访问的问题,fabric并不是很友好。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/169215
推荐阅读
相关标签
  

闽ICP备14008679号