区块链 | IPFS 工作原理入门

🦊原文:What is the InterPlanetary File System (IPFS), and how does it work?
🦊写在前面:本文属于搬运博客,自己留存学习。



1 去中心化互联网

尽管万维网是一个全球性的网络,但在数据存储方面,它仍然主要是集中式的。也就是说,无论是物理的还是虚拟的服务器,都存放在大型的「server farms,服务器农场」或云平台上,通常由一家公司拥有。要访问这些服务器上的信息,用户必须建立一个超文本传输协议(HTTP)或超文本传输协议安全(HTTPS)连接到特定的服务器,该服务器作为数据检索的集中点。

HTTP 作为互联网上传输文件的主要手段,有其局限性。它仅适用于小文件,因为其成本效益高,并且无法充分利用创新的文件分发技术。同时,新的挑战不断出现,包括传输 peta 字节大小的数据集、管理高容量实时媒体流以及确保文件持久性。本质上,每个问题都归结为需要以去中心化的方式提供更高的可用性和容纳更大文件的需求。

几种技术,包括 镜像服务器内容分发网络,通过故意将内容存储在靠近最终用户的地方,有效地将从 “源” 服务器到消费者的内容分发。然而,重要的是要记住,尽管采取了这些措施,文件仍然只能在少数的几个区域被访问。

为了解决这些挑战,已经开发出了星际文件系统(IPFS)。IPFS 是一种创新的 Web3 现象,代表了一种去中心化网络实现,是文件存储和检索的重大突破。IPFS 提供了一个充满希望的替代方案,它赋予用户更大的控制权,并提供了更加坚韧的互联网体验。



2 IPFS 是什么,它是如何工作的?

正如其名称所暗示的,IPFS 协议旨在建立一个完全去中心化的系统,能够在地方之间相互隔绝或相距甚远的地方运行,比如星球之间。IPFS 是在 2015 年由计算机工程师 Juan Benet 提出的,并由 Protocol Labs 团队维护,该团队还创建了一个基于区块链技术的加密货币和协作数字存储及数据检索方法 —— Filecoin,如下图所示:

在这里插入图片描述

基本上,IPFS 是一个点对点(P2P)分布式系统,用于存储、访问和共享文件、网站、应用程序和数据。IPFS 建立在去中心化环境之上,并采用了来自 torrents 的分布式和节省带宽的技术。

种子文件(torrent file)是由 BitTorrent 协议所定义的,用于保存一组文件的元数据的文件,扩展名一般为 “.torrent”。种子文件本质上是文本文件,包含 Tracker 信息和文件信息两部分。Tracker 信息主要是需要用到的 Tracker 服务器的地址和针对 Tracker 服务器的设置;文件信息是通过对目标文件的计算生成的,计算结果根据 BitTorrent 协议内的 Bencode 规则进行编码。它的主要原理是将被下载文件虚拟分成大小相等的块,块大小必须为 2 k 2k 2k 的整数次方(由于是虚拟分块,硬盘上并不产生各个块文件),并把每个块的索引信息和 hash 验证码写入种子文件中。因此,种子文件就是被下载文件的 “索引”。



2.1 去中心化

左图是中心化的「客户端 — 服务器」结构,右图是去中心化的「点 — 点」结构:
在这里插入图片描述

中心化网络与去中心化网络的关键区别在于,数据是如何被标识和检索的。在中心化网络中,人们依赖于可信赖的实体(Server)来托管他们的数据,并使用「基于位置的」统一资源定位符(URL)来访问这些数据。



2.2 基于内容寻址

左图是中心化「基于位置的」寻址,右图是去中心化「基于内容的」寻址:
在这里插入图片描述

相比之下,IPFS 网络使用一个内容寻址系统,其中内容本身在帮助人们找到他们要找的东西方面起着关键作用。在 IPFS 中,每块内容都有一个独特的哈希值,称为 IPFS 内容标识符(CID)。这意味着内容是根据其哈希值而非位置来存储和检索的,这使得篡改或审查变得更加困难。

针对一个大文件,当它保存到 IPFS 网络中时会被分片,即把大的文件分成小的碎片。每个碎片都有自己的哈希值(CID),再根据碎片的哈希值生成对应的链接。



2.3 工作方式

IPFS 的去中心化网络由相互连接的计算机节点组成,这些节点使用分布式哈希表(DHT),这是一种去中心化存储系统,它为键值映射提供查找和存储。在 DHT 中,每个节点对其特定的键和映射值负责,并且能够有效地检索给定键对应的值。

