Hyperledger Fabric 私有数据概念
Posted thefist11
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hyperledger Fabric 私有数据概念相关的知识,希望对你有一定的参考价值。
1. 定义
允许通道内的指定的某一个组织中的部分成员可以对私有数据进行操作,而其他没有权限的节点只能知道有这么一笔交易发生而不能了解交易的细节。
1.1 什么时候需要
- 当所有的数据都需要在通道内的成员之间保密的时候,使用通道比较合适。
- 当交易要在所有组织之间传播,并且要求只有通道内的部分组织成员可以查看或操作交易内的某一部分数据时,并且部分数据需要对排序节点进行保密时。
2. 属性
每一个私有数据集合都包含以下几种属性:
- name:集合名称
- policy:定义了允许持久化数据的组织节点
- requiredPeerCount:分发私有数据要求的对等节点数量,也作为合约背书的条件
- maxPeerCount:对于数据冗余的目的,当前要向其分发数据的其他节点的数量。当私有数据拉取请求发过来,如果背书节点挂掉,其他的节点在提交的时候还可用。
- blockToLive:对于价格或者个人信息等敏感信息,这个参数代表了这些数据应该在私有数据集合中存在时间。数据将会存在于私有数据库指定的区块数量中,在这之后数据就会被清洗,从网络中淘汰。为了保持私有数据一直存在的方法是永不清洗私有数据,设置 属性blockToLive的值为0。
- memberOnlyRead:值为true代表了节点自动强制只有属于集合成员的组织的客户端被允许访问读取私有数据。
- memberOnlyWrite:true代表节点自定强制只有属于集合成员的组织客户端允许写私有数据。
- endorsementPolicy:定义了需要满足的背书策略来写私有数据集。集合级的背书策略会覆盖合约级的背书策略。
2.1 使用私有数据进行交易操作之前,所有的组织需要创建集合定义JSON文件,从而定义与合约匹配的私有数据集合。
eg.
[
{
"name": "collectionMarbles",
"policy": "OR('Org1MSP.member', 'Org2MSP.member')",
"requiredPeerCount": 0,
"maxPeerCount": 3,
"blockToLive":1000000
},
{
"name": "collectionMarblePrivateDetails",
"policy": "OR('Org1MSP.member')",
"requiredPeerCount": 0,
"maxPeerCount": 3,
"blockToLive":3
}
]
以上是关于Hyperledger Fabric 私有数据概念的主要内容,如果未能解决你的问题,请参考以下文章