星际文件系统

此條目翻譯自英語維基百科,需要相關領域的編者協助校對翻譯。如果您精通本領域,又能清楚地將英語翻譯為中文,歡迎您協助校訂翻譯。原文参见en:InterPlanetary File System。

星际文件系统(InterPlanetary File System,缩写为IPFS)是一个旨在实现文件的分布式存储、共享和持久化的网络传输协议。[3]它是一种内容可寻址(英语:Content-addressable storage)的对等超媒体分发协议。在IPFS网络中的节点构成一个分布式文件系统。它是一个开放源代码项目,自2014年开始由協議實驗室(英语:Protocol Labs)在开源社区的帮助下发展。[4]其最初由Juan Benet设计。[5]

星际文件系统開發者Protocol Labs当前版本0.34.1(2025年3月25日;穩定版本)[1]

源代码库github.com/ipfs/kubo编程语言协议实现:Go(参考实现)、JavaScript、C语言[2], Python客户端库:Go、Java、JavaScript、Python、Scala、Haskell、Swift、Common Lisp、Rust、Ruby、PHP、C♯、Erlang操作系统FreeBSD、Linux、macOS、Windows语言Go、JavaScript、Python类型协议、分佈式文件系統、內容傳遞網路许可协议MIT許可證网站ipfs.io

目录

1 历史

2 描述

3 使用

4 不足

5 Merkle数据格式

6 使用案例

7 参见

8 参考资料

9 外部链接

历史

编辑

在2014年,IPFS协议是类似于比特币区塊链协议(英语:Bitcoin protocol)的网络基础设施,有着存储不可更改的数据的优势,可以移除网络上的冗余文件,获取存储节点的地址信息——以搜索网络中的文件。[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分支都是其本地内容的哈希,它们的子节点使用它们的哈希而非完整内容来命名。因此,在创建后将不能编辑节点。这可以防止循环(假设没有哈希碰撞),因为无法将第一个创建的节点链接到最后一个节点从而创建最后一个引用。

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

输入到散列算法中的数据的描述见 https://github.com/ipfs/go-ipfs/tree/master/merkledag。

使用案例

编辑

在2017年9月至10月間的舉辦的2017年加泰隆尼亞獨立公投,因被西班牙宪法法院認定違法而使網站被封鎖。此後,加泰隆尼亞海盜黨將網站整個鏡像到IPFS上以迴避加泰隆尼亞高等法院的封鎖命令。[15][16]

IPFS被用於建立維基百科的鏡像[17],讓那些住在維基百科被國家法律封鎖的地方的人民能繼續存取到維基百科的內容。[18]不過那份被鏡像的維基百科是一份被限制改動的複製本且無法被更新。

文件币也與IPFS有關,其是由Juan Benet和協議實驗室(英语:Protocol Labs)合作開發的一套基於IPFS的協作存儲雲。[19]

Cloudflare營運有一個分佈式Web網關,使用户可在無本地節點的情況下,簡化、加速且安全的訪問IPFS。[20]

IPLF是Dean Reynaud在2001年發表於「Data Science」的一篇開創性文章中創造的一個術語。[21][來源可靠?]

博客平台 Matters 发布的文章会自动被分布存储到ipfs上,并生成唯一的文章指纹。此后文章无法被他人删改,并可以在IPFS的公共节点上通过文章指纹被找到。[22]

参见

编辑

ZeroNet

合作存储云(英语:Cooperative storage cloud)

分散式檔案系統

分散式雜湊表

自我认证文件系统(英语:Self-certifying File System)

珊瑚内容分发网络(英语:Coral Content Distribution Network)

Kademlia

Akasha项目(英语:Akasha Project)

OpenBazaar

IPFS Mining Hero

Dat (software)(英语:Dat (software))

Freenet

参考资料

编辑

^ Release 0.34.1. 2025年3月25日 [2025年4月24日].

^ Agorise. c-ipfs: IPFS implementation in C. Why C? Think Bitshares' Stealth backups, OpenWrt routers (decentralize the internet/meshnet!), Android TV, decentralized Media, decentralized websites, decent... GitHub. 2017-10-23 [2017-10-25]. (原始内容存档于2020-04-22).

^ Finley, Kurt. The Inventors of the Internet Are Trying to Build a Truly Permanent Web. Wired. 2016-06-20 [2017-04-10]. (原始内容存档于2020-12-15) (英语).

^ The IPFS Project. [2015-09-11]. (原始内容存档于2021-03-27).

^ IPFS README - Who designed it?. GitHub. [2015-09-11]. (原始内容存档于2020-11-11) (英语).

^ 存档副本. [2017-04-10]. (原始内容存档于2020-11-08).

^ ipfs/kubo. GitHub. [2023-07-08]. (原始内容存档于2023-08-17) (英语).

^ ipfs/helia. GitHub. [2023-07-08]. (原始内容存档于2023-07-22) (英语).

^ ipfs-shipyard/py-ipfs. GitHub. [2017-02-13]. (原始内容存档于2023-07-08) (英语).

^ IPFS Docs. ipfs.io. [2017-02-13]. (原始内容存档于2020-09-30) (英语).

^ ipfs/specs. GitHub. [2017-02-13]. (原始内容存档于2020-11-29) (英语).

^ Ian Allison. Juan Benet of IPFS talks about Filecoin. 国际财经时报. 2016-10-13 [2016-12-26]. (原始内容存档于2021-01-20) (英语).

^ The IPFS Project - How it works. [2015-09-11]. (原始内容存档于2021-03-27) (英语).

^ Publishing IPNS names. IPFS Docs. [2023-07-08]. (原始内容存档于2023-07-09).

^ Balcell, Marta Poblet. Inside Catalonia's cypherpunk referendum. Eureka Street. 2017-10-05 [2020-06-14]. (原始内容存档于2018-11-05) (英语).

^ Hill, Paul. Catalan referendum app removed from Google Play Store. Neowin. 2017-09-30 [2017-10-06]. (原始内容存档于2020-11-01) (英语).

^ ipfs. distributed-wikipedia-mirror. github. [2024-08-21]. (原始内容存档于2024-08-30).

^ Dale, Brady. Turkey Can't Block This Copy of Wikipedia. Observer Media. 2017-05-10 [2017-12-20]. (原始内容存档于2017-10-18) (英语).

^ Johnson, Steven. Beyond the Bitcoin Bubble. The New York Times. 2018-01-16 [2018-09-26]. (原始内容存档于2021-12-21) (英语).

^ Orcutt, Mike. A big tech company is working to free the internet from big tech companies. MIT Technology Review. 2018-10-05 [2020-04-21]. (原始内容存档于2021-01-26) (英语).

^ 深入了解IPFS :什麼是IPLF無際鏈. 萬鏈之家. 2021-01-03 [2021-01-03]. [失效連結]

^ 许明恩. Matters 透過 IPFS 讓內容永存網路. 区块势. 2018-11-06 [2021-06-15]. (原始内容存档于2021-06-16).

外部链接

编辑

IPFS介绍视频 (页面存档备份,存于互联网档案馆)(英文)

IPFS网站 (页面存档备份,存于互联网档案馆)(英文)

HTTP is obsolete. (页面存档备份,存于互联网档案馆) It's time for the distributed, permanent web (页面存档备份,存于互联网档案馆)(英文)

Protocol Labs(英文)

OpenBazaar Integrating InterPlanetary File System to Help Keep Stores Open Longer (页面存档备份,存于互联网档案馆)(英文)

详解基于IPFS存储模式的区块链医疗保健解决方案(简体中文)