🥕 DHT 中存储三种类型的记录:

  • 内容标识(CID)到节点标识(PeerID)的映射
  • 节点标识(PeerID)到节点地址(IP)的映射
  • IPFS 名称到 IPFS 指针的映射

IPFS 节点存储数据,并将其提供给任何请求它的人。当请求一个文件或网页时,该文件的副本会被缓存到请求者的节点上。随着越来越多的人请求相同的数据,会创建更多的缓存副本。后续对文件的请求可以由任何拥有它的节点或节点的组合来满足。这样,数据的交付和请求的履行就在多个位置之间分担,从而提高了效率和可访问性。

每个节点都会保存其下载过的文件的缓存,用来保证即使某一个持有该资源的节点退出 IPFS 网络,该资源仍然可以被其他节点访问。



3 IPFS 是区块链吗?

IPFS 是一种去中心化技术,与区块链相似,但它们有不同的目的、特征和应用场景。IPFS 致力于创建一个全球性的、去中心化的网络,用于存储和共享文件。它旨在通过在多个位置存储文件来提高传统网络协议的效率和弹性,从而使文件免受审查并确保即使在某些节点离线时也能保持可用。

另一方面,区块链主要作为去中心化的账本,以透明和不可篡改的方式记录交易或数据。区块链依赖于 共识机制加密算法 来确保存储在链上的数据的完整性和安全性。此外,它通常用于去中心化应用程序(DApps),涉及加密货币、智能合约等,例如去中心化金融(DeFi)。

尽管 IPFS 可以与区块链技术结合使用,但它们是为不同目的而设计的。IPFS 提供了一个去中心化的存储和分发系统,而区块链提供了一种去中心化和透明的方式来记录和验证交易或数据。

详细的比较如下:
在这里插入图片描述

IPFS 对内容有编址,而区块链没有;IPFS 允许更改内容,而区块链禁止。



4 IPFS 的应用有哪些?

IPFS 适用于各种目的,从全球内容交付、安全存储文件到促进高效文件共享。IPFS 可以作为公共区块链和其他 P2P 系统的互补文件系统。它有潜力增强像以太坊这样的平台上的 DApps 的可扩展性。通过与以太坊的智能合约的集成,IPFS 可以在加密生态系统内提供安全且成本效益高的存储能力,从而提高以太坊的整体性能。此外,IPFSFilecoin 结合可以创造数据存储的激励。这种组合在非同质化代币(NFTs)的数据开发和存储中可以发挥重要作用。

总的来说,IPFS 的应用范围广泛,从增强 DApps 的可扩展性到通过确保有益的数据记录来革命化 NFTs



5 IPFS 是否具有可追溯性?

每个 IPFS 节点都有一个公共的 PeerID,可以通过在 DHT 中查找来追踪与之关联的 IP 地址随时间的变化。

DHT 中存储了节点标识(PeerID)到节点地址(IP)的映射。

作为一个免费供所有人使用的 P2P 数据传输和存储协议,IPFS 是一个公共网络。参与网络的节点存储链接到全局一致的 CIDs 的数据,并通过公开可访问的 DHT 向其他节点广播其可用性。

因此,尽管节点之间的 IPFS 流量是加密的,但节点向 DHT 披露的基本元数据,包括它们的唯一节点标识符(PeerIDs)和它们提供的数据的 CIDs,是公开可访问的并且可以被追踪。任何人都可以在 IPFS 上访问这类数据。

数据被加密为 CIDs,其中数据是加密的,但 CIDs 是明文的。



6 IPFS 的缺点是什么?

普及率

采用 IPFS 的主要挑战之一在于其推广速度。尽管该技术拥有极具吸引力的功能,但与传统的网络协议相比,其普及程度并不高。为了克服这一难题,我们需要提升公众对 IPFS 的认识,缓解用户的顾虑,并提供高效工具和资源来推动向 IPFS 的平滑过渡。更广泛地采用 IPFS 要求我们根本改变获取和分发信息的方式,这可能需要用户和组织花费一定时间来全面接受。

互操作性

互操作性同样是 IPFS 面临的一个关键挑战。尽管它旨在取代 HTTP,成为互联网访问的主导协议,但 IPFS 需要与现有的网络协议无缝集成。这种集成可能要求对当前的网络基础设施进行重大修改,这可能会影响到 IPFS 的普及速度。

