IPFS:Filecoin和复制证明
这篇文章主要来讲一下Filecoin协议里面的复制证明(Proof of Replication),由于协议涉及到很多概念,可能看起来有点晕乎乎的,小编尽量把复杂问题简单化 ,力求给大家做大普及IPFS知识

概念:
挑战(challenge):系统对矿工发起提问,可能是一个问题或者一系列问题,矿工正确的答复,则挑战成功,否则失败
证明者(prover):矿工向Filecoin系统提供有效的证明,来完成挑战(challenge)
检验者(verifier):系统代表用户向矿工发起挑战(challenge),来检测是否矿工完成了数据存储任务
数据(data):用户向矿工提交的需要存储或者矿工已经存储的数据
证明(proof):矿工完成挑战(challenge)时候的回答
流程:系统(verifier)向矿工(prover)发起挑(challenge),矿工答复证明(proof),系统检验矿工的答复以判断矿工是否通过本次挑战(challenge)。
Filecoin涉及到的证明概念:
数据持有性证明(Provable Data Possession ,PDP):用户发送数据给矿工进行存储,矿工证明数据已经被自己存储,用户可以重复检查矿工是否还在存储自己的数据
可检索证明(Proof-of-Retrievability,PoRet):和PDP过程比较类似,证明矿工存储的数据是可以用来查询的。
存储证明(Proof-of-Storage ,PoS):利用存储空间进行的证明。工作量证明的一种,Filecoin上一篇论文使用了这个名字,新的论文则升级为PoRep
复制证明(Proof-of-Replication,PoRep):新的 PoS(Proof-of-Storage),PoRep可以保证每份数据的存储都是独立的,可以防止女巫攻击,外源攻击和生成攻击
工作量证明(Proof-of-Work,PoW):证明者向检验者证明自己花费了一定的资源,PoW被用在加密货币,拜占庭共识和其他各种区块链系统。BTC使用的就是这种类型的证明,依赖巨量的哈希计算和能源消耗来建立共识和保证btc网络的安全性
空间证明(Proof-of-Space,PoSpace):Filecoin提出的概念,存储量的证明,PoSpace是PoW的一种,不同的是PoW使用的计算资源,而PoSpace使用的是存储资源
时空证明(Proof-of-Spacetime,PoSt):时空证明,矿工证明自己花费了spacetime资源, 即:一定时间内的存储空间的使用,PoSt是基于PoReps实现的
复制证明(Proof of Replication,PoRep):PoRep 是PoS的进化版:用来证明 数据(data)已经被矿工存储
为什么要搞这么复杂?
区块链里面任何精巧的系统都需要精心设计(比如BTC),让系统能够自己一直运行下去,搞这么复杂目的不外乎下面两个:
保证矿工能够老老实实的帮助用户存储数据
公平的分配代币
复制证明:Proofs-of-Replication
PoRep必须能够防范以下三种常见的攻击方式:女巫攻击,外源攻击和生成攻击,他们的共同特点是攻击矿工实际存储的数据大小要比声称存储的数据小,这样攻击矿工就能获得本不该他获得的报酬。
女巫攻击(Sybil Attack):利用n个身份,承诺存储n份数据D,而实际上存储小于n份(比如1份),但是却提供了n份存储证明,攻击成功。
外部数据源攻击(Outsourcing Attack):当攻击者矿工收到检验者要求提供数据D的证明的时候,攻击者矿工从别的矿工那里生成证明,证明自己一直存储了数据D,而实际上没有存储,攻击成功
生成攻击(Generation Attack):攻击者A可以使用某种方式生成数据D,当检验者验证的时候,攻击者A就可以重新生成数据D来完成存储证明,攻击成功
防范生成攻击比较困难,所有的PoS协议都会遇到这样的问题,如何保证矿工真正的存储了这些数据,目前这还是个待解决的问题,PoRep需要解决这个问题,Filecoin协议采用一种叫做 RepGame 的游戏来一起解决这三种攻击方式,PoRes还在此基础上引入了时限性(Time Bounded),PoRes协议的实现可能有很多种方式,不管哪种实现方式都必须能够防止上面的三中攻击方式,并且要能够通过RepGame游戏的测试。
时空证明:Proofs-of-Spacetime
时空证明提出了证明链(proof-chain)的数据结构,证明链把一些的提问(challenge)和证明(proof)链接起来形成。在证明链的基础上添加上时间段,这样就得到了一段时间内的矿工存储数据的证明,这就是时空证明(Proof of Spacetime,PoSt),PoSt可以证明在该段时间内矿工存储了特定的数据,并且利用时间戳锚定这些证明链,这样即使验证者(verifier)不在线,也能够在将来去验证矿工在该段时间内生成了证明链,PoSt会被提交到链上用来产生新的Block。
PS: time-bounded Proof-of-Replication 和 Proofs-of-Spacetime的可实现结构目前Filecoin团队还没有给出来具体的细节,期待Filecoin下一篇论文。
作者飞向未来,致力于IPFS/Filecoin在中国的技术推广,他的微信公众号和社群,目前是中国最活跃最顶级的IPFS社群。作者飞向未来是圆方圆区块链的特邀嘉宾,所有转载都已经得到飞向未来本人授权。
更多飞向未来导师的公众号,可以在IPFS指南公众号中找到。
圆方圆链圈

