如何在Hyperledger Indy中降级TRUST_ANCHOR并移除其权限?
Hyperledger Indy 中TRUST_ANCHOR角色降级实现方案
可行性说明
可以将TRUST_ANCHOR角色降级并移除其权限。根据Indy账本的权限规则,**只有拥有足够权限的账号(如原创建该TRUST_ANCHOR的Steward)**能发起角色修改的NYM交易,将其调整为无特殊权限的普通DID身份。
Python实现步骤
实现逻辑与创建TRUST_ANCHOR的流程一致,核心是构建修改角色的NYM请求,将role参数设为None(表示移除特殊角色权限),再由有权限的账号签名提交到账本。
代码示例
# 1. 构建降级TRUST_ANCHOR的NYM请求 print_log('\n构建NYM请求以降级TRUST_ANCHOR角色\n') nym_downgrade_request = await ledger.build_nym_request( submitter_did=user.steward_did, # 使用原Steward的DID作为提交者(需具备权限) target_did=actor_did, # 目标为要降级的TRUST_ANCHOR的DID ver_key=None, # 无需修改验证密钥,留空表示保留原密钥 alias=None, role=None # 设置为None,移除TRUST_ANCHOR角色权限 ) print_log('降级NYM请求内容: ') pprint.pprint(json.loads(nym_downgrade_request)) # 2. 签名并提交降级请求到账本 print_log('\n提交NYM降级请求到账本\n') nym_downgrade_response = await ledger.sign_and_submit_request( pool_handle=pool_handle, wallet_handle=wallet_handle, submitter_did=user.steward_did, request_json=nym_downgrade_request )
关键说明
- 权限验证:提交请求的账号必须具备修改TRUST_ANCHOR角色的权限,通常只有Steward或更高级别的角色(如Trustee)能执行此操作,否则会被账本拒绝。
- 角色参数:将
role设为None会把目标DID的角色重置为普通身份,不再拥有TRUST_ANCHOR的权限(如创建其他DID、提交特定账本交易等)。 - 结果验证:提交成功后,可通过
ledger.get_nym接口查询目标DID的信息,确认其role字段已变为None。
内容的提问来源于stack exchange,提问作者brenodacosta
相关产品推荐
相关产品推荐

