IPFS基本介绍

文章目录

    • 一、什么是IPFS
      • 1. 什么是BT下载?
      • 2. BT走向失败
      • 3. IPFS能否走向成功?
      • 4. 和传统文件系统区别
    • 二、IPFS工作原理
      • 1. IPFS的架构
    • 三、IPFS的应用案例
    • 四、什么是Filecoin
      • 1. Filecoin 挖矿原理
      • 2. Filecoin的共识机制(存储证明)
    • 五、参考

一、什么是IPFS

IPFS官网:https://www.ipfs.io
IPFS中国社区: http://ipfs.cn/

IPFS的英文全称是 InterPlanetary File System,中文名叫星际文件系统。

github描述:A peer-to-peer hypermedia protocol to make the web faster, safer, and more open.

IPFS是一个点对点的分布式文件系统(比特币是一种点对点的电子现金系统),目标是为了补充(甚至是取代)目前统治互联网的超文本传输协议(HTTP),将所有具有相同文件系统的计算设备连接在一起。原理用基于内容的地址替代基于域名的地址,也就是用户寻找的不是某个地址而是储存在某个地方的内容,不需要验证发送者的身份,而只需要验证内容的哈希,通过这样可以让网页的速度更快、更安全、更健壮、更持久。

IPFS 技术就是把文件打碎,分散地存储在不同的硬盘里,下载的时候,再从这些散落在全球各地的硬盘里读取。其实用过 BT 下载的人会发现,IPFS 其实就是一种 BitTorrent 协议,开发团队对 BitTorrent 协议稍微升级了一下。

IPFS是一个协议,也是一个P2P网络,类似于BT网络,但是拥有更加强大的功能,使得IPFS拥有可以取代HTTP的潜力。
IPFS技术积累了很多年,它整合了过去几年最好的分布式系统思路,为所有人提供全球统一的可寻址空间,包括Git、自证明文件系统SFS、BitTorrent和DHT。

IPFS有一个激励层——Filecoin,是一个基于区块链的分布式存储网络,他把云存储变为一个算法市场,通过代币来做资源(存储和检索)使用者(IPFS用户)和资源的提供者(矿工)之间的桥梁,在这里,交易双方可以提出自己的需要达成交易。

ipfs命令中描述: Global p2p merkle-dag filesystem.

IPFS 分为 3 个代码库:
github.com/ipfs/ipfs - IPFS 规范
github.com/ipfs/go-ipfs - Go 实现
github.com/protocol/ipfs-webui - Web 工作台

1. 什么是BT下载?

IPFS
参考URL: https://www.zhihu.com/topic/20029262/hot

BitTorrent协议(简称BT,俗称比特洪流、BT下载、变态下载)是一个网络文件传输协议,它能够实现点对点文件分享的技术。比起其他点对点的协议,它更有多点对多点的特性,这个特点简单的说就是:下载的人越多,速度越快。下载完不马上关闭BitTorrent软件,就可以成为种子(拥有完整的档案者)分流让其他人下载。BitTorrent协议下,资源发布者不需要拥有高性能服务器,就能迅速有效地把发布的资源,传给其他的BT使用者,而且大多数的BT软件都是免费的。你可以把文件做成种子给别人下载,也可以下载别人提供的种子。

2. BT走向失败

尽管BitTorrent在技术上非常出色,但在十几年的时间里却一直未能找到合适的商业模式。最后创始人的股权被稀释到对公司毫无影响力,而投资者也纷纷离场。BitTorrent兴起于互联网早期,而当初的互联网要解决的是高效互联、信息传输的问题,HTTP协议在这一方面已经足够好用,它和浏览器的组合是互联网数据传输和展示的最佳搭档。除此之外,大多数用户文件下载完成后,并没有做种子的习惯。这就导致了BT网络的资源越来越少,传输速度也将越来越慢,需要下载的用户仍旧需要去体验苦苦等待下载完成的过程,用户体验感不可避免地越来越差。

3. IPFS能否走向成功?

万众瞩目的Filecoin全测评(附星际比特IPFS挖矿神器)
参考URL: https://www.chinaz.com/news/mt/2019/0308/999118.shtml

一:IPFS/Filecoin的出现填补了区块链的一个空白,就是储存。互联网三大基础就是储存,算力和带宽,没有存储的区块链是没办法进化的。

二:YC投资,红衫资本投资,还有很多硅谷大佬,师出有名,2017年1CO了2.5美金,是当时1CO的Top1。