IPFS:Filecoin和复制证明的更多相关文章
- IPFS扫盲
第二届深圳区块链技术与应用大会暨展览会,深圳区块链存储与IPFS技术应用大会暨展览会于2019年4月9日在深圳会展中心6号馆举行.那么这个IPFS是什么?和区块链有什么关系?有什么用?又怎么用呢?接下 ...
- IPFS如何挖矿<Filecoin系统>?(一)
本来这篇文章应该晚一点写, 但是这几天一直有朋友在公众号留言, 迫切的想知道IPFS到底如何挖矿, 所以就提前写一篇关于IPFS挖矿的文章. 本文暂不涉及具体的技术细节, 只做大概的介绍. 首先, 好 ...
- Filecoin挖矿进展
预计Filecoin第一个版本发布最早在 2018.3月份(预计) Protocol Labs这次ICO拿到了2.05亿美元,已经富得流油了,相信开发进度会快很多,Filecoin论文发表最早 ...
- Filecoin:一种去中心化的存储网络(二)
开始初步了解学习Filecoin,如下是看白皮书的内容整理. 参考: 白皮书中文版 http://chainx.org/paper/index/index/id/13.html 白皮书英文版 http ...
- Filecoin:一种去中心化的存储网络(一)
开始初步了解学习Filecoin,如下是看白皮书的内容整理. 参考: 白皮书中文版 http://chainx.org/paper/index/index/id/13.html 白皮书英文版 http ...
- Filecoin: 挖矿流程扫盲
前言 IPFS以及FileCoin的白皮书知识量比较大,需要花费一些时间成本来学习. 下面先针对挖矿相关的知识进行研究,总结一下Filecoin中挖矿的流程以及相关概念. What is Fileco ...
- IPFS挖矿必须要托管吗?
IPFS 本质上只是一个人人使用的协议,而 Filecoin 是 IPFS 的激励层,大家平时说的 IPFS 挖矿,其实就是挖 Filecoin.而提到IPFS 就不得不说到矿机托管的问题. 点击了解 ...
- IPFS挖矿原理介绍
随着近几年区块链行业迅速发展,虚拟货币交易机制逐渐成熟,作为「区块链新贵」的 IPFS渐渐走入广大投资者的视线. IPFS 与其激励层的运作原理是投资者们必须要了解的.所以今天我就来和大家讲讲 IPF ...
- Filecoin: 影响力容错(PFT)和预期共识(EC)
名字翻译:Power Fault Tolerance-影响力容错 关于这个名字翻译,小编思考了大约2周时间,期间也跟各路技术牛人进行了交流. The Power Fault Tolerance mod ...
随机推荐
- 使用lambda编程之延迟执行
使用lambda表达式的主要原因是,将代码的执行延迟到一个合适的时间点. 所有的lambda表达式都是延迟执行的.毕竟,如果你希望立即执行一段代码,那就没有必要使用lambda表达式了.延迟执行代码的 ...
- jVM笔记4-对象的结构
1.对象的结构有: 1.Header(对象头),其组成主要有两部分: 1.自身运行时的数据(Mark Word),包括: 1.哈希值 2.GC分代年龄. 3.锁状态标志 4.线程所持有的锁 5.偏向线 ...
- ORACLE NLS_DATE_FORMAT设置
最近在ORACLE里面设置NLS_DATE_FORMAT日期时间格式时遇到了一些问题,顺便整理一下.以防以后忘记时,能顺速翻阅. 1:在会话级别设置nls_date_format对应的日期格式. ...
- Shell脚本编程学习入门 02
Shell脚本编程学习入门是本文要介绍的内容,我们可以使用任意一种文字编辑器,比如gedit.kedit.emacs.vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行): #! ...
- mysql一些使用技巧
1.查看系统帮助文档:HELP contents; 2.查看所有支持的数据类型:HELP Data Types; 3.查看对应的数据类型的详细信息:HELP 类型:如HELP INT; 4.查看存储引 ...
- MySQL查看最大连接数和修改最大连接数
MySQL查看最大连接数和修改最大连接数 1.查看最大连接数 show variables like '%max_connections%'; 2.修改最大连接数 set GL ...
- jquery-1.11.1.js
每次想要使用这个js时,总是要到官网上下载,太麻烦,现在把它收录了 jquery-1.11.1.js /*! * jQuery JavaScript Library v1.11.1 * http ...
- TypeError: Error #1034: 强制转换类型失败:无法将 mx.controls::DataGrid@9a7c0a1 转换为 spark.core.IViewport。
1.错误描述 TypeError: Error #1034: 强制转换类型失败:无法将 mx.controls::DataGrid@9aa90a1 转换为 spark.core.IViewport. ...
- 芝麻HTTP:Python爬虫实战之抓取淘宝MM照片
本篇目标 1.抓取淘宝MM的姓名,头像,年龄 2.抓取每一个MM的资料简介以及写真图片 3.把每一个MM的写真图片按照文件夹保存到本地 4.熟悉文件保存的过程 1.URL的格式 在这里我们用到的URL ...
- iOS - XMPP 的使用
1.XMPP XMPP 是一个基于 Socket 通信的即时通讯的协议,它规范了即时通信在网络上数据的传输格式,比如登录,获取好友列表等等的格式.XMPP 在网络传输的数据是 XML 格式. 开发架构 ...