区块链 | IPFS 工作原理入门

news2024/11/15 8:09:46

🦊原文: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.coloradmin.cn/o/1638391.html

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

相关文章

LeetCode热题100:双指针

283.移动零 题目链接:移动零 题目描述:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 解题思路: 创建两…

三种滤波(EKF、UKF、CKF)的对比,含MATLAB源代码

使用MATLAB模拟三维的滤波,包含扩展卡尔曼滤波EKF、无迹卡尔曼滤波UKF、容积卡尔曼滤波CKF。 状态更新和观测更新均为非线性的,模拟一定强度的机动性,可用于卡尔曼滤波方法的对比学习,自己修改成需要的运动模型后,可以用于组合导航(GPS+DVL形式)。 运行结果 真值的三轴…

c#word文档:3.向Word文档中插入表格/4.读取Word文档中表格

--向Word文档中插入表格-- (1)在OfficeOperator项目的WordOperator类中定义向Word文档插入换页的函数NewPage (2)在WordOperator类中定义向Word文档插入表格的函数InsertTable using Microsoft.Office.Interop.Word;// 引入Mic…

不小心格式化固态硬盘之后,数据能恢复吗?小白实测

前言 这段时间突然想到一件事情:固态硬盘一旦坏了,数据恢复的可能性基本上是0。 这件事情是小白自己亲身经历的,所以使用固态硬盘的小伙伴一定要注意数据备份,至少备一份到机械硬盘里,还会稍微可靠一些。 这几天小白…

node.js的常用内置库(1)共128节

我说假如node.js 一路杀出,成为一种后端主要选型的时候,你再次去了解晚么,不晚,但给你的时间肯定不多~😄 跟着我一起开始认识node吧,今日份不多3个API ,加油 1.assert 在 Node.js 环…

水稻病害检测(YOLO数据集,多分类,稻瘟病、纹枯病、褐斑病、枯心病、霜霉病、水稻细菌性条纹斑病、稻苞虫)

是自己利用LabelImg工具进行手工标注,数据集制作不易,请尊重版权(稻瘟病、纹枯病、褐斑病、枯心病、霜霉病、水稻细菌性条纹斑病、稻苞虫) 如果需要yolv8检测模型和数据集放在一起的压缩包,可以关注:最新最…

Pandas入门篇(三)-------数据可视化篇3(seaborn篇)(pandas完结撒花!!!)

目录 概述一、语法二、常用单变量绘图1. 直方图(histplot)2. 核密度预估图(kdeplot)3. 计数柱状图(countplot) 三、常用多变量绘图1.散点图(1) scatterplot(2)regplot 散点图拟合回归线(3)jointplot 散点图…

DVWA 靶场命令注入通关解析

介绍 命令注入(Command Injection)是一种常见的安全漏洞,它允许攻击者通过在应用程序中执行恶意命令来获取系统权限或执行非授权操作。 命令注入通常发生在需要将用户输入作为命令执行的地方,例如Web应用程序的输入框、参数传递…

【C++容器map】map的相关用法

&#x1f389;博主首页&#xff1a; 有趣的中国人 &#x1f389;专栏首页&#xff1a; C进阶 &#x1f389;其它专栏&#xff1a; C初阶 | 初阶数据结构 | Linux 本篇文章主要讲解 C容器之map相关用法 的相关内容 文章目录 1. map的介绍2. map的使用<font size5 color #…

Word域代码学习(简单使用)-【SEQ】

Word域代码学习(简单使用)-【SEQ】 快捷键 序号快捷键操作1 Ctrl F9 插入域代码花括号2 F9 显示域代码结果3 Shift F9 切换为域代码4 Windows Alt F9 切换全部域代码 域代码说明 域代码不区分大小写在word中&#xff0c;依次选择插入➡文档部件➡域即可选择插入…

WordPress Automatic插件 SQL注入漏洞复现(CVE-2024-27956)

0x01 产品简介 WordPress Automatic(又称为WP Automatic)是一款流行的WordPress插件,旨在帮助网站管理员自动化内容创建和发布。该插件可以从各种来源(如RSS Feeds、社交媒体、视频网站、新闻网站等)获取内容,并将其自动发布到WordPress网站。 0x02 漏洞概述 WordPres…

Linux-进程调度器

1. 前言 在计算机中&#xff0c;进程的数量远多于cpu的数量&#xff0c;所以就存在&#xff0c;多个进程抢占一个cpu的情况&#xff0c;所以就需要一套规则&#xff0c;决定这些进程被处理的顺序&#xff0c;这就叫做进程调度。 在我的简单理解下&#xff0c;其实就是把进程放…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-6.4--汇编LED驱动程序

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

网络安全之弱口令与命令爆破(中篇)(技术进阶)

目录 一&#xff0c;什么是弱口令&#xff1f; 二&#xff0c;为什么会产生弱口令呢&#xff1f; 三&#xff0c;字典的生成 四&#xff0c;使用Burpsuite工具验证码爆破 总结 笔记改错 一&#xff0c;什么是弱口令&#xff1f; 弱口令就是容易被人们所能猜到的密码呗&a…

Android数据恢复软件快速比较:Android数据恢复的7最佳工具

您在 Android 设备上保留哪些类型的数据&#xff1f;如果您和大多数人一样&#xff0c;那么您可能已经列出了文档、照片、视频和音频文件。如果您使用智能手机或平板电脑的时间足够长&#xff0c;我们愿意打赌您拥有Android数据丢失的第一手经验。 幸运的是&#xff0c;我们也…

JSON教程(非常详细)

参考文章来源&#xff1a;JSON教程&#xff08;非常详细&#xff09; 目录 JSON JSON 发展史 为什么要使用 JSON&#xff1f; JSON 的不足 存储格式 使用场景 1) 定义接口 2) 序列化 3) 生成 Token 4) 配置文件 JSON语法规则 JSON 与 JavaScript 对象的区别 JSON数…

Python | Leetcode Python题解之第62题不同路径

题目&#xff1a; 题解&#xff1a; class Solution:def uniquePaths(self, m: int, n: int) -> int:return comb(m n - 2, n - 1)

基于SSM的个人博客系统(三)

目录 第五章 系统实现 5.1 登录模块 5.1.1 博主登录 5.2 博客管理模块&#xff1a; 5.2.1 博客查询 5.2.2 博客新建 5.2.3 博客修改 5.2.4 博客删除 5.3 博客类别管理模块 前面内容请移步 基于SSM的个人博客系统&#xff08;二&#xff09; 个人博客系统的设计…

飞腾FT1500A-16 6U VPX高性能密集计算刀片

飞腾FT1500A-16 6U VPX高性能密集计算刀片 一款高性能6U VPX单板显示计算机&#xff0c;产品遵循OpenVPX Vita65规范。采用目前主流的GPGPU架构&#xff0c;其板载一颗天津飞腾公司的FT1500A-4四核处理器&#xff0c;并搭配AMD?公司的高性能嵌入式显卡Radeon? E8860 GPU。E88…

【论文阅读:Data Shapley: Equitable Valuation of Data for Machine Learning】

1.基于蒙特卡罗方法和截断的方法计算&#xff08;TMC—Shapley&#xff09; 输入 训练数据集D学习算法A表现分V 输出 各方数据的贡献 ϕ i \phi_i ϕi​ 初始化 初始化各方的贡献 ϕ i 0 \phi_i0 ϕi​0,并设置当前迭代轮次为0 过程 算法进入一个循环迭代&#xff0c;直到满足…