深入挖掘Hyperledger Fabric中的私有数据

私有数据是fabric中讨论最多的特性,在v1.2中发布。它在多个参与者之间引入了数据隐私的概念,而不需要为彼此创建单独的通道。根据fabric文档,私有数据是:

如果某个通道上的一组组织需要对该通道上的其他组织保持数据私有,则可以选择创建一个新通道,其中只包含需要访问数据的组织。但是,在每种情况下创建单独的通道都会产生额外的管理开销(维护链代码版本、策略、msp等),并且不允许在使用用例时希望所有通道参与者都看到事务,同时保持部分数据的私有。

为什么使用私有数据特性?

在实时场景中,几乎所有参与实体都彼此共享敏感数据(价格、个人信息等),但敏感数据需要在每个人之间共享。在fabric < v1.2的早期版本中,必须在SDK端编写额外的业务逻辑,通过限制访问或为每个参与者创建单独的通道来不向所有参与者公开敏感数据,这不是一个可行的解决方案。为了避免这些情况,我们引入了私有数据。

什么是私有数据?

私有数据具有集合,这些集合基本上表示私有数据数据库,可以访问策略中定义的特定成员。每个集合都是在内部调用chaincode函数来执行私有数据的get、put、delete功能的authorize peer上安装和实例化的。

具有私有数据的Fabric体系结构:

每个对等点都有临时存储(临时存储),通过该存储,私有数据可以使用闲话协议传播到其他授权对等点。私有数据永久存储在对等点内部的私有状态DB (couch DB)中。

私有数据流:

1:在瞬态领域发送提案和私有数据
2:模拟事务并返回响应(公共数据+私有数据哈希值)
2.1 :存储在临时临时存储器中的私有数据,使用闲话协议发送给另一个Peer
3. 客户将背书集合成一个交易并发送给订货人
4:创建一个块并发送到提交对等点
5:通过比较从另一个Peer接收的私有数据的哈希值与orderer私有数据存储在对等点发送的数据块中的私有数据的哈希值来验证块

Peer中的私有数据存储:

存储在对等体PeerAuthorize中的沙发数据库中的私有数据仅具有作为在对等容器中配置的沙发数据库实例的私有数据,而其他未授权对等点将具有数据哈希值。哈希值存储在其他对等点中,因为如果私有数据必须从org1移动到org2,那么私有数据的真实性将通过org1发送的私有数据的哈希值和org2中存储的私有数据的哈希值来计算。

有关私有数据的常见问题和解答?

:私有数据是否符合GDPR ?
:据我所知,私人数据只涉及GDPR的某些方面。例如, 对于被遗忘的权利, 您应该只保留您的数据, 只要你需要, 这种合规性可以很容易地实现通过配置块到活的策略或显式调用 delprivatedata 函数。但是, 如果一些作为收集一部分的组织变得恶意, 他们可以很容易地将客户 pii 分发给任何其他方。目前, 还没有这种跟踪在结构中分享私人数据的机制。

:我们可以升级托收政策吗?

:如果一个集合被链代码引用,链代码将使用之前的集合定义,除非在升级时指定了一个新的集合定义。如果在升级期间指定了集合配置,则必须包含每个现有集合的定义,并且可以添加新的集合定义。

当对等方提交包含链码升级事务的块时,集合更新将变得有效。注意,不能删除集合,因为通道的区块链上可能有先前无法删除的私有数据哈希值。

注意:您不能将块升级为现有集合的活动属性,因为对等点可能位于不同的高度,在处理块时,它们需要一个确定性块来活动。

:私有数据存储和临时存储位于对等容器中的什么位置?

:临时存储:/var/hyperledger/production/transientStore
私有数据存储:var/hyperledger/production/ledgersData/pvtdataStore
分类账:var/hyperledger/production/ledgersData/chains/chains/mychannel inside blockfile_000000是包含所有分类账数据的txLog文件。

问:是否可以在运行时定义集合?
:集合必须静态定义。向各方动态发送私有数据的能力在2019年的路线图上。

:在哪里可以看到块中的私有数据的集合哈希值?
:从通道中获取一个块,然后使用configtxgenerator工具将块文件转换成JSON。详细的实现可以在这里找到

结论:私有数据是一个新兴的概念,目前正在进行大量的研究,尤其是利用零知识证明共享私有数据,使得私有数据更加符合GDPR。我希望本文对私有数据提供了深入的见解。

文章来源:区块网

X