Hyperledger Indy:撤销 Endorser 角色指南

Hyperledger Indy:撤销 Endorser 角色指南

本文档旨在指导 Hyperledger Indy 用户如何撤销已存在的 Endorser (TRUST_ANCHOR) 角色。通过构建并提交一个特殊的 NYM 交易请求,将目标 DID 的角色设置为空,即可实现角色的撤销。本文将提供 Python 代码示例,演示如何使用 Indy SDK 完成此操作,并解释关键步骤。

在 Hyperledger Indy 中,角色管理是一个重要的功能,它允许对网络中的参与者进行权限控制。 有时,我们需要撤销某个 DID 的角色,例如取消某个 TRUST_ANCHOR 的权限。 本文将详细介绍如何使用 Indy SDK 在 Python 中实现这一操作。

撤销 Endorser 角色的步骤

撤销 Endorser 角色的核心在于构建一个 NYM (Node’s User Management) 交易请求,并将目标 DID 的角色设置为空字符串。 以下是详细步骤和代码示例:

  1. 构建 NYM 交易请求:

    使用 ledger.build_nym_request 函数构建 NYM 交易请求。 关键在于将 role 参数设置为空字符串 ”。 这将指示 Indy 节点撤销目标 DID 的现有角色。

    nym_transaction_request = await ledger.build_nym_request(     submitter_did=user.steward_did,     target_did=actor_did,     ver_key=actor_verkey,     alias=None,     role=''  # 设置 role 为空字符串 )
    • submitter_did: 提交交易的 DID,通常是 Steward 的 DID。
    • target_did: 需要撤销角色的目标 DID。
    • ver_key: 目标 DID 关联的 Verkey。 即使要撤销角色,也需要提供 Verkey。
    • alias: 可选的别名。
    • role: 关键参数,设置为空字符串 ” 以撤销角色。
  2. 签名并提交交易请求:

    Hyperledger Indy:撤销 Endorser 角色指南

    koolio.ai

    几分钟内把一个概念变成一个完整的播客

    Hyperledger Indy:撤销 Endorser 角色指南36

    查看详情 Hyperledger Indy:撤销 Endorser 角色指南

    使用 ledger.sign_and_submit_request 函数对交易请求进行签名并提交到 Indy Ledger。

    nym_transaction_response = await ledger.sign_and_submit_request(     pool_handle=pool_handle,     wallet_handle=wallet_handle,     submitter_did=user.steward_did,     request_json=nym_transaction_request )
    • pool_handle: Indy Pool 的句柄。
    • wallet_handle: 包含提交者 DID 的 Wallet 的句柄。
    • submitter_did: 提交交易的 DID。
    • request_json: 构建的 NYM 交易请求的 JSON 字符串。

完整示例代码

以下是一个完整的代码片段,演示如何撤销 Endorser 角色:

import asyncio import json import pprint from indy import ledger  async def demote_endorser(pool_handle, wallet_handle, user, actor_did, actor_verkey):     """     撤销 Endorser 角色     """     print('n开始撤销 Endorser 角色...n')      # 1. 构建 NYM 交易请求,设置 role 为空字符串     nym_transaction_request = await ledger.build_nym_request(         submitter_did=user.steward_did,         target_did=actor_did,         ver_key=actor_verkey,         alias=None,         role=''     )      print('NYM 交易请求: ')     pprint.pprint(json.loads(nym_transaction_request))      # 2. 签名并提交交易请求     nym_transaction_response = await ledger.sign_and_submit_request(         pool_handle=pool_handle,         wallet_handle=wallet_handle,         submitter_did=user.steward_did,         request_json=nym_transaction_request     )      print('NYM 交易响应: ')     pprint.pprint(json.loads(nym_transaction_response))      print('nEndorser 角色撤销完成。n')  # 示例调用 (需要替换实际的 pool_handle, wallet_handle, user, actor_did, actor_verkey) # asyncio.run(demote_endorser(pool_handle, wallet, user, "V4SGRU86TQ58BLzAiFZR2Z", "GJ1SzoWzavQYfCV9eqK7j4MnCR1ueJn6RYXFSuututS4"))

注意事项

  • 权限: 只有拥有足够权限的 DID(例如 Steward)才能撤销其他 DID 的角色。 确保提交者 DID 拥有执行此操作的权限。
  • Verkey: 即使要撤销角色,也需要提供目标 DID 的 Verkey。 如果 Verkey 不正确,交易可能会失败。
  • 错误处理: 在实际应用中,应该添加适当的错误处理机制,以处理交易提交失败或其他异常情况。
  • 验证: 交易成功提交后,可以通过查询 Ledger 验证目标 DID 的角色是否已成功撤销。

总结

通过将 NYM 交易请求中的 role 参数设置为空字符串,可以有效地撤销 Hyperledger Indy 中指定 DID 的角色。 本文提供的代码示例和步骤可以帮助您在 Python 中实现此功能。 请务必注意权限问题和错误处理,以确保操作的顺利进行。

python js json node edge ai Python json 字符串

上一篇
下一篇