IPFS 基础入门知识

IPFS 基础入门知识

一 IPFS: Filecoin 和复制证明

概念

  • 挑战(challenge): 系统对矿工的提问
  • 证明者 (prover): 矿工向系统提供的证明, 完成挑战
  • 检验者 (verifier): 系统检测矿工是否完成数据存储任务
  • 数据 (data): 用户向矿工提交的需要存储或者已经存储的数据
  • 证明 (proof) : 矿工完成挑战是皇后的回答
  • 流程: x系统(verifier) 向矿工(prover)发起挑战(chaallenge),矿工答复证明(proof)系统检验矿工的答复以判断是否通过挑战(challenge)

filecoin 涉及的证明概念

数据持有证明(PDP): 用户发送数据给矿工存储, 矿工证明数据已经被自己存储

可检索证明(PoRet): 和PDP过程类似, 证明矿工存储的数据是可以用来查询

存储证明(Pos): 利用存储空间进行证明, 工作量证明的一种, 性的论文把名称变成了 PoRep

复制证明(Porep): 保证每份数据都说独立存储, 可以防止女巫攻击, 外源攻击和生成攻击

工作量证明(PoW): 证明者向检验者证明自己花费了一定资源, PoW 被用在加密货币, 拜占庭共识和其他各种区块链操作系统. BTC使用的就是这种证明

空间证明(PoSpace): Filecoin 提出的概念, 存储量的证明, PosSpace 是 PoW 的一种, 不同的是 PoW 使用的计算资源, 而 PsSpace 使用的存储资源

时空证明(PoSt): 矿工证明自己花费了 spacetime 资源,即一定时间内存储空间的使用, PoSt 是基于 PoReps 实现

复制证明(PoRep):PoRep 是 PoS 的进化版, 用来证明数据已经被矿工存储

07.png

二 IPFS 和 Filecoin

P2P协议节点越多, 下载速度越快

IPFS 是一个 P2P 协议

Filecoin 是一个分布式网络, 把云存储变为一个算法市场

没有IPFS, Filecoin 和其他 Storj, sia 一样, 没有区别

Filecoin 和 IPFS 结合在一起, 事情就变得美妙了, filecoin是运行在 ipfs 上的激励层. ipfs 有巨大存储需求, 如果没有奖励机制, 谁愿意贡献如此多的节点和存储呢?

filecoin 可以为 ipfs 提供很多节点, 同时 filecoin 带着一个巨大的分布式存储空间, 解决了 ipfs 存储问题

回形针解释p2p是什么

IPFS 协议

ipfs是一个协议也是一个网络。实实在在的网络,已经运行了2年半了。

就像btc网络一样,ipfs协议也没有发明什么,大多数工作是在前人已有的基础进行的,ipfs集成了如下已有的系统:

  1. DHT(distributed hash tables):分布式哈希表
  2. Git:版本管理工具
  3. BitTorrent:数据交换协议
  4. SFS(self-certified filesystems):自认证文件系统

IPFS 是如何设计的,都包含了什么?

  1. 节点身份
    每一个ipfs节点都有一个独一无二的身份id
  2. 网络
    ipfs节点要和网络里面成百上千的其它节点通讯,现实中的网络结构如此复杂,ipfs使用 ICE NAT穿透技术来保障网络的连通性。
  3. 路由
    ipfs网络的路由使用的是DHT,借鉴了S/Kademlia,使得一个节点可以快速的查找到其它节点。
  4. 数据交换协议
    ipfs借鉴BitTorrent协议,使用了叫做BitSwap的数据交换协议,该协议使用两个列表,想要的数据块(want_list)和我有的数据块(have_list)与其它节点进行数据交换。
  5. 对象存储
    ipfs存储数据使用的是 Merkle DAG结构,这赋予了ipfs内容寻址,防篡改,去重功能。
  6. 版本控制系统
    ipfs在 Merkle DAG上面添加了Git版本控制功能,这使得ipfs文件拥有了时光机功能
  7. 自认证命名系统
    ipfs使用了SFS自认证系统给文件命名,同时提供了ipns解决传播问题,而且还兼容了现有的域名系统

FileCoin 协议

