即使在Hyperledger Fabric v1.4中认可策略失败后,也会提交块

问题描述 投票:0回答:1

我已将我的认可政策设置为“ AND('Org1MSP.peer','OrgMainMSP.peer')“”,这意味着我需要两个组织的证书才能成功进行交易。

交易如下:

对等链代码调用-o orderer0.org.com:7050 --tls --cafile/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/org.com/orderers/orderer0.org.com/msp/tlscacerts/tlsca.org.com-cert.pem-n accessControl --peerAddresses peer0.org-main.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org-main.com/peers/peer0.org -main.com/tls/ca.crt--peerAddresses peer0.org1.com:10051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.com/peers/peer0.org1.com/tls/ca。 crt-c'{“ Args”:[]}'

一切正常。成功提交了一个新块,也可以在ouchdb上看到。但是,当我发送交易时,删除证书之一,如下所示:

“对等链代码调用-o orderer0.org.com:7050 --tls --cafile/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/org.com/orderers/orderer0.org.com/msp/tlscacerts/tlsca.org.com-cert.pem-n accessControl --peerAddresses peer0.org-main.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org-main.com/peers/peer0.org -main.com/tls/ca.crt-c'{“ Args”:[]}'“

新块已通过事务提交,但被提交者标记为无效,并在日志上显示以下错误消息

peer0.org-main.com | 2020-03-20 07:59:30.868 UTC [vscc]验证->ERRO 094 VSCC错误:stateBasedValidator.Validate失败,错误在TX 7:0中验证Chaincode AccessControl的背书策略失败:签名集不符合政策

peer0.org-main.com | 2020-03-20 07:59:30.868 UTC [valimpl]preprocessProtoBlock-> WARN 097通道​​[myc]:块[7]事务索引[0] TxId[01246b27c11f94124aee3c4ac84a011be51a26aaa50fc28f1d6f5f5a8860c079]由提交者标记为无效。原因码[ENDORSEMENT_POLICY_FAILURE]

peer0.org-main.com | 2020-03-20 07:59:31.156 UTC [kvledger]CommitWithPvtData-> INFO 098 [myc]具有1的已提交块[7]287毫秒内进行的交易(state_validation = 0毫秒block_and_pvtdata_commit = 220ms state_commit = 17ms)commitHash = [9d52225ddbc8f6f98edd37388cbcf369fea22666b9ec1cff1a91debdebc2d2a1]

并且当我再次提交通过两个证书的事务时,它将引发错误为

Error:无法组合事务:ProposalResponsePayloads不匹配-提案响应:版本:1响应状态:200有效负载:...>

这里的问题是,如果我错误地调用仅通过组织的一个证书的调用函数(背书策略失败),那么我将无法进行进一步的交易。

hyperledger-fabric hyperledger
1个回答
0
投票
  1. 根据签注政策签署的交易。

没关系。阻止提交并更新状态。

  1. 交易签名与认可政策不符。

没关系。您的客户端最好不要尝试提交该事务,但如果这样做,则会提交一个包含无效事务的新块,并且不会更新状态。

  1. ProposalResponsePayloads do not match

现在问题不同了。我认为它与先前的交易没有关系。签名是预期的签名,但是您正在组成一个包含2个不匹配的交易建议的交易。他们的回应或状态更新不一样。确保您未使用外部代码,随机数,时间戳(事务或区块的时间戳除外)或链式代码中可能在两个背书中都不匹配的类似值。当然,事务无效,但是提交了一个新块。

© www.soinside.com 2019 - 2024. All rights reserved.