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并不是很友好。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值