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

Hyperledger Indy创建RevocationRegistry失败:credDefId格式异常

Hyperledger Indy 撤销注册表定义创建credDefId格式错误排查方案

报错信息:

reason -> client request invalid: InvalidClientRequest("Format of credDefId field is not acceptable. 
Expected: 'did:marker:signature_type:schema_ref' or 'did:marker:signature_type:schema_ref:tag'",)

当前使用的入参:

  • credDefId:Th7MpTaRZVRYnPiabds81Y:3:CL:Th7MpTaRZVRYnPiabds81Y:2:gvt:1.0:Tag1
  • schemaId:Th7MpTaRZVRYnPiabds81Y:2:gvt:1.0

核心原因

报错的本质是credDefId的格式与连接的Indy节点版本要求不匹配:

  • 绝大多数部署的Indy节点(1.13及以下版本)要求credDefId中schema_ref字段使用schema写入账本后分配的数字序列编号,而非完整的schemaId字符串
  • 当前使用的credDefId直接将完整schemaId作为schema_ref拼接,导致整体段数超出节点要求,触发格式校验失败
  • 本地调用Ledger.buildCredDefReq()生成的是临时预计算ID,并非写入账本后节点认可的正式ID,直接使用会出现格式不兼容问题

排查步骤

  • 确认连接的Indy节点池的版本,核对节点配置中关于credDefId格式的兼容规则
  • 核对credDef创建流程的后续处理逻辑:是否在credDef请求提交到账本并获得共识确认后,从返回的响应体中提取id字段作为正式credDefId,而非直接使用本地生成的临时ID
  • 校验拿到的credDefId格式:符合1.13及以下版本节点要求的credDefId示例为Th7MpTaRZVRYnPiabds81Y:3:CL:12:Tag1,其中第4段为schema对应的数字序列编号,而非完整schema字符串

解决方法

  1. 调整代码逻辑:提交credDef创建请求到账本后,等待节点返回共识成功的响应,从响应的解析结果中提取官方分配的id值作为后续创建revRegDef的入参,不要使用本地构造credDef时生成的临时ID
  2. 若使用1.14及以上版本节点,可在节点配置中开启完整schemaId作为credDefId组成部分的兼容开关,无需修改ID格式即可正常请求
  3. 若无法调整节点配置,也可手动拼接符合要求的credDefId:先查询对应schema在账本上的数字序列编号,替换当前credDefId中完整schemaId的部分即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:48:03