深入挖掘Hyperledger Fabric中的私有数据
链客,专为开发者而生,有问必答!
此文章来自链客区块链技术问答社区,未经允许拒绝转载。
深入挖掘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
- 客户将背书集合成一个交易并发送给订货人
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。我希望本文对私有数据提供了深入的见解。
相关文章:

几种任务调度的 Java 实现方法与比较
综观目前的 Web 应用,多数应用都具备任务调度的功能。本文由浅入深介绍了几种任务调度的 Java 实现方法,包括 Timer,Scheduler, Quartz 以及 JCron Tab,并对其优缺点进行比较,目的在于给需要开发任务调度的程序员提供有…

7.Mongodb复制(副本集)
1、复制 什么是复制 复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性,并可以保证数据的安全性复制还允许从硬件故障和服务中断中恢复数据为什么要复制 数据备份数据灾难恢复读写分离高(24* 7ÿ…

关于iOS10的适配
每一次的iOS升级, 都伴随着各种坑的出现, 今年iOS10也不例外 本着一定要紧随最新科技的开发态度, 最近将手机升级到了iOS10, xcode升级到了8.0 但是紧随而来的就是各种崩溃, 各种坑, 现列举如下: 一 . 用户隐私权限的访问 公司是做视频直播的, 所有在用户隐私权限上面还是有…

分布式系统中节点之间的同步形成区块链
链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载。 分布式系统中节点之间的同步形成区块链 分布式系统由Tanenbaum定义,“分布式系统是一组独立的计算机,在”分布式…

hdu 2199 Can you solve this equation? 二分
1.精度问题 由于是double类型,rmid 而不是rmid-12.如果首位两端(f(0)和f(100))同号,证明解不在[1,100]区间内 这是我之所以TE的原因,没有预先判断3.若在这个区间内&#…
iOS iTunes Connect协议更新导致无法构建新版本
最近公司项目发新版本时遇到不能构建新的版本的情况, 了解后才知道 必须同意更新后的协议才能构建新版本、创建内购App,提交新的App 点击其中的蓝色文字进入相关界面 这样就可以构建新版本了 参考博客: http://blog.sina.com.cn/s/blog_134451adb0102wger.html

白话hash和数字签名,保证你看得懂
链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载。 摘要:最近有朋友在后台问为啥最近老介绍hash相关文章,其实hash算法在信息安全中非常重要,尤其是作为数字…

几种Windows进程通信
32位Windows采用虚拟内存技术使每个进程虚拟4G内存,在逻辑上实现了对进程之间数据代码的分离与保护。那么相应的进程之间的通信也就有必要整理掌握一下。 Windows进程间通讯的方法有很多:管道、邮件槽、剪切板、共享内存、消息、套接字、RPC、DDE等。 但…

TestNG学习随笔
转载自:http://blog.sina.com.cn/s/blog_68f262210102vh5c.html 通过本人实践,文中所讲的程序可以正确运行,作用正确,并且浅显易懂。以下就是我从中摘录的重要知识点,就当留作自己记录或者帮助其他想学TestNG的人一点借…

录制短视频的录制按钮边框计时效果
项目增加录制短视频功能, 需一录制功能按钮, 使用贝塞尔曲线结合shapelayer绘制按钮边框的计时功能 代码如下: #import "YGRecordView.h" #define BeforeRecord_LineWidth 2.0#define BeforeRecord_LineColor UIColorFromRGBA(0xffffff, 1)#define Record_LineWidt…

区块链学堂:区块链引子
链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载。 区块链学堂(1):区块链引子 相信正在看这篇文章的读者一定已经听说过区块链了,并且也相信…

Git命令文本手册
git init # 初始化本地git仓库(创建新仓库) git config --global user.name "xxx" # 配置用户名 git config --global user.email "xxxxxx.com" …

Mininet的介绍安装
Mininet的介绍 Mininet是一个强大的网络仿真平台,通过这个这个平台,我们可以很方便的模拟真实环境中的网络操作与架构。当前SDN/OpenFlow发展的如火如荼,但是在真实网络中又不可以进行相关的网络实验,自然需要一个仿真平台可以对这…
项目的简单总结一 -- 关于对贝塞尔和shapelayer结合使用的动画特效
现项目基本稳定, 要开始新的项目, 总结一二 关于对贝塞尔和shapelayer结合使用的动画特效, 在这次的项目中有几处使用到 故做了个小的demo, 记录下 效果如下: demo地址:https://github.com/wyon0313/BezierAnimation

内部区块链的优缺点
链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载。 内部区块链的优缺点1 区块链的作用是取代可信赖的第三方,或者是在不完全相互信任的实体之间建立信任关系,如此看来…

Spring框架系列之AOP思想
微信公众号:compassblog 欢迎关注、转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1、AOP概述 (1)、什么是 AOP AOP 为 Aspect Oriented Programming 的缩写,意为…

jstack 使用(转)
dump 文件里,值得关注的线程状态有:死锁,Deadlock(重点关注) 执行中,Runnable 等待资源,Waiting on condition(重点关注) 等待获取监视器,Waiting on monit…

ios TableView编辑状态多选框的修改
在- (void)layoutSubview 和 - (void)setEditing:(BOOL)editing animated:(BOOL)animated 中添加 UIImage *selectImg [UIImage imageNamed:"im_select_sign"]; UIImage *disSelectImg [UIImage imageNamed:"im_disSelect_sign"]; for (UIC…

区块链有哪些技术特征
链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载。 区块链有哪些技术特征 在信息网络化的大背景下,当需要与不熟悉的对手方进行价值交换活动时,人们如何做才能防止不会…

《JavaEE开发的颠覆者——Spring Boot实战》是一本好书
这本书的风格非常好、每一节都是先点明这一块知识的要点,随后就手把手的做出一个最简明、但有能体现核心的实例(大多只有几个Class) 这样的书用来熟悉一门框架,实在是再好不过。转载于:https://www.cnblogs.com/nanlan2017/p/1045…

html css 布局知识概况
1、如果想设置页面居中,当设置margin属性为auto的时候,不能在设置浮动或绝对定位属性。并且一定要设置width为一个定值 2、盒子模型三维立体结构图 3、浮动布局 利用浮动可以实现横向布局,通过float来实现(left--左浮动࿰…
项目的简单总结二--可拉伸的头视图
项目总结二 tableVIew和collectionview中头视图的可拉伸放大效果 demo中只做了tableview的效果, collectionview做法一样 效果如下图: demo地址: https://github.com/wyon0313/ZoomHeaderView

浅谈区块链技术
链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载。 浅谈区块链技术 这几天空闲的时候在网上浏览了一些区块链的技术,其实区块链只是一个技术,只不过是比特币很好的实…

IIS 7.5 去掉index.php 西数服务器
//新建web.config 加上下面代码<?xml version"1.0"?> <configuration> <system.webServer><rewrite><rules><rule name"OrgPage" stopProcessing"true"><match url"^(.*)$" /><condit…

bzoj1927: [Sdoi2010]星际竞速
跟上一题几乎一样。。。 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<queue> using namespace std; #define rep(i,n) for(int i1;i<n;i) #define clr(x,c) memset(x,c,sizeof(x)) #define op() cl…

在cell中取得UITableView所在的ViewController对象
原来碰到这个问题一般会将控制器传进cell中, 或者将cell要做的响应事件回调到控制器去处理, 前段时间找到一种方法觉得很不错 - (UIViewController *)getTableViewSuperViewController { for (UIView* next [self superview]; next; next next.superview) { UI…

区块链当前现状
链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载。 区块链是分布式账本技术,用于记录交易数据,具有不可篡改性、完整分布性、可追溯性等技术优势,应用包括…

MVC 4.0 Razor模板引擎 @Html.RenderPartial 与 @Html.RenderAction 区别
近来在学习MVC 4.0,设置布局全局网页的页脚,使用了Razor语法 {Html.RenderPartial("Footer", Model.FooterData);} 但是并不理解Html帮助器方法Html.RenderPartial。 先来介绍一下Html.RenderPartial用法。 Html.RenderPartial在Asp.net Mvc中…

iOS 图片处理-利用GPUImage 磨皮和美白图片
项目中要求处理图片, 简单记录一下美白和磨皮过程 (其中GPUImage还有美颜滤镜, 使用方式基本一样) //磨皮 - (void)editPhotoByBilateralWithLevel:(CGFloat)level { GPUImagePicture *pic [[GPUImagePicture alloc] initWithImage:image]; // 磨皮滤镜…

linux下编译php扩展
1 在pecl.php.net搜索你需要的php扩展 2 在解压后的扩展目录运行phpize 3 执行编译./configure --with-php-config/usr/local/php/bin/php-config 4 修改php/lib/php.ini文件 加上这句话extention扩展.so的绝对路径转载于:https://www.cnblogs.com/wyqn/p/8493456.html