filecoin是一个分布式存储网络,她把云存储转换为算法市场。filecoin是运行在ipfs上面的一个激励层。filecoin可以存储几乎一切数据,运行分布式应用,实现智能合约系统。

FileCoin 包含什么

  1. BlockChain
    跟其它区块链项目一样,这是filecoin的基础,一切都是围绕block和chain进行的。
  2. 交易市场
    filecoin拥有两个交易市场,检索市场和存储市场,矿工和用户在这两市场里面达成交易,实现价值交换。
  3. 共识机制
    有交易和区块链必然要有谁记账的问题,filecoin也一样,必然要解决的一个问题是,共识机制。
    将矿工当前在网中使用的存储量和生成的时空证明转化为投票的权重,然后节点利用这个权重进行选举产生一个或者多个领导节点,领导节点创建新的block并把它们传播到网络。filecoin的block数据结构采用了DAG结构。
  4. 智能合约
    filecoin采用了两个基本的api供用户使用,数据存储put,数据获取get,在这两种操作的基础上filecoin支持文件合约(File Contracts),让用户可以有更精细化的控制。filecoin集成了合约系统和桥系统,把filecoin的存储系统提供给其他区块链系统使用,同时可以让filecoin使用其它区块链的功能。

filecoin开发了桥(Bridge)工具,它可以链接不同的区块链,这就是为什么那么多的白皮书提到要和ipfs和区块链链接起来,因为filecoin天生就拥有这样的能力。

三 Filecoin: 影响力容错(PFT)和预期共识(EC)

Power Fault Tolerance:影响力容错

这是filecoin协议里面对 PFT的解释,power概念就是矿工的影响力(influence),“Power”是filecoin系统的投票权力的大小度量,根据矿工贡献的Power来计算矿工的投票权有多大,根据信达雅的基本要求,所以称为“影响力容错”。

共识

共识,一个区块链领域经常谈起的一个概念,任何区块链都无法绕开都一个问题。在我们都日常生活中,绝大多数机构都是中心化,一家银行,快递公司,电商网站等。共识是参与者之间达成一致。由中心化机构本身来维护共识;
比如:银行,帮我们所有人记账,由国家权力保障,我们信任银行,这是我们经济得以发展等基础。

在区块链领域,所有节点都是对等节点,就是说没有任何一个节点有超越其他节点等权限。那么想在这么一个一盘散沙等节点中维护一个共识是一件非常难等事情,试想一下,大广场上有1000个平等等互补信任等人,要让他们对一件事情做出共同对决策,其难度有多高?

起源
在学术界里面这个问题源于Leslie Lamport(图灵奖获得者)提出对“拜占庭将军问题”,目的是解决分布式对网络对通信容错问题。

拜占庭将军简单描述

假设有一个非常强大对敌人,需要9个将军一起围攻才能胜利,有一个人撤退都会失败。

9个将军是平等对,并且分布在不同对地方,只能通过信使进行通信。他们要达成一致,就需要进行投票,每位将军根据收到对情报来决定进攻还是撤退。

问题是将军里面会有叛徒,比如:当将军对投票达成4个进攻4个撤退对时候,叛徒将军可以采取对4个进攻对将军进行投票,对4个撤退对将军投撤退票。

决策对结果最终会崩溃,一部分将军选择来进攻,一部分选择来撤退。

分析问题发现,将军投票达成一致对协议,就叫做拜占庭共识,在有叛军情况下仍然能够达成正确的共识就做拜占庭容错。

2009年中本聪使用工作量证明的时候(POW)解决来这一问题,使得BTC能够成为现实。

Filecoin 如何解决拜占庭容错?

Filecon在拜占庭容错BTF的基础上提出了改进版的拜占庭容错,影响力容错(Power Fault Tolerance)和预期共识(Expected Consensus),用来替代能源和计算资源严重浪费的工作量证明(Proof-of-Work)机制。

PoSt是filecoin在验证矿工存储用户数据的时候产生的,Filecoin把矿工在网络中的当前存储数据相对于整个网络的存储比例转化为矿工投票权(voting power of the miner),重用PoSt来产生共识,太环保了,不用像BTC那样浪费计算资源和能源,并且能激励矿工投入更多的硬盘而不是计算资源和能源,为网络做贡献—–完美!!!

共识机制 – 领导人选举 (LE:Leader Election)

