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

Hyperledger Fabric 2.2提交交易报错Proposal has not been endorsed问题咨询

问题原因分析

核心错误

你调用Commit.build方法时的参数格式不符合Fabric Node SDK 2.2的要求:

  • 你传入的参数键为endorsement(单数),但SDK要求的背书信息参数键为endorsements(复数)
  • 你将背书响应数组包裹在了对象中,而SDK需要直接读取背书响应数组的内容
    SDK无法识别到有效背书信息,因此抛出Proposal has not been endorsed的错误。

其他可能的诱因

  • 未提前校验背书响应有效性,存在状态非200的异常背书结果
  • 构建Commit实例时传入的链码ID、通道名称,和发送背书请求时的参数不一致
  • 离线签名的原始交易提案头信息、payload,和发送给背书节点的提案内容不匹配,导致背书校验失败
修复方案
  1. 先校验所有背书响应的合法性
  2. 调整Commit.build的参数格式,参考代码如下:
// 替换为你实际拿到的背书响应数组
const proposalResponses = [/* 从peer节点获取的背书响应列表 */];

// 校验所有背书均有效
const isAllEndorsed = proposalResponses.every(resp => {
  return resp.response && resp.response.status === 200 && resp.endorsement;
});
if (!isAllEndorsed) {
  throw new Error('存在无效的背书响应,请检查节点返回结果');
}

// 正确构建Commit对象
const commitment = new Commit('pki', 'mychannel');
const idx = client.newIdentityContext(user.user);
// 注意参数键为endorsements,直接传入背书响应数组即可
const commit = commitment.build(idx, { endorsements: proposalResponses });

内容的提问来源于stack exchange,提问作者sohaib ali gill

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:24:01