IPFS调查报告书

1.概述

星际文件系统(InterPlanetary File System,缩写IPFS)是一个旨在创建持久且分布式存储和共享文件的网络传输协议。它是一种内容可寻址的对等超媒体分发协议。在IPFS网络中的节点将构成一个分布式文件系统。

本文介绍IPFS的协议,白皮书,环境搭建,应用场景。

2.目的

本文通过是什么,为什么,怎么做的思路,来了解IPFS是什么。

3.是什么

3.1软件信息

  • 开发者 Protocol Labs

  • 稳定版本 0.4.22 (2019年8月15日)

  • 源代码库 github.com/ipfs/ipfs

  • 编程语言

  • 协议实现:Go(参考实现)、JavaScript、C语言, Python

n 客户端库:Go、Java、JavaScript、Python、Scala、Haskell、Swift、Common Lisp、Rust、Ruby、PHP、C#、Erlang

n 操作系统 FreeBSD、Linux、macOS、Windows

  • 语言 Go、JavaScript、Python

  • 类型 协议、分布式文件系统、内容分发网络

  • 许可协议 MIT许可证

  • 网站 ipfs.io

3.2官方解释

IPFS是什么?

Ø IPFS是协议,定义了基于哈希寻址内容文件系统,并结合了来自Kademlia、 BitTorrent、Git等的想法来协调内容传输。

Ø IPFS是文件系统。有文件夹、文件和基于FUSE的可挂载文件系统。

Ø IPFS是一种互联网。文件可以通过HTTP网关来访问,例如https://ipfs.io。浏览器通过扩展能直接使用ipfs://域,且哈希寻址保证了内容的真实性

Ø IPFS是p2p。支持世界范围点对点文件传输,具有完全分散的架构,没有中心点故障。

Ø IPFS是CDN。在本地库中添加一个文件,立即对世界可用,并拥有对缓存友好的内容哈希地址和BitTorrent一样的带宽分发。

4.为什么

4.1.技术特点

区块链百花争鸣的时代, 各种应用场景争相开放,就算在同一个领域,也会有各种产品出现。如分布式存储领域, 有storj, maidsafe, swarm, zeronet, ipfs等。在这里, 主角当然是IPFS。

正如比特币一样, 它没有产生新的技术,而是总结前人的技术,它是p2p, 密码学,共识学等技术的组合体。IPFS则组合了4大技术点如下:

  1. 分布式哈希算法(kad算法,coral dsht算法,s/kad 算法)(快速点对点定位,最优路经,防攻击。)

  2. 百度种子用到的技术BitTorrent(数据是双通道传输,参与人越多速度越快,解决了带宽问题。)

  3. 分布式版本控制系统git(分布式记录所有版本,安全的有据可查。)

  4. 自我认证文件系统-SFS(分布式信任链,平等共享的全局命名空间。方便所有的文件有全局唯一名字)

4.2 IPFS协议栈

与HTTP类似,IPFS是基于TCP/IP的应用层协议,同时作为一个分布式的文件系统,IPFS提供了一个支持部署和写入的平台,同时能够支持大文件的分发和版本管理。IPFS协议栈由七层负责不同功能的子协议构成:

Ø 身份层:管理节点身份生成和验证。

Ø 网络层:管理与其他对等体的连接,使用各种底层网络协议。

Ø 路由层:维护信息以定位特定的对等体和对象。响应本地和远程查询。默认为DHT,但可更换。

Ø 交换层:一种支持有效块分配的新型块交换协议(BitSwap),模拟可信市场,弱化数据复制,防作弊。

Ø 对象层:具有链接的内容寻址不可更改对象的Merkle DAG,用于表示任意数据结构,例如文件层次和通信系统。

Ø 文件层:由Git启发的版本化文件系统层次结构。

Ø 命名层:自我认证的可变名称系统。

image002.jpg

图 4-1

image004.png

图 4-2

IPFS 技术栈

Ø sfs,git技术分别用到了IPNS 层,应用层(applications)。 全局唯一名字, 带版本跟踪。

Ø BitTorrent, 分布式哈希算法分别用到了数据交换层(exchange),路由层(routing)。快速定位,省带宽交换

4.3白皮书

白皮书:https://github.com/ipfs/ipfs/blob/master/papers/ipfs-cap2pfs/ipfs-p2p-file-system.pdf

白皮书中文翻译:https://gguoss.github.io/2017/05/28/ipfs/

4.3.1摘要

星际文件系统是一种点对点的分布式文件系统, 旨在连接所有有相同的文件系统的计算机设备。在某些方面, IPFS类似于web, 但web 是中心化的,而IPFS是一个单一的Bittorrent 群集, 用git 仓库分布式存储。换句话说, IPFS 提供了高吞吐量的内容寻址块存储模型, 具有内容寻址的超链接。这形成了一个广义的Merkle DAG 数据结构,可以用这个数据结构构建版本文件系统,区块链,甚至是永久性网站。。IPFS 结合了分布式哈希表, 带有激励机制的块交换和自我认证命名空间。IPFS 没有单故障点, 节点不需要相互信任。