在区块链的世界里,出块权是一个十分重要的课题。这是一个去中心化的世界,每一个参与者都有为网络服务的权利,当然也有因为服务而获取报酬的权利。这个权利就是出块权,并在出块的时候获得出块奖励和交易手续费。

那么,谁具有出块权,因为区块链是一个链式结构,每一个区块高度的出块人最好只有一个,这个人是谁呢?这就类似于我们现实生活中的领导人,每一轮出块都需要有一(或多人)人来负责,这个产生出块人的过程,就是选举。

这个选举当然不可能象我们现实世界里那样通过一人一票来投票进行,如果这样,就可能出现操纵或贿选的情况,而区块链的共识机制中,一个理想的选举模式应当具有如下特性:

  1. 选举秘密进行 (Secret)
  2. 选举是公平的 (Fair),基于一套规则,在规则的基础上概率起作用
  3. 最好没轮选举出一个领导人(Single Leader)
  4. 无法预测(Unpredictable)
  5. 十分容易验证 (Verifiable)
  6. 能够承受攻击(Anti-attack)
  7. 消耗资源不大(Efficient)

基于以上几点,POW是目前现实使用中最好的方式,但是POW有其致命的弱点,就是不满足最后一条。它需要浪费大量能源,来达成共识;另外,它不能保证每一轮只有一个领导人,因此会出现链的分叉,必须采用其他规则来进行收敛(比如最长链法则)。

预期共识(Expected Consensus,EC)

预期共识实现了前面提到的几乎所有特性,就差一点。这一点就是不能实现单个领导人的选举,也也是预期共识的一个最大的弱点:每一轮选举出来的领导人可能是多个,也可能没有,平均下来是一个。除了这一点,其他的,EC都实现得非常漂亮。

Filecoin的共识机制吸收了共识机制发展中的各种成果,第一次实现了基于有价值的网络的共识算法。它包括:

  1. 基于存储的工作量证明(POW)共识
  2. 可扩展的拜占庭容错共识机制
  3. 权益证明(POS)共识机制

由于预期共识一轮选举可能产生多个领导人,这个问题怎么解决?很简单,都当领导,各自产生区块,而且每一个区块都有效。也就是说同一个高度就可能有多个区块。怎么处理?办法是,把这些区块再打包,称为一个tipset。因此,在Filecoin中,链并不能完全称为区块链,也应该是tipset链。一个tipset里包含一个或多个区块。也有的轮次中的选举没有领导人,怎么办呢?那就跳过,这个高度就是一个空块。这样一来,尽管不够均匀,但形成了链,而且是收敛的。

共识是一个区块链领域的核心,区块链天生就是对等的分布式网络,这就是所谓的去中心化。去中心化现在被吹的有点过了,去中心化不是万物的灵药,只是在自己领域里面有独特的作用,中心化的效率还是非常高的。

所以不应一味的强调去中心化,而是应该根据实际的应用场景来决定使用范围。

相信区块链的共识协议会随着区块链的发展进化出更加美好的共识协议,区块链也会逐步进化,成长!

四 IPFS 家族

IPFS这个项目其实很大,并不像大家想象的是一个东西,IPFS是由很多模块组成,每一个模块现在都已经独立成项目了,并且有自己的主页。

IPFS:ipfs.io

Filecoin: filecoin.io

libp2p: libp2p.io

IPLD:ipld.io

Multiformats:multiformats.io

01.jpeg

libp2p

在过去的相当长时间里,开发者构建一个p2p网络并不是一件容易的事情。复杂的网络环境、各种各样的通信协议和网络设备的存在使得创建大规模的点对点网络变得复杂并且困难。IPFS团队将点对点(peer-to-peer)网络的网络层从IPFS工程里面分离出来,形成一个独立的项目,这就是libp2p。该项目不仅可以供IPFS使用,也可以提供其它项目使用,作为一个p2p工程的底层协议存在。

02.jpg

Transports:传输层,TCP,uTP,QUIC,SCTP……

Discovery:网络发现层,mDNS,bootstrap,DNS,Kad……

Peer Routing: 节点路由,mDNS, KadDHT……

NAT Traversal: NAT穿越层……

Content Routing: 内容寻址……

libp2p的主要功能是:

发现节点

