IPFS(星际文件系统):修订间差异

来自非小号百科
0x YU小鱼留言 | 贡献
创建页面,内容为“== 简述 == 一种去中心化的文件存储协议,支持高效存储和分发大规模数据,常与Web3应用结合使用。 == 什么是 IPFS(星际文件系统)? == '''IPFS(InterPlanetary File System,星际文件系统)''' 是一种去中心化的分布式文件存储与共享协议,旨在为互联网提供更高效、更加开放和更安全的内容分发方式。IPFS 通过内容寻址(Content Addressing)取代传统的基于位…”
 
Doge留言 | 贡献
无编辑摘要
第1行: 第1行:
== 简述 ==
'''星际文件系统'''('''InterPlanetary File System''',缩写为'''IPFS''')是个旨在实现文件的分布式存储、共享和持久化的网络传输协议<ref>[https://www.wired.com/2016/06/inventors-internet-trying-build-truly-permanent-web/ The Inventors of the Internet Are Trying to Build a Truly Permanent Web] | WIRED</ref>。它是一种内容可寻址的对等超媒体分发协议,用于在分布式哈希表中存储和共享数据。通过使用内容寻址,IPFS 在连接 IPFS 主机的全局命名空间中唯一标识每个文件,从而创建了一个弹性的文件存储和共享系统
种去中心化的文件存储协议,支持高效存储和分发大规模数据,常与Web3应用结合使用。


== 什么是 IPFS(星际文件系统)? ==
IPFS 网络中的节点构成一个分布式文件系统。它是一个开放源代码项目,自 2014 年开始由协议实验室在开源社区帮助下展。其最初由 Juan Benet 设计<ref>[https://docs.ipfs.tech/ IPFS Documentation] | IPFS Docs</ref>。IPFS 允许用户以类似于 BitTorrent 的方式托管和接收内容。与以中央服务器为中心的传统协议(如 HTTP 和 HTTPS)相反,IPFS 围绕用户运营商去中心化系统构建,这些运营商持有部分总体数据。网络中任何用户可以通过其内容地址提供文件,网络中其他对等节点可以使用分布式哈希表 (DHT) 从拥有该文件的任何节点查和请求该内容。
'''IPFS(InterPlanetary File System,星际文件系统)''' 是一种去心化的分布式文件存储与共享协议,旨为互联网提供更高效、更加放和更安全内容分发方式。IPFS 通过内容寻址(Content Addressing)取代传统的基于位置寻址方式,使用户可以通过文件的唯一加密哈希内容,而不依赖于具体的服务器或中心化存储结构


IPFS 是由 Protocol Labs 2015 年推出技术,它结合了分布式哈希表(DHT)、区块交换协议(如 BitTorrent)以及版本控制系统(如 Git)的优势,目标是构建个更加高效、抗审查且去中心化的互联基础设施
与传统的基位置的协议(如 HTTP 和 HTTPS相比,IPFS 使用基于内容寻址来提供去中心化的替代方案来分发万维。IPFS 用于去中心化应用程序和内容存档
{| class="wikitable" style="float:right; width: 45%; margin-left: 10px;"
|+星际文件系统
!开发者
|Protocol Labs
|-
!当前版本
|0.32.1(2024年11月15日;稳定版本)
|-
!源代码库
|[https://github.com/ipfs/kubo github.com/ipfs/kubo]
|-
!编程语言
|'''协议实现''':Go(参考实现)、JavaScript、C语言、Python
'''客户端库''':Go、Java、JavaScript、Python、Scala、Haskell、Swift、Common Lisp、Rust、Ruby、PHP、C♯、Erlang
|-
!操作系统
|FreeBSD、Linux、macOS、Windows
|-
!语言
|Go、JavaScript、Python
|-
!类型
|协议、分布式文件系统、内容分发网络
|-
!许可协议
|MIT许可证
|-
!网站
|[https://ipfs.tech/ ipfs.tech]
|}


== IPFS 的核心概念 ==
== 发展历程 ==
2014年,IPFS 协议是类似于比特币区块链协议的网络基础设施,有着存储不可更改的数据的优势,可以移除网络上的冗余文件,获取存储节点的地址信息——以搜索网络中的文件。


# '''内容寻址(Content Addressing)'''
目前实现采Go 和 JavaScript,并有 Python 实现(间2020年1月29日。Go实现被认为是开发正式规范的“参考实现”<ref>GitHub - ipfs/specs: [https://github.com/ipfs/specs Technical specifications for the IPFS protocol stack]</ref>
#* 在 IPFS 中,文件唯一标识是其内容的哈希值(通常使SHA-256 算法生成)。每个文件或文件块都会生成一个唯一的加密哈希值(称为内容标识符,CID)通过该值可以定位文件,而不需要依赖文件存储的位置。
# '''分布式存储'''
#* 文件被拆分为多个小块,存储在分布式网络中的各个节点上,用户可以从任意一个节点下载这些块重组为原始文件。
# '''版本控制'''
#* IPFS 允许用户为文件创建版本控制记录,通过链式结构管理内容更新,类似于 Git 的操作。
# '''点对点网络(P2P)'''
#* IPFS 使用点对点网络进行文件传输,不依赖中心化的服务器。每个节点既是客户端,也是服务器,既可以传内容,也可以供内容分发。
# '''永久性存储'''
#* 在 IPFS 上存储的文件默认会临保留,只有当有人持续访问或通过经济激励机制(如 Filecoin付费存储,文件才会被长期保存


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


# '''文件哈希与分块'''
文件系统可以通过多种方式访问包括FUSE与HTTP将本地文件添加到IPFS文件系统后,他用户过IPFS关进行访问文件示基于其哈希,因此有利于缓存。文件的分发采一个类似BitTorrent的协议其他内容的用户也有助于将内容提供给网络上其他人
#* 上传到 IPFS 的文件会首先被分块(默认大小为 256 KB)每块计算一个唯一的哈希值整个文件的 CID 是基于这些块哈希值生成的 Merkle 树根节点的哈希值。
# '''生成内容标识符(CID)'''
#* 文件的 CID 是内容的唯一标识。过 CID,可以在络中快速找到存储该内容的节点
# '''分布式哈希(DHT)'''
#* IPFS 网络使用分布式哈希表(DHT)来记录文件块与节点对应关系,确保户能够在网络中高效定位内容
# '''内容获取'''
#* 当用户请求某个 CID 时,IPFS 网络会找存储该内容的节点,获取对应的数据块,并将其重组为完整文件。
# '''数据去重'''
#* 如果不同用户上传了内容相同文件或数据块,IPFS 会自动合并存储并只保留一份,有效节省存储空间


== IPFS 核心优势 ==
IPFS有一个称为IPNS名称服务,可以绑定域名或者用户公钥,固定访问的链接,但是访问的内容可以更新。


# '''去中心化'''
=== Merkle数据格式 ===
#* IPFS 消除了中心化服务器的依赖,降低了单点故障和审查风险。
每个Merkle都是一个有向无环图 因为每个节点都通过其名称访问。每个Merkle分支都是其本地内容的哈希它们的子节点使用它们的哈希而非完整内容来命名因此在创建后将不能编辑节点可以防止循环(假设没有哈希碰撞)因为法将第一个创建节点链接到最后一个节点从而创建最后一个引用
# '''高效分发'''
#* 通过 P2P 方式分发内容,加快了数据传输速度,尤其适用于大型文件和高并发场景。
# '''内容永久性'''
#* 使用 CID 访问文件不受存储节点变化的影响,理论上文件可以永久访问(如果被持续存储)
# '''抗审查性'''
#* 内容寻址和分布式存储特性,使得 IPFS 网络对审查和内容删除更加抗拒
# '''数据去重'''
#* 相同文件或块只需存储一次显著降低存储成本
# '''低成本扩展'''
#* 通过分布式存储架构,IPFS 网络可以轻松扩展,无需昂贵中心化服务器


== IPFS 场景 ==
对任何Merkle来说,要创建一个新分支或验证现有分支,通常需要在本地内容的某些组合体(例如列表的子哈希和其他字节)上使一种哈希算法。IPFS中有多种散列算法可用<ref>GitHub - ipfs/kubo: [https://github.com/ipfs/kubo/tree/master An IPFS implementation in Go]</ref>。


# '''去中心化存储'''
=== 使===
#* 作为传统云存储的替代方案,IPFS 可于存储个人数据、网站、媒体文件等。通过与 Filecoin 等激励层集成,用户可以付费获取可靠的长期存储。
用户通过ipfs关上传文件获得件cid过cid在ipfs网访问文件,访问可以无需安装客户端
# '''分布式络应用'''
#* 支持去中心化应用(DApps)部署,尤其适合 Web3 环境。许多去中心化社交平台、NFT 市场和 DeFi 项目使用 IPFS 存储前端和文件数据。
# '''内容分发网络(CDN)优化'''
#* IPFS 可作为更高效的内容分发网络减少依赖传统 CDN 提供商,优化数据传输速度和可靠性。
# '''去中心化网站托管'''
#* 网站件(HTML、CSS、JavaScript 等)可以通过 IPFS 存储使其能够绕过中心化托管服务和审查。
# '''NFT 存储'''
#* 非同质化代币(NFT)常将元数据和文件(如图片、音频等)存储在 IPFS 上确保其在区块链之外也有可靠的存储来源。
# '''科学数据存储与共享'''
#* IPFS 适用于存储和共享大型数据集(如基因组数据、天文学观测数据等),确保数据的完整性和可访问性。
# '''文件备份与协作'''
#* 团队可以利用 IPFS 共享和协作文件,同时减少对中心化平台的依赖


== IPFS 局限性 ==
ipfs官方提供了一个网关,同时也有用户自行搭建网关,ipfs官方的网关在中国大陆地区已经被屏蔽。


# '''存储保障依赖'''
部分浏览器置ipfs的支持,可以使用关或者本地节点访问ipfs资源内容
#* IPFS 本身并不保证文件永久存储,容需通过续访问或外部激励(如 Filecoin)来保障长期保存。
# '''初始加载速度'''
#* 如果某文件的节点数量较少获取数据能会较慢,尤其在冷启动时。
# '''络规模限制'''
#* 当前 IPFS 网络的规模和节点分布尚未达到全球化互联网的成熟水平,可能影响访问效率。
# '''用户体验挑战'''
#* CID 对普通用户不够直观,缺乏基于传统 URL 的访问便捷性。
# '''法律与监管问题'''
#* IPFS 的抗审查特性可能会面临法律和监管的挑战,尤其是在审查严格的国家


== IPFS 的未来发展方向 ==
=== 不足 ===
一个文件如果没有节点进行存储,也会丢失,无法访问。


# '''激励机制增强'''
NAT网络内的一个节点内的文件,其它关很难访问。
#* 通过集成 Filecoin 等去中心化存储激励协议,吸引更多节点参与,提高存储稳定性和长期保障。
# '''性能优化'''
#* 提升文件访问的速度和效率例如优化 DHT 查找和缓存策略。
# '''广泛集成'''
#* 与更多 Web3 应用、区块链项目和传统互联技术融合,推动去中心化技术的普及。
# '''用户友好性改进'''
#* 为普通用户提供更直观的访问和管理工具,降低技术门槛。
# '''生态系统扩展'''
#* 发展更多基于 IPFS 的商业应用,如去中心化视频流、音乐平台和知识共享平台


== IPFS 的现实影响 ==
非热门资源,存储的节点过少,网关的访问速度很慢。
IPFS Web3 去中心化技术核心础设施之一,其去中心化、高效和抗审查的特性为互联网提供了运行模式在数字资产(如 NFT)、去心化金融(DeFi)、以及数据存储领域广泛应用,正不断验证其技术的潜力。尽管仍有挑战需要克服但 IPFS 有望为未来互联网重要组成部分为全球用户提供更加开放、安全和自由数据享环境
 
== 使用案例 ==
 
* 在2017年9月至10月间的举办的2017年加泰罗尼亚独立公投,因被西班牙宪法法院认定违法而使网站被屏蔽。此后,加泰罗尼亚海盗党将网站整个镜像到IPFS上以回避加泰罗尼亚高等法院的屏蔽命令。
* IPFS被用于建立维基百科的镜像,让那些住在维基百科被国家法律屏蔽的地方的人民能继续访问到维基百科的内容。不过那份被镜像的维基百科一份被限制改的复制本且无法被更新。
* 文件币也与IPFS有关,其是由Juan Benet协议实验室合作开发的一套于IPFS的协作存储云。
* Cloudflare营运有个分布式Web网关使用户可在无本地节点的情况下,简化、加速且安全的访问IPFS
* IPLF是Dean Reynaud在2001年发表于“Data Science”的一篇开创性文章创造一个语。<sup>[来源可靠?]</sup>
* 博客平台 Matters 发布文章会自动被分布存储到ipfs上并生唯一文章指纹。此后文章无法被他人删改并可以在IPFS节点上通过文章指纹被找到
 
== 参考链接 ==
<references />

2024年12月5日 (四) 02:41的版本

星际文件系统InterPlanetary File System,缩写为IPFS)是一个旨在实现文件的分布式存储、共享和持久化的网络传输协议[1]。它是一种内容可寻址的对等超媒体分发协议,用于在分布式哈希表中存储和共享数据。通过使用内容寻址,IPFS 在连接 IPFS 主机的全局命名空间中唯一标识每个文件,从而创建了一个弹性的文件存储和共享系统。

在 IPFS 网络中的节点构成一个分布式文件系统。它是一个开放源代码项目,自 2014 年开始由协议实验室在开源社区的帮助下发展。其最初由 Juan Benet 设计[2]。IPFS 允许用户以类似于 BitTorrent 的方式托管和接收内容。与以中央服务器为中心的传统协议(如 HTTP 和 HTTPS)相反,IPFS 围绕用户运营商的去中心化系统构建,这些运营商持有部分总体数据。网络中的任何用户都可以通过其内容地址提供文件,网络中的其他对等节点可以使用分布式哈希表 (DHT) 从拥有该文件的任何节点查找和请求该内容。

与传统的基于位置的协议(如 HTTP 和 HTTPS)相比,IPFS 使用基于内容的寻址来提供一种去中心化的替代方案来分发万维网。IPFS 用于去中心化应用程序和内容存档。

星际文件系统
开发者 Protocol Labs
当前版本 0.32.1(2024年11月15日;稳定版本)
源代码库 github.com/ipfs/kubo
编程语言 协议实现:Go(参考实现)、JavaScript、C语言、Python

客户端库:Go、Java、JavaScript、Python、Scala、Haskell、Swift、Common Lisp、Rust、Ruby、PHP、C♯、Erlang

操作系统 FreeBSD、Linux、macOS、Windows
语言 Go、JavaScript、Python
类型 协议、分布式文件系统、内容分发网络
许可协议 MIT许可证
网站 ipfs.tech

发展历程

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

目前的实现采用 Go 和 JavaScript,并有 Python 实现(上次提交时间2020年1月29日)。Go实现被认为是开发正式规范时的“参考实现”[3]

概述

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

该文件系统可以通过多种方式访问,包括FUSE与HTTP。将本地文件添加到IPFS文件系统后,其他用户通过IPFS网关进行访问。文件表示基于其哈希,因此有利于缓存。文件的分发采用一个类似BitTorrent的协议。其他查看内容的用户也有助于将内容提供给网络上的其他人。

IPFS有一个称为IPNS的名称服务,可以绑定域名或者用户公钥,固定访问的链接,但是访问的内容可以更新。

Merkle数据格式

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

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

使用

用户通过ipfs网关上传文件后,获得文件cid,再通过cid在ipfs网关访问文件,访问者可以无需安装客户端。

ipfs官方提供了一个网关,同时也有用户自行搭建的网关,ipfs官方的网关在中国大陆地区已经被屏蔽。

部分浏览器内置ipfs的支持,可以使用网关或者本地节点访问ipfs资源内容。

不足

一个文件如果没有节点进行存储,也会丢失,无法访问。

NAT网络内的一个节点内的文件,其它网关很难访问。

非热门资源,存储的节点过少,网关的访问速度很慢。

使用案例

  • 在2017年9月至10月间的举办的2017年加泰罗尼亚独立公投,因被西班牙宪法法院认定违法而使网站被屏蔽。此后,加泰罗尼亚海盗党将网站整个镜像到IPFS上以回避加泰罗尼亚高等法院的屏蔽命令。
  • IPFS被用于建立维基百科的镜像,让那些住在维基百科被国家法律屏蔽的地方的人民能继续访问到维基百科的内容。不过那份被镜像的维基百科是一份被限制改动的复制本且无法被更新。
  • 文件币也与IPFS有关,其是由Juan Benet和协议实验室合作开发的一套基于IPFS的协作存储云。
  • Cloudflare营运有一个分布式Web网关,使用户可在无本地节点的情况下,简化、加速且安全的访问IPFS。
  • IPLF是Dean Reynaud在2001年发表于“Data Science”的一篇开创性文章中创造的一个术语。[来源可靠?]
  • 博客平台 Matters 发布的文章会自动被分布存储到ipfs上,并生成唯一的文章指纹。此后文章无法被他人删改,并可以在IPFS的公共节点上通过文章指纹被找到。

参考链接