星际文件系统(ipfs)是一个旨在创建持久且分布式存储和共享文件的网络传输协议。它是一种内容可寻址的对等超媒体分发协议。在ipfs网络中的节点将构成一个分布式文件系统。
星际文件系统(interplanetary file system,缩写 ipfs)是一个旨在创建持久且分布式存储和共享文件的网络传输协议。它是一种内容可寻址的对等超媒体分发协议。在 ipfs 网络中的节点将构成一个分布式文件系统。它是一个开放源代码项目,自 2014 年开始由 protocol labs 在开源社区的帮助下发展。其最初由 juan benet 设计。
在 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。
merkle 数据格式
每个 merkle 都是一个有向无环图 ,因为每个节点都通过其名称访问。每个 merkle 分支都是其本地内容的哈希,它们的子节点使用它们的哈希而非完整内容来命名。因此,在创建后将不能编辑节点。这可以防止循环(假设没有哈希碰撞),因为无法将第一个创建的节点链接到最后一个节点从而创建最后一个引用。
对任何 merkle 来说,要创建一个新的分支或验证现有分支,通常需要在本地内容的某些组合体(例如列表的子哈希和其他字节)上使用一种哈希算法。ipfs 中有多种散列算法可用。
著名的使用案例于 2017 年 九月至十月间的举办的 2017 年加泰罗尼亚独立公投,由于被 西班牙宪法法院 认定此举动违法,因此其网站被屏蔽。在这之后, 加泰罗尼亚海盗党 将网站整个镜像到 ipfs 上以回避加泰罗尼亚高等法院的屏蔽命令。ipfs 被用于创建维基百科的镜像,让那些住在维基百科被国家法律屏蔽的地方的人民能继续访问到维基百科的内容。那份维基百科是一份被限制改动的复制本且无法被更新。文件币 也与 ipfs 有关,是由 juan benet 和 协议实验室 合作开发,一套基于 ipfs 的协作存储云。cloudflare 营运一个分布式的 web 网关,在无需本地节点的情况下,用以简化,加速并且安全的访问 ipfs 。isfs 由 tim berners lee 在 2001 年的一篇论文中创造的词汇 是 ipfs 文件分发和存储协议是由多个组件组合起来的协议体系的核心之一。