连接节点

发现数据

传输数据

IPLD

IPLD定义了基于内容寻址的统一数据结构类型。它是一个转换器,可以把现有的异构的数据结构(基于内容寻址)统一成一种格式,方便不同系统之间的数据交换和互操作。

为什么要构建IPLD?

通过哈希进行内容寻址的技术已经广泛应用于各种分布式系统。从加密货币的区块链到备份代码的每一次提交,再到各种web内容,他们背后的逻辑几乎是相同的, 然后由于数据结构的不兼容,造成了这些数据无法互相操作。

作为一个中间层可以很方便的进行链之间的数据交换,IPFS团队已经帮大家造好了轮子。

Multiformats

该项目的是一系列协议的集合,它在现有协议基础上对值(值:通常是具有某一项表达意义的)进行自我描述改造,即从值上就可以知道该值是如何产生的。

multihash – self-describing hashes

multiaddr – self-describing network addresses

multibase – self-describing base encodings

multicodec – self-describing serialization

multistream – self-describing stream network protocols

multigram (WIP) – self-describing packet network protocols

我们以第一个multihash为例子来说明什么是multiformats。通常情况下我们使用的哈希计算方法都是某一种实现方式,比如sha1,sha2-256等。

哈希计算在我们的软件工程里面几乎随处可见,特别是区块链项目。multiformats将所有的哈希值计算统一成同样的格式,这会为系统开发者带来很多好处,比如加密函数升级等。

multihash:

升级后的哈希值的结构为:

<hash-func-type><digest-length><digest-value>

<哈希函数类型><摘要长度><摘要值>

我们有一个使用sha2-256函数生成的哈希值(如下),其长度为3216进制0x20):

41dd7b6443542e75701aa98a0c235951a28a0d851b11564d20022ab11d2589a8

规定sha2-256的代表数字为12(16进制)

于是我们得出来新的哈希值:

122041dd7b6443542e75701aa98a0c235951a28a0d851b11564d20022ab11d2589a8

新的哈希值具有自我描述性质,它说明了自己是怎么来的。

五 Filecoin的通证经济

基本情况

总数:20亿枚

参与资格:美国合格投资人身份认证(采用与IPO相同的流程,以确保合法性)

爱西欧占比:10%(2亿枚)

爱西欧总金额:2.57亿美元

Token持有详情

矿工:70%

协议实验室:15%

投资者:10%(公募+私募)

Filecoin基金会:5%

Token分发详情

开始时间:Filecoin网络上线开始算时间,例如:6个月分发期(vesting period),网络上线后6个月内发放完毕

投资者(爱西欧):1年最低分发期(私募),6个月最低分发期(公募)

协议实验室:6年,线性释放

Filecoin基金会:6年,线性释放

矿工:6年分发一半

Token分发策略

1.Filecoin团队把70%的Token给了矿工,这在爱西欧里面是非常有诚意的表现,也是为什么现在如此多的矿工关注的原因。

2.矿工部分的Token设计6年分发大约一半的币(比特币是4年),为什么是6年?协议实验室认为6年无论是对Filecoin网络增长还是对投资者长期回报都是一个恰当的时间周期。

3.总的分发规划大约4年分发总量一半的代币(10亿枚),其中包括:矿工挖矿、投资者解禁(爱西欧)、协议实验室和基金会的解禁额度.

4.Filecoin的分发采用的是线性分发,即随着每个区块(block)被矿工开采,逐步分发Token。例如:分发期2年的Token,网络启动后的6个月分发25%,1年分发50%,2年分发100%

影响Filecoin流通量的因素

挖矿:随着每个区块被挖出,释放出来的Token

解禁:跟IPO一样,按照合同随着时间解禁的Token

抵押:矿工为了挖矿进行抵押的Token

锁定:在检索市场和存储市场随着交易被锁的Token

智能合约:被智能合约锁定的Token

丢失:由于丢失密钥而被锁定的Token

六 Filecoin:矿工是怎么赚取FIL

03.jpg

Filecoin矿工分为两种:

  1. 存储矿工(靠存储文件赚钱)
  2. 检索矿工(靠下载文件赚钱)

这两种矿工如何进行挖矿?

在Filecoin体系里面,矿工贡献的资源分为两种:存储空间和流量

