Transactions contract.evaluateTransaction(fcn,args)是否在对背书对等方的查询期间进行事务处理?

Transactions contract.evaluateTransaction(fcn,args)是否在对背书对等方的查询期间进行事务处理?,transactions,hyperledger-fabric,hyperledger,peer,hyperledger-chaincode,Transactions,Hyperledger Fabric,Hyperledger,Peer,Hyperledger Chaincode,我正在使用hyperledger fabric 1.4,在使用node sdk Wait contract进行查询时遇到了一个问题。evaluateTransaction(fcn,args),我遇到了以下错误:- Errors: ["2 UNKNOWN: invalid txid. got [00ce5ece85f645e6781515b10c9325e4f6fa743bb49042c940900db4359a42d1], expected [66e0e0c782c4a17b5815255ce5

我正在使用hyperledger fabric 1.4,在使用node sdk Wait contract进行查询时遇到了一个问题。evaluateTransaction(fcn,args),我遇到了以下错误:-

Errors: ["2 UNKNOWN: invalid txid. got [00ce5ece85f645e6781515b10c9325e4f6fa743bb49042c940900db4359a42d1], expected [66e0e0c782c4a17b5815255ce5685ceb088f0dd47639950c2462144318197004]"], stack=FabricError

我只是很困惑,它是否会创建一个新的事务?我在这里读过,请看一看,因为我不清楚

evaluateTransaction和submitTransaction之间的区别在于submitTransaction向适当的对等方发送请求(如果使用了服务发现,则根据背书策略发送请求;如果未使用服务发现,则根据通道中的所有对等方发送请求)并收集从请求返回给对等方的交易建议响应,并将这些响应提交给订购方,以便订购并发送给对等方进行验证并提交给区块链

EvaluateTransaction将向单个适当的对等方(即来自您组织的对等方)发送请求,不向订购方发送任何内容,只将响应返回给进行调用的应用程序。您通常使用evaluate事务来执行查询类型的请求


查看错误消息,您在调用evaluateTransaction时似乎使用了错误的事务id。除非您真的知道自己在做什么,否则最好让evaluateTransaction代表您生成事务id

您好,谢谢您的回答,我的问题是,我使用submitTransaction(discovery-true)进行了事务处理,同时我们使用evaluateTransaction查询结果,并根据该结果执行另一个事务。但是在执行evaluateTransaction时出现了问题。我们发现它的状态不正确,我们抛出错误并进一步处理以执行事务,这次我得到了[“2未知:无效的txid.got[00ce5ece85f645e6781515b1oC9325e4f6fa743bb49042c940900db4359a42d1],预期为[66e0e0c782c4a7b5815255ce5685ceb08f08f08f0dd47639950c244318197004]。]。我猜evaluateTransaction已进行了一个事务,这导致了此错误,如何解决此问题,请提供任何帮助。我可以猜测的唯一方法(没有看到您的代码)是您正在向evaluateTransaction调用传递一个事务id。如果您正在这样做,那么修复方法将是删除传入事务id。您不会基于以前的事务id评估事务。evaluateTransaction是一个全新的事务建议