You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hyperledger Fabric 2.3+Caliper V0.5测试报错求助:节点背书不匹配

排查Hyperledger Fabric 2.3 + Caliper 0.5 中“Peer endorsements do not match”交易失败问题

问题场景

使用Hyperledger Fabric 2.3测试网络搭配Caliper V0.5开展性能测试时,出现无有效节点响应错误,具体提示为Peer endorsements do not match,导致提交交易失败。已确认所有Fabric组件运行正常,怀疑配置文件存在问题,相关配置如下:

基准测试配置

test:
  name: basic-contract-benchmark
  description: test benchmark
  workers:
    number: 2
  rounds:
    - label: readAsset
      description: Read asset benchmark
      txDuration: 30
      rateControl:
        type: fixed-load
        opts:
          #tps: 25
          transactionLoad: 2
      workload:
        module: workload/readAsset.js
        arguments:
          assets: 10
          contractId: basic

网络配置

name: Calier test
version: "2.0.0"
caliper:
  blockchain: fabric
channels:
  - channelName: channel1
    contracts:
      - id: basic
organizations:
  - mspid: Org1MSP
    identities:
      certificates:
        - name: 'User1'
          clientPrivateKey:
            path: '../fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/keystore/663cf2aa45619b05d8c8200020f90d7931dcc08f15b8b152a16c6ea7e344e8d5_sk'
          clientSignedCert:
            path: '../fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/signcerts/cert.pem'
          connectionProfile:
            path: '../fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/connection-org1.yaml'
          discover: true

排查与解决步骤

1. 验证合约背书策略

Fabric测试网默认部署的basic合约,背书策略通常为AND('Org1MSP.peer', 'Org2MSP.peer'),即需要Org1和Org2的peer共同背书。若Caliper仅配置了Org1的身份,无法获取Org2的背书签名,会直接触发Peer endorsements do not match错误。

验证命令:
在Org1的peer环境中执行:

peer chaincode query -C channel1 -n basic -c '{"Args":["getPolicy"]}'

若返回的策略包含多个组织,需补充对应组织的身份配置。

2. 补充多组织身份配置

修改Caliper网络配置,添加Org2的身份信息,确保Caliper能从符合背书策略的所有组织获取背书:

organizations:
  - mspid: Org1MSP
    identities:
      certificates:
        - name: 'User1'
          clientPrivateKey:
            path: '../fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/keystore/663cf2aa45619b05d8c8200020f90d7931dcc08f15b8b152a16c6ea7e344e8d5_sk'
          clientSignedCert:
            path: '../fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/signcerts/cert.pem'
          connectionProfile:
            path: '../fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/connection-org1.yaml'
          discover: true
  - mspid: Org2MSP
    identities:
      certificates:
        - name: 'User1'
          clientPrivateKey:
            path: '../fabric-samples/test-network/organizations/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/keystore/[替换为Org2 User1的私钥文件名]_sk'
          clientSignedCert:
            path: '../fabric-samples/test-network/organizations/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/signcerts/cert.pem'
          connectionProfile:
            path: '../fabric-samples/test-network/organizations/peerOrganizations/org2.example.com/connection-org2.yaml'
          discover: true

3. 确认交易类型与代码逻辑

测试标签为readAsset,属于查询类交易,理论上无需多节点背书(使用evaluateTransaction)。若报错提示提交交易失败,需检查workload/readAsset.js中的代码逻辑:

  • 确保使用evaluateTransaction执行查询:
    await contract.evaluateTransaction('readAsset', assetId);
    
  • 若误使用submitTransaction(用于写入类交易),则必须满足背书策略,否则会触发背书不匹配错误。

4. 检查Peer节点数据一致性

确认Org1和Org2的peer均已加入channel1,且数据同步正常:

  • 查看peer加入的通道:
    peer channel list
    
  • 在两个组织的peer环境下分别查询同一资产,确认数据一致:
    peer chaincode query -C channel1 -n basic -c '{"Args":["readAsset","asset1"]}'
    

5. 验证自动发现配置有效性

discover: true会让Caliper自动发现网络节点,需确保connection-org1.yaml和connection-org2.yaml中的节点地址正确(测试网默认是localhost端口),且Caliper运行环境能正常访问这些节点。

内容的提问来源于stack exchange,提问作者RajeshKaushal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 10:33:13