Filecoin矿工贡献的两类资源,存储和流量组成了价值交换市场

Filecoin区块链的的共识协议形成了新币分发市场

系统参与者:

用户:有存储需求,或者有数据下载需求的用户,或者持有Filecoin代币的持币人

矿工:Filecoin矿工,贡献存储和流量资源

交易所:Filecoin代币和法币之间的交换

04.jpg

价值交换市场

用户和交易所:用户购买FIL,以备使用

矿工和交易所:矿工出售FIL,换取法币

用户和检索矿工:交换流量,用户付费下载数据,矿工发送数据并获取用户支付的FIL

用户和存储矿工:交换存储空间,用户付费存储数据,矿工帮用户存储数据并获取用户的FIL

Note:
在这个流程里面,没有新币(新的FIL)分发,只有已有代币之间的价值交换,称为价值交换市场。

共识协议市场:

存储矿工和Filecoin协议:存储矿工使用已存储的数据,参与共识协议,获取新币的分发。这个过程跟BTC的挖矿过程一样

存储矿工和FIlecoin协议:存储矿工需抵押一定量FIL代币,以此来出售自己的存储空间

Note:
检索矿工不参与新币分发,即不参与共识协议

存储矿工收益

存储收益:帮用户存储数据,获取用户支付的存储费用(价值交换)

新币分发:参与共识协议,获取新币分发(上帝发币)

交易手续费:参与共识协议,获取交易手续费

检索矿工收益

检索收益:用户下载数据,获取用户支付的下载数据费用(FIL)

数据来源

存储矿工的数据来源:用户付费存储数据。

检索矿工的数据来源:自己作为存储矿工,存储的用户数据;自己从其他矿工那里购买下载的数据;自己找的一些数据。

Note:

作为存储矿工,存储的数据只能由Filecoin区块链分发一种方式。

作为检索矿工,可以有多种数据来源,自己作为存储矿工存储的数据,自己找的一些数据,自己还可以从其他矿工那里付费下载一些数据。

存储矿工价格影响

  1. 努力让更多的用户把数据存储到你这里
  2. 网络速度
  3. 存储数据的定价,甚至可以为0,当然如果为0,就无法获取到存储收益了
  4. 存储矿工所需的调优:动态调整存储的价格,以获取更多的收益

检索矿工的收益影响因素

  1. 努力给更多的用户提供数据
  2. 网络带宽
  3. 网络时延
  4. 存储的数据用户的需求度
  5. 检索数据的定价

下载也要费用?

我存的数据,下载也要付费吗?是的
下图是一张阿里云OSS云存储的截图,上面显示存储数据量79.28G,本月的数据下载量1.6TB。存储要付费,流量也是要付费的。

05.png

filecoin 区块奖励公式

06.png

挖矿机制

很多人认为有 IPFS 矿机就是硬盘挖矿,但光有硬盘好像又挖不到FIL,FIEcoin 的挖矿机制是什么?

Filecoin 的挖矿机制应该是目前所有挖矿的币种中最复杂的,远没有大家认为的有硬盘就可以挖矿那么简单。今年一季度,Filecoin 开发测试网的上线,有超过 80% 以上的矿机厂商发现自己的矿机在开发测试网上根本挖不到矿。先给大家看张图,估计就有点懵逼:

07.png

协议实验室为了能让矿工们老老实实地为用户提供存储数据和检索数据的服务,公平的分配 Token,所以就设计了一套复杂的共识机制——复制证明(PoRep)和时空证明(PoSt),所以 Filecoin 挖矿也是目前所有挖矿的数字货币中最为复杂的,对于矿工的专业要求非常高。

Filecoin 主网上线初期,并不会有太多真实存储和检索服务的需求,所以早期矿工的收益主要是获取区块奖励,而区块奖励则是根据矿工的算力占比来分配区块奖励,谁的算力越高、获得区块奖励的概率就越高。

而 Filecoin 挖矿的算力不是根据矿工的硬盘空间来计算的,而是根据矿工硬盘有效存储文件的数量来计算的。

七 Filecoin 矿机、矿场、矿池以及云算力的区别和关系

矿机

