如何通过Hyperledger Composer ACL控制交易执行而非程序化控制
嘿,这事儿我熟!要通过ACL而非程序化方式控制交易执行权限,咱们一步步来实现你的需求:
1. 先明确参与者与交易的基础定义
首先得把你的参与者和交易的基础声明补全(方便对应ACL规则),用代码块展示如下:
participant Person identified by emailId { o String emailId } participant Buyer extends Person { // 这里可以添加买家专属的属性,比如收货地址等 } participant Seller extends Person { // 这里可以添加卖家专属的属性,比如店铺名称等 } // 发布待售商品的交易定义 transaction ListItemForSale { o String itemName o Double price o String description // 其他你需要的商品属性 }
2. 配置核心ACL规则
接下来就是关键的ACL规则配置,直接通过规则来限定只有Seller能执行发布商品的交易,拒绝Buyer的操作:
rule AllowSellersToListItems { description: "仅允许卖家执行发布待售商品的交易" participant(p): "Seller" operation: CREATE resource: "ListItemForSale" action: ALLOW } rule DenyBuyersFromListingItems { description: "拒绝买家执行发布待售商品的交易" participant(p): "Buyer" operation: CREATE resource: "ListItemForSale" action: DENY }
规则逻辑说明
- 第一条规则
AllowSellersToListItems:精准匹配Seller参与者,针对ListItemForSale交易的CREATE操作(也就是发布商品),直接授予执行权限。 - 第二条规则
DenyBuyersFromListingItems:明确针对Buyer参与者,同样的交易和操作类型,直接拒绝执行。
小提示:如果你的ACL系统默认是“拒绝所有未明确允许的操作”,那其实只保留第一条允许规则就够了,但加上第二条拒绝规则会让权限逻辑更清晰,也能避免因默认规则变更导致的权限漏洞。
内容的提问来源于stack exchange,提问作者Jamil Ahmed
相关产品推荐
相关产品推荐