4.3.2.背景

分布式哈希表(DHT),分布式散列表(DHT)被广泛用于协调和维护关于对等系统的元数据。比如,MainlineDHT 是一个去中心化哈希表,他可追踪查找所有的对等节点。

块交换 – BitTorrent,BitTorrent是一个广泛成功应用的点对点共享文件系统,它可以在存在不信任的对等节点(群集)的协作网络中分发各自的文件数据片。从BitTorrent和它的生态系统的关键特征, IPFS得到启示如下:

  1. BitTorrent的数据交换协议使用了一种bit-for-tat的激励策略, 可以奖励对其他方面做贡献的节点,惩罚只榨取对方资源的节点。

  2. BitTorrent对等体跟踪文件的可用性,优先发送稀有片段。这减轻了seeds节点的负担, 让non-seeds节点有能力互相交易。

  3. 对于一些剥削带宽共享策略, BitTorrent的标准tit-for-tat策略是非常脆弱的。 然而,PropShare是一种不同的对等带宽分配策略, 可以更好的抵制剥削战略, 提高群集的表现。

版本控制系统- Git,版本控制系统提供了对随时间变化的文件进行建模的设施,并有效地分发不同的版本。流行版本控制系统Git提供了强大的Merkle DAG对象模型,以分布式友好的方式捕获对文件系统树的更改。

自我认证认文件系统-SFS,SFS提出了两个引人注目的实现(a)分布式信任链,和(b)平等共享的全局命名空间。

4.3.3. IPFS设计

IPFS是一个分布式文件系统,它综合了以前的对等系统的成功想法,包括DHT,BitTorrent,Git和SFS。 IPFS的贡献是简化,发展和将成熟的技术连接成一个单一的内聚系统,大于其部分的总和。 IPFS提供了编写和部署应用程序的新平台,以及一个新的分发系统版本化大数据。 IPFS甚至可以演进网络本身。

IPFS是点对点的;没有节点是特权的。 IPFS节点将IPFS对象存储在本地存储中。节点彼此连接并传输对象。这些对象表示文件和其他数据结构。

IPFS协议分为一组负责不同功能的子协议:

  1. 身份 - 管理节点身份生成和验证。

2.网络 - 管理与其他对等体的连接,使用各种底层网络协议。可配置的。

3.路由 - 维护信息以定位特定的对等体和对象。响应本地和远程查询。默认为DHT,但可更换。

4.交换 - 一种支持有效块分配的新型块交换协议(BitSwap)。模拟市场,弱化数据复制。贸易策略可替换。

5.对象 - 具有链接的内容寻址不可更改对象的Merkle DAG。用于表示任意数据结构,例如文件层次和通信系统。

6.文件 - 由Git启发的版本化文件系统层次结构。

7.命名 - 自我认证的可变名称系统。

这些子系统不是独立的;它们是集成在一起,互相利用各自的属性。但是,分开描述它们是有用的,从下到上构建协议栈。符号:Go语言中指定了以下数据结构和功能

4.3.4. 未来

① IPFS的思想是几十年成功的分布式系统的探索和开源的产物。IPFS综合了很多迄今为止很成功的系统中优秀的思想。除了BitSwap新协议之外,IPFS最大的特色就是系统的耦合以及设计的综合性。

② IPFS是去中心化网络基础设施的一个野心设想,很多不同类型的应用都可以建立在IPFS上。最低限度,它可以用来作为一个全局的,挂载性,版本控制文件系统和命名空间,或者作为下一代的文件共享系统。而最好的情况是,IPFS可以让Web升级一个层次,当发布一个有价值的信息时,任何感兴趣的人都可以进行发布而不会强迫性的必须只允许发布机构进行发布,用户可以信任信息的内容,信不信任信息的发送者都是无关紧要的,还有一个特点就是,一些重要但很老的文件也不会丢失。IPFS期待着带我们进入到一个永恒Wdb的世界。

5.怎么做

5.1.搭建IPFS运行环境

5.1.1.环境安装

Ø vmare安装centos7

Ø 安装 golang包

Ø 安装 git包

Ø 设置环境变量

Ø 安装 ipfs包

5.1.2.启动ipfs服务

启动命令:ipfs daemon

image006.png

查看id信息:ipfs id

image007.png

打开http://localhost:5001/webui浏览web ui界面,设置中文查看界面:

上传一个简单的hello文本文件

image009.png

image010.png

image011.png

5.2.IPFS的应用问答

5.2.1.IPFS应用场景