Filecoin矿机实际上就是一台专业的存储服务器,它主要由机箱、主板、电源、风扇、处理器(CPU)、内存(RAM)、显卡(GPU)、硬盘等部件组成。除了一些辅助部件外,大家最关心的还是CPU、GPU、内存和硬盘等核心部件。

08.png
09.png

其实官方提出的硬件配置要求只是一个基础值,对于大矿工来说没有什么意义。

大矿工所采用的硬件配置基本都远高于官方给出的配置。

能不能挖出来Filecoin?能挖多少Filecoin?最主要的还是看矿工的系统集群以及算法优化的能力。

这也是为什么全球数以百家的专业矿工,在Filecoin测试网上跑出成绩的只有十来家的主要原因。

硬盘

首先说下硬盘。衡量硬盘的性能指标包括硬盘容量、硬盘速度、硬盘转速、接口、缓存、硬盘单碟容量等。因为Filecoin挖矿的本质还是做存储,从数据安全角度出发所以目前绝大多数矿机厂商采用的都是8T容量的企业级SATA机械硬盘,也有少部分矿机厂商选用的是10T或者12T的,大家基本上都是选择希捷、西部数据或东芝等几个主流品牌。

10.jpg

CPU

高性能的CPU使矿工可以更快地处理数据并更快地生成复制证明,从而在网络上获得更多的有效存储(算力)。目前官方要求最低的CPU配置为8核。

内存

Filecoin挖矿在复制证明(PoRep)和时空证明(PoSt)的零知识证明(SNARK)生成过程中需要消耗大量RAM(内存),以实现高效的链上提交。

目前测试网最低要求封装扇区是32G,内存要求配置是128G以上。一般来说,内存够大可保证足够的读取速度。

GPU

Filecoin 官方确认要使用 GPU 方案

只有当矿工在给定的时间段内赢得块奖励的选举票时,才会在时空的选举证明(“ElectionPoSt”)期间运行SNARK(零知识证明)。

ElectionPoSt的时间要求很高,一般的CPU配置难以完成,因此,配置GPU的目的是为了压缩生成 SNARK的时间和空间。每当矿工赢得记账权时,GPU会被用来准确计算出每个周期内的PoStSNARK。

生成时空证明所需的GPU算力大小在很大程度上取决于矿工在网络中的有效存储占比。

矿场

我们所说的矿场,其实就是将几十、几百甚至几千台矿机(服务器)进行集中运维管理的一个物理空间集合。Filecoin 挖矿由于特有的抵押和惩罚机制,对于挖矿环境要求很高,原则上不允许出现断网断电的情况,否则可能触发惩罚机制,罚扣你所质押的代币,矿工得不偿失。

11.jpeg

IDC的全称是Internet Data Center,也就是互联网数据中心,就是电信部门利用已有的互联网通信线路、带宽资源,建立标准化的电信专业级机房环境,为互联网内容提供商(ICP)、企业、媒体和各类网站提供大规模、高质量、安全可靠的专业化服务器托管、空间租用、网络批发带宽等业务。

矿池

前面讲到的矿场是将几十、几百甚至几千台矿机(服务器)进行集中运维管理的一个物理空间集合;而矿池则是将几十、几百甚至几千台矿机(服务器)的计算能力进行系统集群的虚拟空间集合。

云算力

有了矿池就衍生出了云算力。早在2014年12月,比特大陆创始人吴忌寒在接受采访的时候就说:“云算力会是未来挖矿的主流。”

由于Filecoin挖矿对于挖矿场所(矿场)、运维能力的要求较高,所以一般个人矿工很难进行家庭挖矿。再加上前期挖矿比拼的也是算力,个人矿工的算力规模很难与专业矿工相抗衡。而且Filecoin的整机价格相对较高,并不是所有投资者都能够承受,所以云算力成为一般散户投资者的首选。

云算力其实可以简单理解为矿机租赁,由于Filecoin矿机(服务器)整机的价格相对较高,通过将整机的算力空间进行拆分,可以降低投资和的资金门槛和技术门槛。以FILPool矿池的云算力合约为例,1T起购,最低只需要一千多元就可以参与Filecoin挖矿,而且挖矿过程中无需承担繁杂的矿场运维工作。

作者:CourteousBin
链接:https://www.jianshu.com/p/34b7203f81d2
来源:简书

张贴在未分类