Hyperledger Fabric 二三事 - 私有数据

私有数据

私有数据集合

我们都知道在Fabric中,若有利益相关方想要共享账本或数据又不想向利益无关方泄露,可以创建一个通道共同加入进去。但现在有下面这种场景:

设想一个通道上的五个组织,他们从事农产品贸易:
	1. 农民在国外售卖他的货物
	2. 分销商将货物运往国外
	3. 托运商负责参与方之间的货物运输
	4. 批发商向分销商采购商品
	5. 零售商向托运人和批发商采购商品
分销商可能希望与农民和托运商进行私下交易,以对批发商和零售商保密交易条款
(以免暴露他们收取的加价)

分销商还可能希望与批发商建立单独的私人数据关系,因为它收取的价格低于零售商。

批发商可能还想与零售商和托运商建立私有数据关系。

如果想要实现上述分销商和批发商的小心思,首先我们可能会想到可以让他们与各自的上下游建立一个小通道。但是,在每种情况下创建单独的通道会产生额外的管理开销(维护链码版本、策略、MSP等),并且不能在保留一部分数据私有的同时,可以让所有通道参与者看到该事务。

下面我们来介绍一种基于定义私有数据集合(PDC)的方法。从v1.2开始,Fabric 提供了创建私有数据集合的功能,它允许在通道上定义的组织子集能够背书、提交或查询私有数据,而无需创建单独的通道。

首先来了解下什么是私有数据集合,集合是两个元素的组合:

  • 实际的私有数据,通过 Gossip 协议点对点地发送给授权可以看到它的组织。私有数据保存在被授权的组织的节点上的私有数据库上,它们可以被授权节点的链码访问。排序节点不能影响这里也不能看到私有数据。注意,由于 gossip 以点对点的方式向授权组织分发私有数据,所以必须设置通道上的锚节点,也就是每个节点上的 CORE_PEER_GOSSIP_EXTERNALENDPOINT 配置,以此来引导跨组织的通信。
  • 该数据的 hash 值,该 hash 值被背书、排序之后写入通道上每个节点的账本。Hash 值作为交易的证明用于状态验证,并可用于审计。

下面的图表分别说明了被授权和未被授权拥有私有数据的节点的账本内容。
Hyperledger Fabric 二三事 - 私有数据

所以,对于上面那个问题,我们可以分成3个PDC:

  • PDC1: 分销商, 农民 和 托运商
  • PDC2:分销商 和 批发商
  • PDC3:批发商, 零售商 和 托运商
    Hyperledger Fabric 二三事 - 私有数据
    其中,属于分销商的节点将在其账本中包含多个私有的私有数据库,其中包括来自分销商、农民和托运商子集合关系和分销商和批发商子集合关系的私有数据。
    Hyperledger Fabric 二三事 - 私有数据

使用私有数据的交易流

上课去了,待补充。。。

上一篇:Hyperledger Fabric 二三事 - 账本


下一篇:【linux】【Fabric】Centos7搭建Fabric运行环境