建议和反馈

请填写你的反馈内容

问答 > 超级账本 > 问答详情

fabric如何在多个组织中测试业务网络的认可策略如何在多个组织中测试业务网络的认可策略10LK

我已经按照教程设置了多个组织。根据第13步,在提交交易之前,这两个组织都必须退出。如何测试两个组织都支持交易?

2020-06-04
0
请先登陆或注册

nesta2020-06-04

给您从认可对等方收到的建议响应,您可以重复检查签名的有效性。以下是Java SDK中处理此问题的示例代码:

/*
 * Verifies that a Proposal response is properly signed. The payload is the
 * concatenation of the response payload byte string and the endorsement The
 * certificate (public key) is gotten from the Endorsement.Endorser.IdBytes
 * field
 *
 * @param crypto the CryptoPrimitives instance to be used for signing and
 * verification
 *
 * @return true/false depending on result of signature verification
 */public boolean verify(CryptoSuite crypto) {
    if (isVerified()) { // check if this proposalResponse was already verified   by client code
        return isVerified();
    }
    if (isInvalid()) {
        this.isVerified = false;
    }
    FabricProposalResponse.Endorsement endorsement = this.proposalResponse.getEndorsement();
    ByteString sig = endorsement.getSignature();
    try {
        Identities.SerializedIdentity endorser = Identities.SerializedIdentity
                .parseFrom(endorsement.getEndorser());
        ByteString plainText = proposalResponse.getPayload().concat(endorsement.getEndorser());
        if (config.extraLogLevel(10)) {
            if (null != diagnosticFileDumper) {
                StringBuilder sb = new StringBuilder(10000);
                sb.append("payload TransactionBuilderbytes in hex: " + DatatypeConverter.printHexBinary(proposalResponse.getPayload().toByteArray()));
                sb.append("\n");
                sb.append("endorser bytes in hex: "
                        + DatatypeConverter.printHexBinary(endorsement.getEndorser().toByteArray()));
                sb.append("\n");
                sb.append("plainText bytes in hex: " + DatatypeConverter.printHexBinary(plainText.toByteArray()));
                logger.trace("payload TransactionBuilderbytes:  " +
                        diagnosticFileDumper.createDiagnosticFile(sb.toString()));
            }
        }
        this.isVerified = crypto.verify(endorser.getIdBytes().toByteArray(), config.getSignatureAlgorithm(),
                sig.toByteArray(), plainText.toByteArray()
        );
    } catch (InvalidProtocolBufferException | CryptoException e) {
        logger.error("verify: Cannot retrieve peer identity from ProposalResponse. Error is: " + e.getMessage(), e);
        this.isVerified = false;
    }
    return this.isVerified;} // verify

当然,您可以使用其他类似的SDK来获得相同的结果。


投一票
评论(0)
赞赏(0)

求助中

解决了这个问题,预计可以帮助到

  • 0
  • 0
  • 6
  • 4
  • 0
邀请

感谢您的善举,每一次解答会成为新人的灯塔,回答被采纳后获得20算力和相应的LK币奖励