策略
策略是一组规则,用来定义如何做出决策和实现特定结果。
Fabric 策略表示成员如何同意或者拒绝网络、通道或者智能合约的变更。
策略是使 Hyperledger Fabric 不同于其他区块链系统的内容之一。
策略决定了那些组织可以访问或者更新 Fabric 网络,并且提供了强制执行这些决策的机制。
实现策略
策略实现在 Fabric 网络的不同层次。
系统通道配置
网络中必须有至少一个排序服务的排序系统通道,它是第一个被创建的通道。
该通道也包含着谁是排序服务(排序服务组织)以及在网络中交易(联盟组织)的成员。
策略治理着排序服务使用的共识,并定义了新区块如何被创建。
系统通道也治理着联盟中的哪些成员可以创建新通道。
应用通道配置
应用 通道 用于向联盟中的组织间提供私有通信机制。
策略治理着从通道中添加和删除成员的能力。
治理着使用 Fabric 链码生命周期在链码定义和提交到通道前需要哪些组织同意。
权限从控制列表
ACL 通过将资源和已有策略相关联的方式提供了资源访问配置的能力。
Fabric ACL 的默认集合在 configtx.yaml
文件的 Application: &ApplicationDefaults
部分。
configtx.yaml
中定义的资源列表是 Fabric 当前定义的所有内部资源的完整集合。
智能合约背书策略
每一个智能合约都有一个背书策略,该策略指明了需要通道中多少不同组织的成员根据指定智能合约执行和验证交易才能使一笔交易有效。
背书策略定义了必须“背书”(批准)提案执行的组织(的 Peer 节点)。
修改策略
它是定义如何更新策略的策略。
策略作用域
系统通道配置为联盟成员提供了创建通道的能力。
应用通道和 ACL 是联盟组织用来从通道中添加或删除成员以及限制通道中智能合约和数据访问的机制。
写策略
在 Hyperledger Fabric 中,策略中明确的签名使用 Signature
语法,隐含的签名使用 ImplicitMeta
语法。
签名策略
Signature
策略定义了要满足策略就必须签名的特定用户类型,比如 Org1.Peer OR Org2.Peer
。
例如,一个策略可以简单表达为使用 AND (Org1, Org2)
,表示满足该策略就同时需要 Org1 中的一个成员和 Org2 中的一个成员的签名。
隐元策略
隐元
策略只在通道配置上下文中有效,通道配置在配置树策略中是基于分层的层次结构。
应用通道分层的策略结构:
当满足配置层级中它的 Admins
子策略时,就代表也满足了其子策略的子策略条件。
隐元
通道配置管理策略(称为 /Channel/Admins
)。
在配置树中所有 Admins
策略都引用了的 Admin
子策略。
隐元
策略比如 MAJORITY Admins
的主要优势在于当你向通道添加新组织的时候,你不必更新通道策略。
链码的生命周期
configtx.yaml
文件中 Application
部分包含了默认的链码生命周期背书策略。
1 | Application: &ApplicationDefaults |
LifecycleEndorsement
策略控制需要谁 批准链码定义 。Endorsement
策略是 链码的默认背书策略 。
链码背书策略
链码被批准并提交到通道时会指定一个背书策略。
批准阶段没有明确指明背书策略,就默认使用 Endorsement
策略 "MAJORITY Endorsement"
。
要想使交易生效就需要大多数不同通道成员(组织)的执行并验证交易。