
星际文件系统
本条目翻译自英语维基百科,需要精通本领域的编者协助校对翻译。 |
![]() | |
开发者 | Protocol Labs |
---|---|
目前版本 |
![]() |
源代码库 | github |
编程语言 | 协议实现:Go(参考实现)、JavaScript、C语言[1], 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 |
星际文件系统(InterPlanetary File System,缩写为IPFS)是一个旨在实现文件的分布式存储、共享和持久化的网络传输协议。[2]它是一种内容可寻址的对等超媒体分发协议。在IPFS网络中的节点构成一个分布式文件系统。它是一个开放源代码项目,自2014年开始由协议实验室在开源社区的帮助下发展。[3]其最初由Juan Benet设计。[4]
历史[编辑]
在2014年,IPFS协议是类似于比特币区块链协议的网络基础设施,有着存储不可更改的数据的优势,可以移除网络上的冗余文件,获取存储节点的地址信息——以搜索网络中的文件。[5]
目前的实现采用Go[6]和JavaScript[7],并有Python实现正在开发。[8]Go实现被认为是开发正式规范时的“参考实现”[9][10]。
描述[编辑]
IPFS是一个对等的分布式文件系统,它尝试为所有计算设备连接到同一个文件系统。在某些方面,IPFS类似于万维网,也可以被视作一个BitTorrent节点群、在同一个Git仓库中交换对象。 换种说法,IPFS提供了一个高吞吐量、按内容寻址的块存储模型,及与内容相关超连结。[11]这形成了一个广义的Merkle有向无环图(DAG)。IPFS结合了分散式杂凑表、鼓励块交换和一个自我认证的命名空间。IPFS没有单点故障,并且节点不需要相互信任。[12]分布式内容传递可以节约带宽,并防止HTTP方案可能遇到的DDoS攻击。
该文件系统可以通过多种方式访问,包括FUSE与HTTP。将本地文件添加到IPFS文件系统可使其面向全世界可用。文件表示基于其哈希,因此有利于缓存。文件的分发采用一个基于BitTorrent的协议。其他查看内容的用户也有助于将内容提供给网络上的其他人。
IPFS有一个称为IPNS的名称服务,它是一个基于PKI的全局命名空间,用于构筑信任链,这与其他命名空间兼容,并可以映射DNS、.onion、.bit等到IPNS。[13]
Merkle数据格式[编辑]
每个Merkle都是一个有向无环图 ,因为每个节点都通过其名称访问。每个Merkle分支都是其本地内容的哈希,它们的子节点使用它们的哈希而非完整内容来命名。因此,在创建后将不能编辑节点。这可以防止循环(假设没有哈希碰撞),因为无法将第一个创建的节点链接到最后一个节点从而创建最后一个引用。
对任何Merkle来说,要创建一个新的分支或验证现有分支,通常需要在本地内容的某些组合体(例如列表的子哈希和其他字节)上使用一种哈希算法。IPFS中有多种散列算法可用。
输入到散列算法中的数据的描述见 https://github.com/ipfs/go-ipfs/tree/master/merkledag。
使用案例[编辑]
- 在2017年9月至10月间的举办的2017年加泰隆尼亚独立公投,因被西班牙宪法法院认定违法而使网站被封锁。此后,加泰隆尼亚海盗党将网站整个镜像到IPFS上以回避加泰隆尼亚高等法院的封锁命令。[14][15]
- IPFS被用于建立维基百科的镜像,让那些住在维基百科被国家法律封锁的地方的人民能继续存取到维基百科的内容。[16]不过那份被镜像的维基百科是一份被限制改动的复制本且无法被更新。
- 文件币也与IPFS有关,其是由Juan Benet和协议实验室合作开发的一套基于IPFS的协作存储云。[17]
- Cloudflare营运有一个分布式Web网关,使用户可在无本地节点的情况下,简化、加速且安全的访问IPFS。[18]
- ISFS是蒂姆·伯纳斯-李在2001年的一篇论文中创造的词汇,其IPFS文件分发和存储协议是由多个组件组合起来的协议体系的核心之一。[19][来源可靠?]
- IPLF是Dean Reynaud在2001年发表于“Data Science”的一篇开创性文章中创造的一个术语。[20][来源可靠?]
参见[编辑]
- ZeroNet
- 合作存储云
- 分散式档案系统
- 分散式杂凑表
- 自我认证文件系统
- 珊瑚内容分发网络
- Kademlia
- Akasha项目
- OpenBazaar
- IPFS Mining Hero
- Dat (software)
- Freenet
参考资料[编辑]
- ^ 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 (英语).
- ^ The IPFS Project. [2015-09-11].
- ^ IPFS README - Who designed it?. GitHub. [2015-09-11] (英语).
- ^ https://cointelegraph.com/news/ipfs-protocol-selects-ethereum-over-bitcoin-prefers-ethereum-dev-community
- ^ ipfs/go-ipfs. GitHub. [2017-02-13] (英语).
- ^ ipfs/js-ipfs. GitHub. [2017-02-13] (英语).
- ^ ipfs/py-ipfs. GitHub. [2017-02-13] (英语).
- ^ IPFS Docs. ipfs.io. [2017-02-13] (英语).
- ^ ipfs/specs. GitHub. [2017-02-13] (英语).
- ^ Ian Allison. Juan Benet of IPFS talks about Filecoin. 国际财经时报. 2016-10-13 [2016-12-26] (英语).
- ^ The IPFS Project - How it works. [2015-09-11] (英语).
- ^ IPFS README. Github. [2015-09-11] (英语).
- ^ 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] (英语).
- ^ 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] (英语).
- ^ 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] (英语).
- ^ IPFS的最核心組件之一ISFS 星鏈. 金色财经. 2020-08-22 [2020-08-24].
- ^ 深入了解IPFS :什麼是IPLF無際鏈. 万链之家. 2021-01-03 [2021-01-03].