用户激励

激励用户向 IPFS 网络贡献资源也构成了一个重要的挑战。鉴于 IPFS 依赖于点对点(P2P)网络来分发和存储数据,因此设计有效的激励和奖励机制变得尤为关键。激发用户的积极参与和资源共享对于确保 IPFS 生态系统的持续性和增长至关重要。

安全性

安全性是任何技术都无法回避的持续关注点,IPFS 也不例外。愿意分享数据的用户会对使用 IPFS 的安全性感到好奇。虽然 IPFS 利用内容寻址和加密技术来保护存储在网络上的数据,但仍可能存在潜在的漏洞和安全风险,这些都需要被及时解决。不断加强安全措施和降低潜在威胁是确保 IPFS 网络中用户数据完整性和隐私的关键。

更新难

最后,尽管 IPFS 的去中心化和分布式特性在安全和隐私方面带来了优势,但这种架构的不可变性使得更新变得更为复杂。因此,需要定期且系统地推出新版本,以便有效地集成必要的升级和改进。

通过促进普及率、确保互操作性、创建有效的激励措施和增强安全性,IPFS 分布式文件存储协议可以克服这些障碍,实现作为去中心化和弹性文件管理变革性技术的潜力。



7 IPFS 的未来

IPFS 是一个 P2P 文件共享网络,最初于 2014 年推出,由于其独特的特性而逐渐受欢迎,这些特性为传统的「客户端 — 服务器」架构提供了一种替代方案。该协议已经通过增强 DApps 的可扩展性而彻底改变了加密领域,并在包括金融和媒体在内的各种行业中获得了关注。IPFS 的去中心化本质和内容可寻址系统使其成为未来网络技术的关键参与者。

IPFS 改变我们如何在互联网上存储、共享和访问信息的潜力是巨大的,随着技术的不断发展,我们可以期待未来进一步的进步和采用。



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1409902.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

模块六:模拟——1419.数青蛙

文章目录 题目描述算法原理解法(模拟 分情况讨论) 代码实现 题目描述 题目链接:1419.数青蛙 算法原理 解法(模拟 分情况讨论) 模拟⻘蛙的叫声。 当遇到 ‘r’ ‘o’ ‘a’ ‘k’ 这四个字符的时候,我…

ctfshow web入门 sql注入 web201--web208

web201 先扫描先 python .\sqlmap.py -u "http://4863661d-2371-4812-ae62-128fadbdc0a4.challenge.ctf.show/api/?id" --user-agentsqlmap 加头 python .\sqlmap.py -u "http://4863661d-2371-4812-ae62-128fadbdc0a4.challenge.ctf.show/api/?id" --u…

考研数据结构chap8排序

