IPFS一般指星际文件系统。
星际文件系统是一个旨在创建持久且分布式存储和共享文件的网络传输协议。
它是一种内容可寻址的对等超媒体分发协议。
IPFS网络中的节点将构成一个分布式文件系统。
它是一个开放源代码项目,自2014年开始由Protocol Labs在开源社区的帮助下发展。
其最初由Juan Benet设计。


IPFS星际文件系统的特点简介
IPFS(InterPlanetary File System,星际文件系统)是一个将现有的成功系统分布式哈希表(Distributed Hash Tables (DHTs))、BitTorrent、版本控制系统Git、自认证文件系统(Self-Certified Filesystems - SFS)与区块链相结合的文件存储和内容分发网络协议。这些系统的综合优势给它带来的显著特性:

1.永久的、去中心化保存和共享文件 (区块链模式下的存储DHTs)。

2.点对点超媒体:P2P 保存各种各样类型的数据(BitTorrent)。

3.版本化:可追溯文件修改历史(Git - Merkle DAG默克尔有向无环图))。

4.内容可寻址:通过文件内容生成独立哈希值来标识文件,而不是通过文件保存位置来标识。相同内容的文件在系统中只会存在一份,节约存储空间。


IPFS星际文件系统的历史
在2014年,IPFS协议利用比特币区块链协议和网络基础设施的优势来存储不可更改的数据,移除网络上的重复文件,以及获取存储节点的地址信息——用以搜索网络中的文件。
当前的实现采用Go和JavaScript,并有Python的实现正在发展。Go实现被认为是开发正式规范时的“参考实现”。

IPFS是一个对等的分布式文件系统,它尝试为所有计算设备连接同一个文件系统。在某些方面,IPFS类似于万维网,但它也可以被视作一个独立的BitTorrent群、在同一个Git仓库中交换对象。换种说法,IPFS提供了一个高吞吐量、按内容寻址的块存储模型,及与内容相关超链接。这形成了一个广义的Merkle有向无环图(DAG)。IPFS结合了分布式散列表、鼓励块交换和一个自我认证的名字空间。IPFS没有单点故障,并且节点不需要相互信任。分布式内容传递可以节约带宽,和防止HTTP方案可能遇到的DDoS攻击。

该文件系统可以通过多种方式访问,包括FUSE与HTTP。将本地文件添加到IPFS文件系统可使其面向全世界可用。文件表示基于其哈希,因此有利于缓存。文件的分发采用一个基于BitTorrent的协议。其他查看内容的用户也有助于将内容提供给网络上的其他人。IPFS有一个称为IPNS的名称服务,它是一个基于PKI的全局名字空间,用于构筑信任链,这与其他NS兼容,并可以映射DNS、.onion、.bit等到IPNS。


IPFS星际文件系统Merkle数据格式
每个Merkle都是一个有向无环图,因为每个节点都通过其名称访问。每个Merkle分支都是其本地内容的哈希,它们的子节点使用它们的哈希而非完整内容来命名。因此,在创建后将不能编辑节点。这可以防止循环(假设没有哈希碰撞),因为无法将第一个创建的节点链接到最后一个节点从而创建最后一个引用。

对任何Merkle来说,要创建一个新的分支或验证现有分支,通常需要在本地内容的某些组合体(例如列表的子哈希和其他字节)上使用一种哈希算法。IPFS中有多种散列算法可用。


IPFS星际文件系统实现过程
IPFS是8个元素的组合:(每个对等节点的)身份+(管理与其他对等点的连接的)网络+(定位对等点和存储对象需要的信息的)路由(分布式哈希表)+数据交换(BitTorrent)+(可寻址又不可篡改)Merkle-DAG + (版本控制)GIT+命名(自我认证文件系统)+ 应用程序(Web)。

每个节点采用nodeID作为身份识别,节点存储着公钥和加密过的私钥,技术上使用基于S/Kademlia和Coral的分布式松散哈希表DSHT来寻找匹配的节点和特定节点的地址信息,小值(等于或小于1KB)直接存储在DHT上生成一个NodeID,对于更大的值,IPFS会拆成小块,DHT存储拥有这些块的节点NodeIds。

数据交换使用基于BitTorrent的BitSwap协议来发送和接收分布式数据区块。BitSwap 维持着两个列表,想要获得的块和已保存的块。但与 BitTorrent 不同的是,BitSwap 不限于一个torrent中的块。BitSwap 节点可以从整个IPFS网络获取所需的块,而不管这些块属于哪些文件,这大大提高了下载效率。同时,网络中存在一些激励节点会主动缓存和传播稀有的文件片段。

DHT 和 BitSwap 技术让 IPFS形成一个用于快速而强大的存储和分发块的 P2P 系统。在此之上,IPFS还构建了一种有向无环图 Merkle DAG,使用嵌入数据源中的目标哈希散列构建对象之间的链接。Merkle DAGs 为IPFS提供了许多有用的属性,包括:

1.内容寻址:所有内容(包括链接)都由其多哈希校验和进行独立标识

  1. 防篡改:所有内容都使用其校验和进行验证。如果数据被篡改或损坏,则IPFS会检测到该数据。

  2. 去冗余:所有内容完全相同的对象,只存储一次。

IPFS并不会要求每一个节点都存储所有的内容,节点的所有者可以自由选择想要维持的数据,在备份了自己的数据之外,自愿的为其他的关注的内容提供服务。(数据的保存是Pinning,是将文件长期保留在本地)

