TRUSTEE DID使用及新节点入网问题求助
问题描述
尝试使用TRUSTEE DID发布角色为STEWARD的新DID时,持续收到以下错误:
Transaction has been rejected: client request invalid: insufficient number of valid signatures, 1 is required but 0 valid and 1 invalid have been provided.
错误信息截图如下:
最终目标是使用该TRUSTEE DID完成新节点入网,但尝试时同样遇到签名无效错误。此外,使用现有STEWARD入网新节点时,收到错误提示:
STEWARD already has a node.
需求:
- 使用TRUSTEE DID完成新节点入网。
- 分配由TRUSTEE创建的新STEWARD DID管理该新节点。
问题排查与解决方案
一、签名无效问题的核心原因
签名错误本质是TRUSTEE DID的签名密钥未正确配置或未完成完整激活流程:
- 先确认TRUSTEE DID是否完成全流程激活:包括生成合法密钥对、将公钥写入账本,操作时必须使用对应的私钥签名。
- 检查所用工具(如indy-cli或相关SDK)是否正确加载TRUSTEE的私钥文件,路径、密钥ID必须完全匹配。
二、符合权限模型的正确操作流程
按照你的需求,正确步骤如下:
用TRUSTEE DID创建新STEWARD DID
- 确保TRUSTEE DID处于激活状态,私钥可正常使用。
- 提交创建STEWARD的
NYM类型交易时,必须用TRUSTEE的私钥签名,交易中明确指定新DID的角色为STEWARD,并关联其公钥信息。 - 交易提交后,通过账本查询确认新STEWARD DID已成功写入。
用新STEWARD DID完成节点入网
- 每个STEWARD DID只能绑定一个节点,这也是旧STEWARD报错的原因,必须使用新创建的STEWARD DID。
- 提交
NODE类型交易完成节点入网,签名时使用该新STEWARD的私钥,确保节点IP、端口、验证密钥等参数准确无误。
三、关键注意事项
- 不要直接用TRUSTEE DID绑定节点:TRUSTEE的核心权限是管理身份(创建STEWARD等),而非直接管理节点,这是Indy账本的权限设计规范。
- 验证工具配置:如果使用indy-cli,执行
did use <trustee-did>后,通过did list确认私钥已正确加载。 - 校验交易格式:确保提交的交易类型、参数完全符合Indy账本规范,避免因格式错误导致签名验证失败。
内容的提问来源于stack exchange,提问作者brenodacosta
相关产品推荐
相关产品推荐