目录 一、概念 1.评价 (1)稳定性 (2)Tn、Sn 2.分类 (1)内部排序 (2)外部排序 二、插入排序 1.直接插入排序(InsertSort) (1)思路 (2&am…

四元数代数

书籍:Quaternion Algebras 作者:John Voight 出版:Springer 书籍下载-《四元数代数》这本教科书全面介绍了四元数代数和阶的算术理论,这一主题在数学的不同领域都有应用。这本书为研究生读者撰写,易于阅读和理解&am…

24华东杯A题9页完整思路+代码+可视化图表

​比赛题目的完整版思路可执行代码数据参考论文都会在第一时间更新上传的,大家可以参考我往期的资料,所有的资料数据以及到最后更新的参考论文都是一次付费后续免费的。注意:(建议先下单占坑,因为随着后续我们更新资料…

[]2024年第⼗五届蓝桥杯全国软件和信息技术专业人才大赛(Web 应用开发)

一、爱拼才会赢(5分) 介绍 由爱拼社举办的拼图⼤赛进⾏到最后⼀关,1 号选⼿⼩蓝披荆斩棘成为全场⿊⻢。本关卡需要选⼿使⽤ CSS Grid 布局完成拼图⻚⾯,但是由于⼩蓝技术⽔平有限,拼图的效果没有达到预期。现在邀请你…

Flutter 弃用 WillPopScope 使用 PopScope 替代方法

Flutter 弃用 WillPopScope 使用 PopScope 替代方法 视频 https://youtu.be/u3qdqUvFWiM https://www.bilibili.com/video/BV1aJ4m1n7FZ 前言 原文 https://ducafecat.com/blog/migrating-from-willpopscope-to-popscope-in-flutter 了解如何在 Flutter 3.16 中将弃用的 Wil…

C++笔试练习笔记 【2】: 数字统计 BC153 两个数组的交集 NC313 点击消除 AB5

文章目录 数字统计分析题目代码部分 两个数组的交集题目分析代码部分 点击消除题目解析代码部分 数字统计 分析题目 这个题涉及到两个知识点,就是枚举和数字的拆分 那么我的思路是进行遍历,拆分数字判断二的个数,枚举进行计数 那么数字的拆分…

如何通过前后端交互的方式制作Excel报表

前言 Excel拥有在办公领域最广泛的受众群体,以其强大的数据处理和可视化功能,成了无可替代的工具。它不仅可以呈现数据清晰明了,还能进行数据分析、图表制作和数据透视等操作,为用户提供了全面的数据展示和分析能力。 今天小编就…

labview中TDMS读写波形图

TDMS与二进制读写速度区别不大,但是它具备关系型数据库的一些优点,经常用于存取波形数据。

操作系统的运行机制详解

操作系统的 运行机制 #mermaid-svg-jVBbLUJa6gITOo7L {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-jVBbLUJa6gITOo7L .error-icon{fill:#552222;}#mermaid-svg-jVBbLUJa6gITOo7L .error-text{fill:#552222;stroke…

Spring实战项目【从0到1】:博客系统(上)

目录 1. 项目介绍2. 项目准备2.1 数据库准备2.2 创建项目2.3 配置文件2.4 准备前端页面2.5 测试 3. 项目公共模块3.1 实体类3.2 公共层 4. 业务代码4.1 持久层代码4.2 实现博客列表4.3 实现博客详情 1. 项目介绍 使用SSM框架(Spring、Spring MVC、MyBatis框架)实现…

电脑技巧:轻松查看笔记本电脑电池的使用情况

目录 方法一:手工执行cmd命令 方法二:直接封装为Bat脚本 电池损耗程度介绍 Battery report字段中英文对照表 在大家日常办公和生活当中,笔记本电脑已成为非常重要工具。然而,随着笔记本电脑用的越久,电池的损耗难以…

创新指南|人工智能行为预测如何改变营销

在我们现在工作的人工智能营销新世界中,人工智能行为预测不仅作为一个流行词出现,而且作为一股革命力量,有望重新定义营销格局。 这种创新方法利用人工智能 (AI)的强大功能 来预测消费者行为,利用庞大而复杂的数据集来收集以前无法…

企业级数据治理学习总结

1. 水在前面 “数据治理”绝对是吹过的牛里面最高大上的题目了,本来想直接以《企业级数据治理》为题来水的,码字前又跑去图书馆借了几本书,翻了几页才发现自己连半桶水都提不起,撑死只能在小屁孩跟前吹吹牛。 好吧,实在…

【前端】-【防止接口重复请求】

文章目录 需求实现方案方案一方案二方案三 需求 对整个的项目都做一下接口防止重复请求的处理 实现方案 方案一 思路:通过使用axios拦截器,在请求拦截器中开启全屏Loading,然后在响应拦截器中将Loading关闭。 代码: 问题&…

详详详解动归数组常见习题(C/C++)

文章目录 最长递增数组序列(必须连续)dp[i] dp[i - 1] 1;最长递归子序列(不需要连续)dp[i] max(dp[i], dp[j] 1);俩层循环总结一维dp最长重复子数组最长公共子序列总结二维dp最终目标[3692. 最长连续公共子序列 - AcWing题库]…

【C++庖丁解牛】C++11---lambda表达式 | 包装器

🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 1. lambda表达式1.1 C98中…

ip地址与硬件地址的区别是什么

在数字世界的浩瀚海洋中,每一台联网的设备都需要一个独特的标识来确保信息的准确传输。这些标识,我们通常称之为IP地址和硬件地址。虽然它们都是用来识别网络设备的,但各自扮演的角色和所处的层次却大相径庭。虎观代理小二将带您深入了解IP地…

主成分分析在R语言中的简单应用:使用mvstats包

在数据科学领域,主成分分析(PCA)是一种广泛使用的技术,主要用于数据降维和探索性数据分析。PCA可以帮助我们发现数据中的模式,减少数据集的复杂性,同时保持数据中最重要的特征。本文将介绍如何在R语言中使用…