Fabric区块链调用出现Bad newest block expected status 200 got 400异常原因

今天在进行Fabric区块链上进行交易提交时出现一个异常信息:

org.hyperledger.fabric.sdk.exception.TransactionException: Bad newest block expected status 200  got  400, Channel xxxxxx
    at org.hyperledger.fabric.sdk.Channel.seekBlock(Channel.java:1216)
    at org.hyperledger.fabric.sdk.Channel.getLatestBlock(Channel.java:1274)
    at org.hyperledger.fabric.sdk.Channel.getLastConfigIndex(Channel.java:1097)
    at org.hyperledger.fabric.sdk.Channel.getConfigurationBlock(Channel.java:1028)
    at org.hyperledger.fabric.sdk.Channel.parseConfigBlock(Channel.java:949)
    at org.hyperledger.fabric.sdk.Channel.initialize(Channel.java:676)
    at com.cmit.fabric.java.sdk.test.bean.ChaincodeManager.getChannel(ChaincodeManager.java:144)
    at com.cmit.fabric.java.sdk.test.bean.ChaincodeManager.getChannel(ChaincodeManager.java:90)
    at com.cmit.fabric.java.sdk.test.bean.ChaincodeManager.<init>(ChaincodeManager.java:69)
    at com.cmit.fabric.java.sdk.test.util.FabricManager.<init>(FabricManager.java:89)
    at com.cmit.fabric.java.sdk.test.util.FabricManager.obtain(FabricManager.java:42)
    at com.cmit.fabric.java.sdk.test.service.impl.SectionSDKServiceImpl.createSection(SectionSDKServiceImpl.java:69)
    ... 71 more

在查看了fabric-sdk-java代码后没有发现有什么问题(话说人家官方给提供的代码会有这么明显的问题吗。。。我也真是服了自己。。。)
后来到orderer节点主机查看日志(docker logs -f xxxxxxxx,xxxxxxxx表示orderer节点名称),发现一条WARN信息:

 Rejecting deliver for 192.168.xxx.xx:xxxxxx due to envelope validation error: timestamp 2018-06-21 02:06:09.483 +0000 UTC is more than the 15m0s time window difference above/below server time 2018-06-21 01:50:59.056241689 +0000 UTC m=+145964.729785586. either the server and client clocks are out of sync or a relay attack has been attempted

感觉应该是本地主机时间和远程(orderer节点)主机时间差超过了15分钟,导致Fabric区块链对交易提交进行时间校验,最终交易失败。在调整本地主机时间后,再次运行程序,交易被成功提交上去,证实主机之间的时间差是会造成出现org.hyperledger.fabric.sdk.exception.TransactionException: Bad newest block expected status 200 got 400异常信息。
特此记录问题,以备后用!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值