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

关于Hyperledger Composer ACL管控交易发起者资产权限及示例的技术问询

在Hyperledger Composer ACL中管理交易发起者的资产READ权限

我来帮你梳理如何在Hyperledger Composer的ACL中实现交易发起者对资产的READ权限授权与撤销,同时结合官方示例拆解细节:

1. 授权交易发起者的资产READ权限

要给交易发起者授权其自有资产的READ权限,你可以编写一条带有条件判断的ACL规则,核心是关联交易发起者(INITIATOR)与资产的归属关系。示例规则如下:

rule GrantInitiatorReadOwnAsset {
  description: "Allow transaction initiator to read their own asset"
  participant(initiator): "org.example.Participant"
  operation: READ
  resource(asset): "org.example.SampleAsset"
  condition: (asset.owner.getIdentifier() == initiator.getIdentifier())
}

关键说明:

  • initiator代表触发交易的参与者,Composer会自动识别当前交易的发起方并绑定到这个变量
  • 条件判断确保发起者只能读取自己拥有的资产,避免越权访问

2. 撤销交易发起者的资产READ权限

撤销权限有两种常用方式,根据你的需求选择:

  • 直接删除授权规则:如果是永久撤销,直接移除上面的GrantInitiatorReadOwnAsset规则即可,这是最简洁的方式
  • 临时禁用规则:如果只是临时撤销,可以修改规则条件为永远不满足的逻辑,示例如下:
rule RevokeInitiatorReadOwnAsset {
  description: "Revoke transaction initiator's read access to their own asset"
  participant(initiator): "org.example.Participant"
  operation: READ
  resource(asset): "org.example.SampleAsset"
  condition: (false)
}

这种方式下,规则永远不会匹配任何场景,相当于临时冻结了发起者的READ权限,后续需要恢复时再修改条件即可。

官方带交易子句的条件ACL示例解析

你提到的GitHub仓库中的示例,完整的规则应该是结合资产所有者和交易发起者的权限控制,补充完整后如下:

rule SampleConditionalRuleWithTransaction {
  description: "Allow asset owner or transaction initiator to operate asset"
  participant(m): "org.example.SampleParticipant"
  operation: READ, CREATE, UPDATE
  resource(v): "org.example.SampleAsset"
  transaction(tx): "org.example.SampleTransaction"
  condition: (v.owner.getIdentifier() == m.getIdentifier()) || (tx.initiator.getIdentifier() == m.getIdentifier())
}

规则解析:

  • 这条规则允许两类参与者对资产执行READ、CREATE、UPDATE操作:
    1. 资产的所有者(v.owner == m)
    2. 当前交易的发起者(tx.initiator == m)
  • 通过引入transaction(tx)子句,我们可以基于交易上下文来灵活控制权限,这在需要依赖交易发起方身份的场景中非常实用

内容的提问来源于stack exchange,提问作者Brad S.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:10:04