本页使用了标题或全文手工转换

星际文件系统

维基百科,自由的百科全书
跳到导航 跳到搜索
星际文件系统
Ipfs-logo-1024-ice-text.png
開發者Protocol Labs
穩定版本
0.6.0
(2020年6月20日,​4個月前​(2020-06-20
源代码库github.com/ipfs/ipfs
编程语言协议实现Go(参考实现)、JavaScriptC语言[1], Python
客户端库GoJavaJavaScriptPythonScalaHaskellSwiftCommon LispRustRubyPHPC#Erlang
操作系统FreeBSDLinuxmacOSWindows
语言GoJavaScriptPython
类型协议、分佈式文件系統、內容傳遞網路
许可协议MIT許可證
网站ipfs.io

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

历史[编辑]

在2014年,IPFS协议利用比特币区塊链协议英语Bitcoin protocol和网络基础设施的优势来存储不可更改的数据,移除网络上的重复文件,以及获取存储节点的地址信息——用以搜索网络中的文件。[5]

目前的实现采用Go[6]JavaScript[7],并有Python的实现正在发展。[8]Go实现被认为是开发正式规范英语Specification (technical standard)时的“参考实现”[9][10]

描述[编辑]

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

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

Merkle数据格式[编辑]

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

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

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

著名的使用案例[编辑]

  • 於 2017 年 九月至十月間的舉辦的 2017年加泰隆尼亞獨立公投,由於被 西班牙宪法法院 認定此舉動違法,因此其網站被封鎖。在這之後, 加泰隆尼亞海盜黨 將網站整個鏡像到 IPFS 上以迴避加泰隆尼亞高等法院的封鎖命令。[14][15]
  • IPFS 被用於建立維基百科的鏡像,讓那些住在維基百科被國家法律封鎖的地方的人民能繼續存取到維基百科的內容。[16] 那份維基百科是一份被限制改動的複製本且無法被更新。
  • 文件币 也與 IPFS 有關,是由 Juan Benet 和 协议实验室 合作開發,一套基於 IPFS 的協作存儲雲。[17]
  • CloudFlare 營運一個分佈式的 Web 網關,在無需本地節點的情況下,用以簡化,加速並且安全的訪問 IPFS 。[18]
  • ISFS 由 Tim Berners Lee 在2001年的一篇論文中創造的詞彙 是IPFS文件分發和存儲協議是由多個組件組合起來的協議體系的核心之一。[19]

参见[编辑]

参考资料[编辑]

  1. ^ 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.com. 23 October 2017 [25 October 2017]. (原始内容存档于2020-04-22). 
  2. ^ Finley, Kurt. The Inventors of the Internet Are Trying to Build a Truly Permanent Web. Wired. June 20, 2016. 
  3. ^ The IPFS Project. [11 September 2015]. 
  4. ^ IPFS README - Who designed it?. [11 September 2015]. 
  5. ^ https://cointelegraph.com/news/ipfs-protocol-selects-ethereum-over-bitcoin-prefers-ethereum-dev-community
  6. ^ ipfs/go-ipfs. GitHub. [2017-02-13] (英语). 
  7. ^ ipfs/js-ipfs. GitHub. [2017-02-13] (英语). 
  8. ^ ipfs/py-ipfs. GitHub. [2017-02-13] (英语). 
  9. ^ IPFS Docs. ipfs.io. [2017-02-13] (英语). 
  10. ^ ipfs/specs. GitHub. [2017-02-13] (英语). 
  11. ^ http://www.ibtimes.co.uk/juan-benet-ipfs-talks-about-filecoin-1586122, International Business Times, accessed 26 December 2016
  12. ^ The IPFS Project - How it works. [11 September 2015]. 
  13. ^ IPFS README. [11 September 2015]. 
  14. ^ Balcell, Marta Poblet. Inside Catalonia's cypherpunk referendum. Eureka Street. 5 October 2017 [2020-06-14]. (原始内容存档于2018-11-05). 
  15. ^ Hill, Paul. Catalan referendum app removed from Google Play Store. Neowin. 30 September 2017 [6 October 2017] (英语). 
  16. ^ Dale, Brady. Turkey Can't Block This Copy of Wikipedia. Observer Media. 10 May 2017 [20 December 2017]. (原始内容存档于18 October 2017). 
  17. ^ Johnson, Steven. Beyond the Bitcoin Bubble. The New York Times. 16 January 2018 [26 September 2018] (英语). 
  18. ^ Orcutt, Mike. A big tech company is working to free the internet from big tech companies. MIT Technology Review. 5 October 2018 [21 April 2020]. 
  19. ^ IPFS的最核心組件之一ISFS 星鏈 date=22 August 2020. 金色財經. [24 August 2020] (英语). 

外部链接[编辑]