三:IPFS开源协议始于2014年,但是当时没有Filecoin区块链概念这个激励层的概念。本身已经安全稳定运行4年多,在github的活跃度非常好,极客都非常喜欢。

四:IPFS的一个子模块libp2p已经被众多区块链项目采用,包括以太坊2.0和Polkadot这种明星项目,从侧面也能说明协议实验室对整个区块链的贡献和被认可度是很高的。

五:基于IPFS协议开发的Dapp和软件生态也基本已经形成。

时间会给出答案!

4. 和传统文件系统区别

IPFS和传统文件系统的一个重要区别就是——内容寻址。顾名思义,就是文件的内容定了,其地址(访问路径)也就确定了。这和我们平时存放文件不一样。通常,我可以给一张图片随意更换文件名,把它拷贝到不同的路径。这样,一模一样的文件,其访问方式却随时变化,不可能根据文件的内容确定其访问路径。

相比较而言,内容寻址的IPFS就具有一个天然的优势——防篡改。数据只要修改了一个bit,其地址就彻底变化。

二、IPFS工作原理

IPFS基本介绍_第1张图片

  • 每个文件及其中的所有块都被赋予一个称为加密散列的唯一指纹。
  • IPFS通过网络删除重复具有相同哈希值的文件,通过计算是可以判断哪些文件是冗余重复的。并跟踪每个文件的版本历史记录。
  • 每个网络节点只存储它感兴趣的内容,以及一些索引信息,有助于弄清楚谁在存储什么。
  • 查找文件时,你通过文件的哈希值就可以在网络查找到储存改文件的节点,找到想要的文件。
  • 使用称为IPNS(去中心化命名系统),每个文件都可以被协作命名为易读的名字。通过搜索,就能很容易地找到想要查看的文件。
  • 从IPFS的介绍可以看出, IPFS设想的是让所有的网络终端节点不仅仅只充当 Browser或Client的角色,其实人人都可以作为这个网络的运营者,人人都可以是服务器。

上传一个文件:
当我们往 IPFS 节点添加一个文件时,如果文件大小超过 256K(这个值可以设置),IPFS 会自动将文件分片,每个分片 256K,然后将切片分散存储到网络的各个节点中。每个分片都会生成唯一的哈希,然后把所有的分片的哈希值拼接之后在计算得到该文件哈希。 每个 IPFS 节点都会保存一张分布式的哈希表(DHT),包含数据块与目标节点的映射关系。无论哪个节点新增了数据,都会同步更新 DHT。

每个 IPFS 节点都会保存一张分布式的哈希表(DHT),包含数据块与目标节点的映射关系。无论哪个节点新增了数据,都会同步更新 DHT。

下载一个文件:
当我们需要访问这个文件的时候,IPFS 通过使用一个分布式哈希表,可以快速(在一个拥有 10,000,000 个节点的网络中只需要 20 跳) 地找到拥有数据的节点,获取文件的所有分片哈希,然后重新组合成完整的文件,并使用哈希验证这是否是正确的数据。

如果你启动了 IPFS 的守护进程, 可以通过 http://127.0.0.1:5001/api/v0/object/get?arg={hash} 这个 API 很方便的获取整个文件的所有分片。

而且 IPFS 不需要每个节点存储所有发布到 IPFS 上的内容。相反,每个节点只存储自己想要的数据。只有当访问某个文件的时候,节点才会去下载(同步)它。

1. IPFS的架构

参考URL: https://github.com/ChainBook/IPFS-For-Chinese/blob/master/IPFS%E6%BA%90%E7%A0%81%E6%9E%B6%E6%9E%84%E5%88%86%E6%9E%90/IPFS%E6%9E%B6%E6%9E%84%E8%A7%A3%E6%9E%90.md

IPFS至少有八层子协议栈,从上至下为身份、网络、路由、交换、对象、文件、命名、应用,每个协议栈各司其职,又互相搭配。

IPFS基本介绍_第2张图片身份层和路由层可以一起解释。对等节点身份信息的生成以及路由规则是通过Kademlia协议生成制定,KAD协议实质是构建了一个分布式松散Hash表,简称DHT,每个加入这个DHT网络的人都要生成自己的身份信息,然后才能通过这个身份信息去负责存储这个网络里的资源信息和其他成员的联系信息。 如同微信名片分享,在无法通过直接搜索微信号的情况下,如果你要找一个人,可以通过有这个人联系方式的朋友分享名片来建立联系。

网络层比较核心,使用的LibP2P可以支持任意传输层协议。NAT技术能让内网中的设备共用同一个外网IP,我们都体验过的家庭路由器就是这个原理。

