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。

原创文章,作者:burning,如若转载,请注明出处:http://ipfser.org/2017/12/28/r12/

发表评论

登录后才能评论

评论列表(15条)

  • xfengltl 2017年12月28日 下午10:44

    先上车,跟着烧哥,越来越了解ipfs了

  • chinaxcb 2017年12月28日 下午10:48

    辛苦了,一步步揭开IPFS的神秘面纱

  • ipfsadict 2017年12月29日 上午1:22

    感谢分享,全是干货!

  • kkkk6921 2017年12月29日 上午1:28

    这是未来这是未来

  • 15139167888 2017年12月29日 上午7:55

    上车,跟烧哥

  • TonyZhang 2017年12月29日 上午9:08

    跟上车,真心觉得好

  • caryxy 2017年12月29日 下午2:11

    好,支持支持支持

  • dongdong 2017年12月29日 下午2:43

    ipfs加油

  • liangjianwen007 2017年12月29日 下午10:55

    看的有点晕,感觉很高大上

  • Joseph1991 2017年12月30日 下午11:21

    我的用户名是?

  • qwe8693545 2017年12月31日 上午9:47

    ipfs
    雄起

  • QQ8410012 2017年12月31日 上午10:26

    未来已来,速度上车。。。

  • granite826 2018年1月1日 下午8:04

    gogogo

  • flyingforce 2018年1月5日 上午11:22

    搞得太复杂的感觉,这么多证明实际上只是证明了用户提供空间存储了IPFS的数据,但是这些数据是否有价值却没有证明,为什么不直接搞一个数据共享量,判断到底从这个节点共享了多少数据出去?
    转念想想,他的设计可能是存储用户自己是没有办法去de-active具体数据的,任务是提供存储空间就行了,存什么数据完全由IPFS来搞定,用户的存储空间完全是当做Cache来管理,但是这样后续的问题就是IPFS如何去de-activate具体的数据,来free出用户的存储空间,搞得不好就是一个相对热门资源明天全网到处都是备份,相对冷门资源在同一时刻被全网统一删除,毕竟作为一个具体终端,存储量总是有限的。

  • duanyun 2018年1月8日 下午9:11

    不错,很有前景IFPS

联系我们

在线咨询:点击这里给我发消息

邮件:[email protected]

工作时间:周一至周五,9:30-18:30,节假日休息

QR code