如果IPFS得以普及,节点数达到一定规模,即使每个节点只存放一点点内容,所累计的空间、带宽和可靠性(共享模式)将超过HTTP以中心服务器传输的模式。

显然,整个系统要正常运行起来,除了需要有大量人参与外,还得避免出现BT中很多人不愿意做种的问题,代币Filecoin(FIL)就是为了奖励“矿工”,矿工负责贡献存储和数据检索服务,让IPFS网络真是的变得实用起来,而需要储存服务的用户需要为服务购买和支付代币。(FIL的作用类似玩客币WKC或流量矿石LLT)
正哥IPFS整理

正哥IPFS~filecoin布道者,诚邀共建IPFS生态,共享财富盛宴。

IPFS星际文件系统科普相关推荐

  1. Computer:IPFS(星际文件系统)的简介、安装、使用方法之详细攻略

    Computer:IPFS(星际文件系统)的简介.安装.使用方法之详细攻略 目录 IPFS的简介 1.IPFS的应用 IPFS的安装 IPFS的使用方法 1.下载文件 第一步,启动IPFS节点 第二步 ...

  2. IPFS星际文件系统下载及安装

    ipfs的下载与安装 ipfs星际文件系统是一个面向全球的.P2P的分布式文件系统. 目标是补充(甚至是取代)目前通知互联网的超文本传输协议http. 与传统的基于域名寻址的http协议相比较,ipf ...

  3. IPFS星际文件系统(中文白皮书)

    IPFS - 可快速索引的版本化的点对点文件系统 作者: Juan Benet (juan@benet.ai) 译者: 郭光华(gavin@8btc.com) 摘要 星际文件系统是一种点对点的分布式文 ...

  4. ipfs星际文件系统初体验

    ipfs是InterPlanetary File System的简称,即星际文件系统,他不同于一般的操作系统文件系统,也不同于分布式文件系统,因为分布式文件系统最终访问文件还是采用的http协议,而i ...

  5. IPFS星际文件系统注定会成为伟大的项目

    资料来源:smg-corporate.com 作者丨Jonas Bostoen 翻译丨Jason · · 这篇文章将分为IPFS的理论介绍和IPFS的使用指南两部分. 第一部分旨在向大家展示IPFS是 ...

  6. IPFS(星际文件系统)-初步接触

    〇.IPFS介绍 从HTTP到IPFS,星际文件系统能变革信息传播的方式吗? 戴嘉乐:详解IPFS的本质.技术架构以及应用 以下为实现相关摘要 1.存储 在IPFS中,信息可以存储进IPFS系统中的块 ...

  7. IPFS(星际文件系统)的安装与使用

    本教程系统环境:Windows10 其他系统下的安装教程可以参考IPFS官方文档 Step 1 按下windows键+R,输入powershell,点击运行,打开PS终端. Step 2 在PS中下载 ...

  8. 星际文件系统(InterPlanetary File System,缩写IPFS)

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

  9. 什么是星际文件系统(IPFS)

    星际文件系统(IPFS)会是将来一个非常重要的技术.IPFS的全称是Interplanetary File System,是一种p2p的文件分享系统,目的是要改变信息分发的方式.它在通信协议和分布式系 ...

最新文章

  1. SAP WM Picking Area的使用
  2. 《科学》:中德解析新冠主要蛋白酶晶体结构,有助抑制剂研发
  3. C#重点知识详解(一) 选择自 masterall 的 Blog
  4. 不是内部或外部命令,也不是可运行的程序 或批处理文件。(如果放了环境变量还是没有用的话)(已经解决)
  5. linux下使用taskset设置进程cpu绑定不起作用
  6. JSFL 获取当前脚本路径,执行其他脚本
  7. VGGnet论文解读及代码实现
  8. 转载:常用CSS缩写语法总结
  9. 探索者易打软件--实现AutoCAD批量打印和自动命名
  10. 540s inter 固件_Intel SSD Firmware Update Tool(英特尔ssd固件更新工具)下载 v2.1.6官方版...
  11. cobar mysql 性能,Cobar + MySQL 技術驗證(li)
  12. ES(elasticsearch)测试数据
  13. 自制XILINX FPGA JTAG下载器
  14. CH340G软件识别、usb转串口软件识别、测试
  15. 0002计算机组成原理与体系结构02
  16. 开源摄影测量与遥感处理软件OSSIM简介
  17. idm下载器去哪里下载 idm下载器用不了什么原因
  18. 工信部首次发声:培育一批进军元宇宙等新兴领域的创新型中小企业
  19. oracle 菜单不见了,开始菜单不见了怎么办 开始菜单不见了解决方法【详解】
  20. unity 物体移动到手机点击位置

热门文章

  1. python中iadd与add_如何为Python属性实现-uyu iadd_uu
  2. 【微信小程序开发】IOS与安卓样式兼容问题
  3. 记一次云服务器配置mysql 远程连接失败的解决方案
  4. LDO(低压差线性稳压器)选型小结
  5. 中小网站在域名、服务器等选择上的一点总结
  6. 〖全域运营实战白宝书 - 运营角色认知篇⑦〗- 运营人的能力模型
  7. [Hadoop] mac搭建hadoop3.X 伪分布模式
  8. Salesforce诊断网络问题以排除性能下降
  9. 记录女士出差一周必备物品清单用哪个便签比较好
  10. 哈工大软件构造Lab2实验