交换层,是类似迅雷这样的BT工具。迅雷其实是模拟了P2P网络,并创建中心服务器,当服务器登记用户请求资源时,让请求同样资源的用户形成一个小集群swarm,在这里分享数据。这种方式有弊端,一位服务器是由迅雷统一维护,如果出现了故障、宕机时,下载操作无法进行。

中心化服务还可以限制一些下载请求,人们发明了一种更聪明的方式就是Bittorrent,让每一个种子节点所要存储的数据,通过哈希表存储在里面,BT工具相对不太受监管,服务更加稳定。

IPFS团队把BitTorrent进行了创新,叫作Bitswap,它增加了信用和帐单体系来激励节点去分享,我推断FileCoin有很大概率是基于Bitswap,用户在Bitswap里增加数据会增加信用分,分享得越多信用分越高。如果用户只去检索数据而不存数据,信用分会越来越低,其它节点会在嵌入连接时优先选择信用分高的。

这一设计可以解决女巫攻击,信用分不可能靠机器刷去提高,一直刷检索请求,信用分越刷越低。请求次数和存储量的变量之间有一个比较精妙的算法,类似一个抛物线,前期可以容忍很多东西,达到一定次数后不再信任。

对象层和文件层适合结合来谈,它们管理的是IPFS上80%的数据结构,大部分数据对象都是以MerkleDag的结构存在,这为内容寻址和去重提供了便利。文件层是一个新的数据结构,和DAG并列,采用Git一样的数据结构来支持版本快照。

命名层具有自我验证的特性(当其他用户获取该对象时,使用指纹公钥进行验签,即验证所用的公钥是否与NodeId匹配,这验证了用户发布对象的真实性,同时也获取到了可变状态),并且加入了IPNS这个巧妙的设计来使得加密后的DAG对象名可定义,增强可阅读性。

最后是应用层,IPFS核心价值就在于上面运行的应用程序,我们可以利用它类似CDN的功能,在成本很低的带宽下,去获得想要的数据,从而提升整个应用程序的效率。

IPFS基本介绍_第3张图片IPFS的团队在开发时,采用高度模块集成化的方式,像搭积木一样去开发整个项目。协议实验室团队2015年创立,到17年的时间里都在做IPLD、LibP2P、Multiformats这三个模块的开发,它们服务于IPFS底层。

Mutiformats是一系列hash加密算法和自描述方式(从值上就可以知道值是如何生成)的集合,它具有SHA1\SHA256 \SHA512\Blake3B等6种主流的加密方式,用以加密和描述nodeID以及指纹数据的生成。

LibP2P是IPFS核心中的核心,面对各式各样的传输层协议以及复杂的网络设备,它可以帮助开发者迅速建立一个可用P2P网络层,快速且节约成本,这也是为什么IPFS技术被众多区块链项目青睐的缘由。

IPLD其实是一个转换中间件,将现有的异构数据结构统一成一种格式,方便不同系统之间的数据交换和互操作。现在IPLD支持的数据结构,是比特币、以太坊的区块数据,也支持IPFS和IPLD。这也是IPFS为什么受到区块链系统欢迎的原因之二,它的IPLD中间件可以把不同的区块结构统一成一个标准进行传递,为开发者提供了成功性比较高的标准,不用担心性能、稳定和bug。

IPFS应用了这几个模块的功能,集成为一种容器化的应用程序,运行在独立节点上,以Web服务的形式,供大家使用访问。

三、IPFS的应用案例

GitHub有两款开源项目,且有对应网址,分别是音乐播放器和视频播放器。

IPFS音乐播放器网址:https://diffuse.sh/
GitHub地址:https://github.com/icidasset/diffuse

号称是国内第一个IPFS应用
IPFS视频在线播放器网址:http://www.ipfs.guide/
GitHub地址:https://github.com/download13/ipfstube

可用于测试的电影视频Hash(这里只列举两部):
神秘巨星:QmWBbKvLhVnkryKG6F5YdkcnoVahwD7Qi3CeJeZgM6Tq68
盗梦空间:QmQATmpxXvSiQgt9c9idz9k3S3gQnh7wYj4DbdMQ9VGyLh

四、什么是Filecoin

IPFS这种文件分布的协议作为一种技术,极其强大,但好技术不代表好产品。分布文件的行为,完全是自愿的,没有任何经济模型来激励。所以 Filecoin 出现了。

IPFS 白皮书的作者 Juan Benet,其也是 Protocol Labs 创始人,而 Filecoin 也是 Protocol Labs 这个公司旗下的一个项目。