白皮书上指出了多个应用场景

  1. 作为一个挂载的全局文件系统,挂载在/ipfs和/ipns下

  2. 作为一个挂载的个人同步文件夹,自动的进行版本管理,发布,以及备份任何的写入

  3. 作为一个加密的文件或者数据共享系统

  4. 作为所有软件的版本包管理者

  5. 作为虚拟机器的根文件系统

  6. 作为VM的启动文件系统 (在管理程序下)

  7. 作为一个数据库:应用可以直接将数据写入Merkle DAG数据模型中,获取所有的版本,缓冲,以及IPFS提供的分配

  8. 作为一个linked(和加密的)通信平台

  9. 作为一个为大文件的完整性检查CDN(不使用SSL的情况下)

  10. 作为一个加密的CDN

  11. 在网页上,作为一个web CDN

  12. 作为一个links永远存在新的永恒的Web

5.2.2.IPFS存储网站信息

Ø IPFS:上传文件得到根目录的IPFS HASH

Ø IPFS: 我们可以将网站发布到IPNS,在IPNS中,允许我们节点的域名空间中引用一个IPFS hash,也就是说我们可以通过节点ID对项目根目录的IPFS HASH进行绑定,以后我们访问网站时直接通过节点·ID访问即可

5.2.3.IPFS协议能否取代TCP/IP

IPFS是一个分布式的web, 点到点超媒体协议。是一个TCP/IP的竞争协议。(更确切地说是从2层到7层http全部都不一样的全新构架)

它就是一个【分布式】的数据储存和传输协议。目前来说是对不能使用TCP/IP协议,以及不适用中心化的场合的替代方案。

IPFS协议没有取代TCP/IP的可能。比如你的汗血宝马或许比一般马跑的更快耐力更好。但汗血宝马无法在出行市场上取代普通马拉马车,是内燃机车淘汰了马车。

5.2.4. Filecoin业务

Filecoin和IPFS是互补的,两者都是由同一家公司Protocol Labs创建的,其创始人都是Juan Benet。IPFS允许网络中的参与者互相存储,索取和传输可验证的数据。运用IPFS,各节点可存储它们认为重要的数据。而在Filecoin出现之前,IPFS是没有方法可激励他人加入其网络或存储特定数据的。为了解决这一关键问题,Filecoin便出现了。在Filecoin的激励结构下,客户付费以在特定的冗余和可用性水平上存储数据,矿工通过不断地存储数据,并以加密方式证明数据存储来获得奖励。 简而言之:IPFS按内容寻址并使其移动,而Filecoin就是缺失的激励机制。

而根据filecoin白皮书所提到的,其计划支持跨链交互,以便在其他区块链平台(例如比特币、Zcash、以太坊以及Tezos)引入Filecoin存储,以及将其他平台的功能引入Filecoin,而选择支持Filecoin的平台,就可保证其IPFS存储内容交换Filecoin token。

然而,Filecoin的发展实在是太缓慢,慢到官方都不好意思贴出其GitHub链接了。

Filecoin的总量是多少,能挖矿的量有多少?

根据Filecoin当初融资时给出的数据,Filecoin设计的总量上限为20亿 token,其中10%(2亿)已通过公开募资的方式卖了出去,平均每个token的价格为1.26美元,其中顾问的参与成本为0.75美元/token,该公司保留15%(3亿)的token,5%留给基金会,剩余的70%(14亿)则是留给矿工的。此外,挖矿的规则是每六年区块奖励减半。

IPFS这个概念谁都可以用,但是这些厂商卖的IPFS矿机用户现在买了也没用,还是要等Filecoin主网上线之后再看情况。

Filecoin做的是【流量分发和数据储存业务】。

以现在全球流量价格和数据储存服务价格来看,【流量分发和数据储存业务】只在一个地方还有空间,那就是亚洲,或者更精确的说中国大陆。因为中国大陆数据流量每单位价格在美国6~7倍左右。在欧美大型厂商成本是如此之低,以至于散户跑储存基本就是在亏钱。

而【流量分发和数据储存业务】在大陆的众包模式根本不新奇,迅雷早好多年已经做了多版CDN路由器/流量宝盒之类的玩意(还有快播等多个公司有竞品)。实际运行利润极为微薄,几乎只比电费多一点儿的盈利。

即便不看分布式所带来的性能损失和冗余成本,光计算市场容量上限,也知道Filecoin达不到十倍百倍期望。

更别提垄断带来的麻烦,美国流量远比中国大陆便宜是有原因的。它首先给你来个备案制度,你要备案就只能使用大陆境内服务器,不得不接受高价。如果你不备案,那没关系,还有配套的墙阻绝廉价流量的访问。像IPFS/filecoin这样的分布式无中心无审查的项目更是审查的心头大患。最后filecoin上线,估计主程序估计在大陆都没法访问。演变成需要filecoin的地区用不了,可以用的地区不需要。所谓IPFS矿机全部要浪费。

4.参考资料

  1. IPFS官网:https://ipfs.io/

  2. 白皮书中文翻译:https://gguoss.github.io/2017/05/28/ipfs/

posted @ 2021-10-20 17:06  ioufev  阅读(208)  评论(0)    收藏  举报