星际文件系统

一種基於P2P協定的檔案系統

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

星际文件系统
开发者Protocol Labs
当前版本
  • 0.31.0(2024年10月16日;稳定版本)[1]
编辑维基数据链接
源代码库github.com/ipfs/kubo
编程语言协议实现Go(参考实现)、JavaScriptC语言[2], Python
客户端库GoJavaJavaScriptPythonScalaHaskellSwiftCommon LispRustRubyPHPC♯Erlang
操作系统FreeBSDLinuxmacOSWindows
语言GoJavaScriptPython
类型协议、分布式文件系统、内容分发网络
许可协议MIT许可证
网站ipfs.io

历史

编辑

在2014年,IPFS协议是类似于比特币区块链协议英语Bitcoin protocol的网络基础设施,有着存储不可更改的数据的优势,可以移除网络上的冗余文件,获取存储节点的地址信息——以搜索网络中的文件。[6]

目前的实现采用Go[7]JavaScript[8],并有Python实现(上次提交时间2020年1月29日)。[9]Go实现被认为是开发正式规范英语Specification (technical standard)时的“参考实现”[10][11]

描述

编辑

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

该文件系统可以通过多种方式访问,包括FUSEHTTP。将本地文件添加到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]

参见

编辑

参考资料

编辑
  1. ^ Release 0.31.0. 2024年10月16日 [2024年10月22日]. 
  2. ^ 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). 
  3. ^ 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) (英语). 
  4. ^ The IPFS Project. [2015-09-11]. (原始内容存档于2021-03-27). 
  5. ^ IPFS README - Who designed it?. GitHub. [2015-09-11]. (原始内容存档于2020-11-11) (英语). 
  6. ^ 存档副本. [2017-04-10]. (原始内容存档于2020-11-08). 
  7. ^ ipfs/kubo. GitHub. [2023-07-08]. (原始内容存档于2023-08-17) (英语). 
  8. ^ ipfs/helia. GitHub. [2023-07-08]. (原始内容存档于2023-07-22) (英语). 
  9. ^ ipfs-shipyard/py-ipfs. GitHub. [2017-02-13]. (原始内容存档于2023-07-08) (英语). 
  10. ^ IPFS Docs. ipfs.io. [2017-02-13]. (原始内容存档于2020-09-30) (英语). 
  11. ^ ipfs/specs. GitHub. [2017-02-13]. (原始内容存档于2020-11-29) (英语). 
  12. ^ Ian Allison. Juan Benet of IPFS talks about Filecoin. 国际财经时报. 2016-10-13 [2016-12-26]. (原始内容存档于2021-01-20) (英语). 
  13. ^ The IPFS Project - How it works. [2015-09-11]. (原始内容存档于2021-03-27) (英语). 
  14. ^ Publishing IPNS names. IPFS Docs. [2023-07-08]. (原始内容存档于2023-07-09). 
  15. ^ Balcell, Marta Poblet. Inside Catalonia's cypherpunk referendum. Eureka Street. 2017-10-05 [2020-06-14]. (原始内容存档于2018-11-05) (英语). 
  16. ^ Hill, Paul. Catalan referendum app removed from Google Play Store. Neowin. 2017-09-30 [2017-10-06]. (原始内容存档于2020-11-01) (英语). 
  17. ^ ipfs. distributed-wikipedia-mirror. github. [2024-08-21]. (原始内容存档于2024-08-30). 
  18. ^ Dale, Brady. Turkey Can't Block This Copy of Wikipedia. Observer Media. 2017-05-10 [2017-12-20]. (原始内容存档于2017-10-18) (英语). 
  19. ^ Johnson, Steven. Beyond the Bitcoin Bubble. The New York Times. 2018-01-16 [2018-09-26]. (原始内容存档于2021-12-21) (英语). 
  20. ^ 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) (英语). 
  21. ^ 深入了解IPFS :什麼是IPLF無際鏈. 万链之家. 2021-01-03 [2021-01-03]. [失效链接]
  22. ^ 许明恩. Matters 透過 IPFS 讓內容永存網路. 区块势. 2018-11-06 [2021-06-15]. (原始内容存档于2021-06-16). 

外部链接

编辑