IPFS小汇总

一.IPFS简介及提出动机
星际文件系统IPFS(Inter-Planetary File System)是一个面向全球的、点对点的分布式版本文件系统,目标是为了补充甚至是取代目前统治互联网的超文本传输协议(HTTP),将所有具有相同文件系统的计算设备连接在一起。原理用基于内容的地址替代基于域名的地址,也就是用户寻找的不是某个地址而是储存在某个地方的内容,不需要验证发送者的身份,而只需要验证内容的哈希,通过这样可以让网页的速度更快、更安全、更健壮、更持久。IPFS工作原理
1.1 传统互联网缺陷
现有的web协议——HTTP协议实际上已经存在很多问题。

  1. HTTP效率低下,服务器成本昂贵
    使用HTTP协议从一台计算机服务器上一次只能下载一个文件,而不是同时从多台计算机中获取文件。通过P2P方式的视频传输可以节省带宽成本的60%。
  2. 历史文件被删除
    网页的平均使用寿命为100天,大量的网站文件不能得以长期保存。有些重要的文件因操作不当,也有可能永远在互联网消失。
  3. 中心化的网络限制了机会
    互联网一直是人类进步的催化器,但中心化的网络容易被控制,是对互联网良性发展的的威胁。
  4. 网络应用太依赖骨干网
    为保证数据的可靠性,我们开发的应用程序太依赖大型的中心服务器,并通过大量的备份来保证数据的安全。
    HTTP协议已经用了20年的历史,从HTTP 1.0 到现在的HTTP5,网页的展示越来越美观丰富,但它背后的Browser/Server 模式是从来没变的。
    1.2 IPFS提出动机
    IPFS就是用来解决或者弥补HTTP的一系列弊端。星际文件系统是一个旨在创建持久且分布式存储和共享文件的网络传输协议。它是一种内容可寻址的对等超媒体分发协议。在IPFS网络中的节点将构成一个分布式文件系统。IPFS是点对点的超媒体协议,可以让网络更快、更安全、更开放。它是一个面向全球的、点对点的分布式版本文件系统,试图将所有具有相同文件系统的计算设备连接在一起。IPFS想要实现的是一个去中心化的分布式web网络。内容不再通过中心服务器响应,而是以P2P的方式从邻近的对等节点拉取;同时全网维护一个统一的路由表,每个节点作自我调整,以保证节点与数据的动态增删、完整性、去冗余等细节问题。
  5. 互联网信息永久存储
    IPFS像是一个分布式存储网络,任何存储在系统里的资源,包括文字、图片、声音、视频,以及网站代码,通过IPFS进行哈希运算后,都会生成唯一的地址。今后,你只要通过这个地址就可以打开它们。并且这个地址是可以被分享的
  6. 解决过度冗余问题,实现共享经济
    IPFS会把存储文件,做一次哈希计算,只字不差的两个文件哈希值相同。所以,用户只需要使用相同的哈希值,就可以访问那个文件,这个哈希值就是文件的地址。只要获取这个地址,就可以共享资源了。
  7. 同时基于内容寻址,而非基于域名寻址。
    IPFS的网络上运行着一条区块链,即用来存储互联网文件的哈希值表,每次有网络访问,即要在链上查询该内容(文件)的地址。
  8. 节点存储激励,代币分成
    通过使用代币(FileCoin)的激励作用,让各节点有动力去存储数据。

二.IPFS工作原理
2.1 IPFS工作简介
(一) 每个文件及其中的所有块都被赋予一个哈希。
(二) IPFS通过网络删除重复具有相同哈希值的文件,通过计算是可以判断哪些文件是冗余重复的。并跟踪每个文件的版本历史记录。
(三) 每个网络节点只存储它感兴趣的内容,以及一些索引信息,有助于弄清楚谁在存储什么。
(四) 查找文件时,你通过文件的哈希值就可以在网络查找到储存改文件的节点,找到想要的文件。
(五) 使用称为IPNS(去中心化命名系统),每个文件都可以被协作命名为易读的名字。通过搜索,就能很容易地找到想要查看的文件。
(六) 从IPFS的介绍可以看出, IPFS设想的是让所有的网络终端节点不仅仅只充当 Browser或Client的角色,其实人人都可以作为这个网络的运营者,人人都可以是服务器。
2.2 IPFS数据存储
IPFS采用的索引结构是DHT(分布式哈希表)数据结构是Merkle DAG(Merkle 有向无环图)。Merkle DAG是ipfs开发团队在Merkle tree的基础上构建的,是ipfs中的一种数据结构。它跟Merkle tree很相似,但不完全一样,比如:第一,Merkle DAG不需要进行树的平衡操作,DAG可以存在单身节点;第二,非叶子节点允许包含数据,有时候小数据直接存在非叶子节点上。IPFS的Merkle DAG数据结构如下图2-1所示:

在这里插入图片描述
图2-1 IPFS数据结构
Merkle DAG拥有如下的功能:
• 内容寻址:使用多重哈希来唯一识别一个数据块的内容
• 防篡改:可以方便的检查哈希值来确认数据是否被篡改
• 去重:由于内容相同的数据块哈希是相同的,可以很容去掉重复的数据,节省存储空间
在 IPFS 网络中,存储文件时,首先会将文件切片,切割成 256KB 大小的文件。之后循环调用MerkleDAG.Add方法构建文件 MerkleDAG。
文件 hash 值创建流程:
• 将切片之后的文件进行sha-2

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值