Loading AI tools
一種基於P2P協定的檔案系統 来自维基百科,自由的百科全书
星际文件系统(InterPlanetary File System,缩写为IPFS)是一个旨在实现文件的分布式存储、共享和持久化的网络传输协议。[3]它是一种内容可寻址的对等超媒体分发协议。在IPFS网络中的节点构成一个分布式文件系统。它是一个开放源代码项目,自2014年开始由協議實驗室在开源社区的帮助下发展。[4]其最初由Juan Benet设计。[5]
![]() | 此條目翻譯自英語維基百科,需要相關領域的編者協助校對翻譯。 |
在2014年,IPFS协议是类似于比特币区塊链协议的网络基础设施,有着存储不可更改的数据的优势,可以移除网络上的冗余文件,获取存储节点的地址信息——以搜索网络中的文件。[6]
目前的实现采用Go[7]和JavaScript[8],并有Python实现(上次提交时间2020年1月29日)。[9]Go实现被认为是开发正式规范时的“参考实现”[10][11]。
IPFS是一个对等的分布式文件系统,它尝试为所有计算设备连接到同一个文件系统。在某些方面,IPFS类似于万维网,也可以被视作一个BitTorrent节点群、在同一个Git仓库中交换对象。 换种说法,IPFS提供了一个高吞吐量、按内容寻址的块存储模型,及与内容相关超連結。[12]这形成了一个广义的Merkle有向无环图(DAG)。IPFS结合了分散式雜湊表、鼓励块交换和一个自我认证的命名空间。IPFS没有单点故障,并且节点不需要相互信任。[13]分布式内容传递可以节约服务器带宽,并防止HTTP方案可能遇到的DDoS攻击。
该文件系统可以通过多种方式访问,包括FUSE与HTTP。将本地文件添加到IPFS文件系统后,其他用户通过IPFS网关进行访问。文件表示基于其哈希,因此有利于缓存。文件的分发采用一个类似BitTorrent的协议。其他查看内容的用户也有助于将内容提供给网络上的其他人。
IPFS有一个称为IPNS的名称服务,可以绑定域名或者用户公钥,固定访问的链接,但是访问的内容可以更新。[14]
用户通过ipfs网关上传文件后,获得文件cid,再通过cid在ipfs网关访问文件,访问者可以无需安装客户端。
ipfs官方提供了一个网关,同时也有用户自行搭建的网关,ipfs官方的网关在中国大陆地区已经被屏蔽。
部分浏览器内置ipfs的支持,可以使用网关或者本地节点访问ipfs资源内容。
一个文件如果没有节点进行存储,也会丢失,无法访问。
NAT网络内的一个节点内的文件,其它网关很难访问。
非热门资源,存储的节点过少,网关的访问速度很慢。
每个Merkle都是一个有向无环图 ,因为每个节点都通过其名称访问。每个Merkle分支都是其本地内容的哈希,它们的子节点使用它们的哈希而非完整内容来命名。因此,在创建后将不能编辑节点。这可以防止循环(假设没有哈希碰撞),因为无法将第一个创建的节点链接到最后一个节点从而创建最后一个引用。
对任何Merkle来说,要创建一个新的分支或验证现有分支,通常需要在本地内容的某些组合体(例如列表的子哈希和其他字节)上使用一种哈希算法。IPFS中有多种散列算法可用。
输入到散列算法中的数据的描述见 https://github.com/ipfs/go-ipfs/tree/master/merkledag。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.