Filecoin 是一条区块链,链上流通的 Token 也叫 Filecoin,这条链是基于 IPFS 协议,也就是使用 IPFS 的技术,再加上加密货币这种经济激励的引入,让 IPFS 协议能够被更多人使用,让更多的人愿意拿出自己的电脑和存储空间给其他人使用。

用 Filecoin 官网的话来总结:「简而言之,IPFS 是按内容搜索的技术; Filecoin 就是缺失的激励机制。

所以 Filecoin 确实是可以挖矿,但是 Filecoin 的挖矿到底是基于什么机制的?矿机管用吗?

比特币、以太坊的共识机制是 PoW 工作量证明,用工作量来定义挖矿奖励,你的成本就是耗电量。奖励的多少是由你的工作效率决定的,工作效率就是你的算力,算力决定你能挖出多少矿。矿机内的芯片可以提高你的算力,也就是让你的工作效率提高,同时耗电量也会增加。这是 PoW 的逻辑,所以在比特币网络里,矿机算力越高,就能让你挖比特币挖的更快。

然而 Filecoin 的共识机制并不是 PoW,它与算力无关。

Filecoin 的官网上明确说明,「Filecoin 的共识机制基于复制证明(Proof-of-Replication)和时空证明(Proof-of-Spacetime),里面不包含 hash 密集型的工作量证明(Proof-of-Work)」。

1. Filecoin 挖矿原理

「检索矿工通过赢取由该文件的市场价值决定的特定文件的投标和采矿费来获得 filecoin。检索矿机的带宽和交易的投标/对交易初始反应时间(即,延迟性和与客户的距离)将决定其在网络上的成交检索交易的能力。检索矿工的最大带宽将决定它的交易总量。」这是官网上对于 Filecoin 挖矿的原理。

简单来说,这是一种「存力挖矿」,就是看你存了多少有用的文件。用户上传一个文件,文件会分成若干碎片,然后矿工们要去抢这个文件的碎片放进自己的硬盘里,才可以得到 Filecoin。

所以 Filecoin 挖矿有几个关键的因素:首先,得有用户,有用户上传,这个矿才能挖;然后,还得考虑带宽、硬盘大小、用户距离等等,才能有可能挖矿成功。

那具体要多大的硬盘,多少带宽,什么样的 CPU 才能挖矿呢?这些连 Filecoin 创始团队自己的都不知道。在 Filecoin 的官网上写着「我们尚未发布 Filecoin 采矿的确切硬件规格要求」。因为 Filecoin 现在连主网都还没有,谈何挖矿呢?而且官网上还有一句话,「把 ASICs 设计成能支持对大量内存的随机访问可能是昂贵且可能是不切实际的。」

2. Filecoin的共识机制(存储证明)

比特币网络的共识机制:比如,我今天给小丽转一百块钱,同时假如整个网络里有一百万台计算机,我转钱的同时,我向一百万台计算机吆喝一声,我转给她了,于是就把账记在每个人的小账本上,每个账本都是保持统一的。记账的时候,CPU高速运转,是非常费电的。

比特币的这种共识机制,即以上这种行为,叫做工作量证明,大量消耗计算资源和能源。

Filecoin的共识机制相对环保,淘宝店主(矿工)发完货(完成存储),买家是要确认收货(确认矿工完成存储),这里的“确认矿工完成存储”,就是Filecoin的共识机制(存储证明,PoSt),这个“确认矿工完成存储”会一直存在于Filecoin网络中,用户可以随时查看。

Filecoin把矿工在网络中的当前存储数据相对于整个网络的存储比例转化为矿工投票权,利用存储证明(PoSt)来产生共识,不用像比特币那样浪费计算资源和能源,并且能激励矿工投入更多的硬盘为网络做贡献。

五、参考

精通IPFS:IPFS入门简介
参考URL: http://www.lianchaguan.com/archives/6253
https://github.com/xipfs/IPFS-Internals
Awesome IPFS
https://wiki.learnblockchain.cn/ipfs/readme.html
IPFS系列02-IPFS 与 web3.0
http://www.r9it.com/20190409/ipfs-and-web3.0.html
[推荐]IPFS-For-Chinese
https://github.com/ChainBook/IPFS-For-Chinese/
[推荐]IPFS指南
参考URL: https://zhuanlan.zhihu.com/ipfsguide
IPFS解析
参考URL: https://blog.csdn.net/qq_38371144/article/details/85410985

你可能感兴趣的:(分布式存储,IPFS,filecoin)