Hyperledger fabric Hyperledger结构:错误:无法组装事务:ProposalResponsePayloads不匹配

Hyperledger fabric Hyperledger结构:错误:无法组装事务:ProposalResponsePayloads不匹配,hyperledger-fabric,Hyperledger Fabric,尝试调用链码时,以下错误的故障排除步骤是什么 Error: could not assemble transaction: ProposalResponsePayloads do not match - proposal response: version:1 response:<status:200 payload:"[\"00000\"]" > ... 当尝试使用对等链码调用调用链码时,会出现此错误。请检查您是否已在对等链码调用命令所针对的所有对等方上安装了链码。这是这个错误最

尝试调用链码时,以下错误的故障排除步骤是什么

Error: could not assemble transaction: ProposalResponsePayloads do not match - proposal response: version:1 response:<status:200 payload:"[\"00000\"]" > ...

当尝试使用对等链码调用调用链码时,会出现此错误。请检查您是否已在对等链码调用命令所针对的所有对等方上安装了链码。这是这个错误最可能的原因

发生此错误的其他方式:

您修改了链码,并没有安装新版本和升级链码,而是尝试聪明地使用新文件覆盖链码,认为Fabric不会注意到

如果目标对等节点上没有运行链码容器,并且对等节点上无法找到Docker守护进程(当它尝试实例化容器时),或者由于其他原因实例化失败,也可能发生这种情况

发生此错误的另一个原因是,如果某些对等节点正在使用LevelDB,而其他节点正在使用CouchDB


错误本身源于。调试此错误的第一步是每次在一个对等节点上逐个调用链码

检查您是否已在对等链码调用命令所针对的所有对等方上安装链码。这是这个错误最可能的原因

发生此错误的其他方式:

您修改了链码,并没有安装新版本和升级链码,而是尝试聪明地使用新文件覆盖链码,认为Fabric不会注意到

如果目标对等节点上没有运行链码容器,并且对等节点上无法找到Docker守护进程(当它尝试实例化容器时),或者由于其他原因实例化失败,也可能发生这种情况

发生此错误的另一个原因是,如果某些对等节点正在使用LevelDB,而其他节点正在使用CouchDB


错误本身源于。调试此错误的第一步是每次在一个对等节点上逐个调用链码

@morpheus:回答得很好:

因此,我将在上面列出可能的原因:

我错误地添加了获取当前时间戳之类的内容,并使用它来捕获事件日期。这导致背书人的不同交易响应,从而导致响应负载不匹配。需要记住的一点是,执行的结果应该是确定的,因为它将在所有选定的背书对等机上运行


因此,使用ctx.GetStub.GetTxTimestamp捕获事件时间。这是交易开始的时间,在背书人执行期间,交易将保持不变。

@morpheus:回答得很好:

因此,我将在上面列出可能的原因:

我错误地添加了获取当前时间戳之类的内容,并使用它来捕获事件日期。这导致背书人的不同交易响应,从而导致响应负载不匹配。需要记住的一点是,执行的结果应该是确定的,因为它将在所有选定的背书对等机上运行


因此,使用ctx.GetStub.GetTxTimestamp捕获事件时间。这是交易开始的时间,在背书人执行期间它将保持不变

我忘记检查的另一个原因是使用存储随机生成的值


直到现在我才使用随机Id,也没有注意到它会导致背书不匹配

我忘记检查的另一个原因是使用存储随机生成的值


直到现在我才使用随机Id,也没有注意到它会导致背书不匹配

谢谢!在成功执行对链码的请求时,我愚蠢地在响应中返回一个时间戳。这导致不同的同行创建了不同的交易方案,一段时间以来,他们一直在努力确定这个问题。谢谢!我一直在使用时间。现在在我的链码之前没有任何问题。但是在Fabric 2.2.2上部署此代码已经不可能了。解决方案是使用ctx.GetStub.GetTxTimestamp。谢谢!在成功执行对链码的请求时,我愚蠢地在响应中返回一个时间戳。这导致不同的同行创建了不同的交易方案,一段时间以来,他们一直在努力确定这个问题。谢谢!我一直在使用时间。现在在我的链码之前没有任何问题。但是在Fabric 2.2.2上部署此代码已经不可能了。解决方案是使用ctx.GetStub.GetTxTimestamp。