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

Hyperledger Fabric v2.3.3键级背书策略更新异常问题

问题根因

该问题是Fabric Node SDK默认的背书节点选择逻辑导致的,和键级背书策略本身的能力无关:

  • Fabric SDK默认发起交易背书请求时,仅基于链码级背书策略筛选需要发送请求的节点,不会提前读取目标键对应的键级背书策略。你配置的链码级策略为OR('org1.peer','org2.peer','org3.peer','org4.peer'),SDK判定只要任意1个组织的节点完成背书就满足链码级要求,因此仅向发起调用的org1节点发送了背书请求,最终仅拿到org1的签名,无法满足该键AND('org1.peer','org2.peer')的更严格背书要求,触发VSCC校验失败,就是日志中返回的ENDORSEMENT_POLICY_FAILURE错误。
  • 当你把链码级策略修改为AND('org1.peer','org2.peer','org3.peer','org4.peer')时,SDK会默认向所有4个组织的节点发送背书请求,自然满足了该键需要org1、org2双签名的要求,因此流程运行正常,和官方文档描述的「键级背书策略可松可严」的规则并不冲突。
解决方案

可以根据业务场景选择以下任意一种方案解决:

  • 手动指定背书节点:发起该键的更新交易时,在Node Fabric SDK的交易背书/提交参数中,显式传入org1和org2的背书节点,强制SDK向这两个组织的节点都发送背书请求,收集到双签名后再提交给排序节点。具体可在Transaction实例的endorse或submit方法中,通过endorsingPeers参数指定对应节点。
  • 开启SDK的状态背书策略感知能力:Fabric v2.2及以上版本的Node SDK支持基于状态的背书策略自动发现功能,初始化Gateway时开启服务发现配置discovery: { enabled: true }后,SDK会在发起背书请求前先读取目标键的键级背书策略,自动匹配需要的背书节点,无需手动指定。
  • 调整链码级背书策略(适配固定场景):如果业务中所有自定义键级策略的背书组织范围固定,可以将链码级背书策略调整为这些组织的AND组合,让SDK默认向所有需要的组织发送背书请求,该方案灵活性较低,仅适合背书规则固定的业务场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:54:03