去中心网络上的内容寻址

Content Addressing on the Decentralized Web

Identifying and retrieving data on the web

How we identify and retrieve data

集中式网络和分散式网络之间最重要的区别之一是我们识别和检索两者数据的方式。我们用一个简单的例子来说明:

您的两个朋友 Lars 和 Courtney 为您爱猫的孩子推荐了同一本书,但他们以截然不同的方式向您描述这本书:

  • Lars:“去纽约市百老汇 828 号的 Strand 书店,乘电梯到 2 楼,在儿童区找到右边的第三个书柜,然后在最上面的书架上找到离左边 16 英寸的书。 ”

  • Courtney:“看看 Anna Claybourne 有史以来最可爱的小猫。它的 ISBN-13 编号是 9781682972168。”

如果您的目标是获得这本书的副本,您认为这些描述中的哪一个最有帮助?哪一个为您提供了获取这本书的最多选择?在每种情况下,一旦您按照说明进行操作,您对找到朋友想要的书的信心有多大?

Location addressing and content addressing

您的一位朋友通过位置识别了这本书,另一个朋友通过其内容识别了这本书。 (不确定哪个是哪个?提示:我们喜欢头韵(一种英文诗的押韵方式)几乎就像 Lars 喜欢位置寻址而 Courtney 喜欢内容寻址一样。)

位置寻址将我们指向特定实体存储数据的位置。 Lars 向我们指出了一个由 Strand 控制的特定书架,他知道他们以前曾在那里保存这本书,并希望他们继续在那里提供它。这就是我们在集中式网络上识别数据的方式。

相反,内容寻址为数据提供了一个唯一的、内容派生的标识符,我们可以使用它来从各种来源检索数据。我们本可以使用 Courtney 提供的 ISBN 来验证我们是否在当地图书馆、邻居家或学校书展上找到了合适的书。这就是我们在去中心化网络上识别数据的方式。

让我们更深入地了解这两个模型。

The centralized web: Location-based addressing

让我们首先检查我们传统上用来访问数据的模型。

Location addressing with URLs

URL(统一资源定位器)是我们为集中式网络(你知道,我们都习惯的普通旧网络)上的数据相互提供的主要地址。它们使我们能够在网络上创建链接和连接数据,因此它们具有重要的用途。 (没有链接,网络会非常糟糕!)然而,URL 是基于数据存储的位置,而不是存储在那里的资源的内容。我们称之为位置寻址,它给我们带来了一些问题。

我们中的大多数人对 URL 都有很多经验,我们会根据我们的经验对它们做出一些假设。例如,当我们看到 https://www.puppies.com/beagle.jpg 时,我们可能会从文件名和扩展名猜测该位置存储的数据是比格犬的图像(JPEG 格式),但我们无法仅从 URL 中验证这一点。很可能在 beagle.jpg 上有一只吉娃娃躲藏的照片,或者更糟的是,一只可爱的小猫!

通过域名,URL 指示我们应该去哪个机构获取数据。尽管网络在某种意义上已经是去中心化的(因为任何人都可以链接到其他人),但引用数据的链接是基于位置的,因此数据本身必须集中在一个权威机构上,以便我们找到它。我们对这些权限(或域)做出假设,就像我们对文件名所做的一样。例如,我们可能假设 puppies.com 托管的文件比 evilhacker.com 托管的文件更安全,但我们不能确定。

最终,托管在集中式 Web 上的文件内容与其基于位置的地址没有直接关系。如果我们看到一张可爱的小狗的图片并被告知它存储在网络上,我们就无法猜测将我们引导到该图片的 URL。我们既不能确定域(它告诉我们谁在托管它),也不能确定文件名。

Trust and efficiency on the centralized web

由于我们无法验证特定 URL 上的内容,并且依赖中央权威(和人类善意)来标记事物的真实面貌,因此我们很容易被恶意行为者欺骗。

42,000 人也很容易存储那只可爱的小猎犬的完全相同的照片,但都在不同的域和不同的文件名中,从而导致大量冗余。让我们面对现实吧,即使在我们自己的笔记本电脑上,我们大多数人也无意中保存了与 download.pdf 和 download(01).pdf 相同的文档,而没有意识到这一点,或者使用 v1 或 2018 一遍又一遍地保存相同学期论文的迭代- 12-18 添加到标题。网络是一堆令人困惑的数据,这些数据在不同的 URL 中多次保存,并且没有简单的方法来判断哪些项目彼此相同。

一定会有更好的办法!

The decentralized web: Content addressing

正如我们所见,集中式网络依赖于可信赖的机构来托管我们的数据并使用基于位置的 URL 来访问它。但还有另一种选择。在去中心化的网络上,我们都可以托管彼此的数据,使用更安全的不同类型的链接,从而更容易信任我们的邻居。

Cryptographic hashing

加密散列是去中心化数据结构工具箱中最重要的工具。它为一种新的链接形式打开了大门,称为内容寻址,使我们摆脱对中央权威的依赖。

散列获取任何大小和类型的数据,并返回给您一个表示它的固定大小的“散列”。哈希是一串看起来像 gobbledygook 的字符,但您可以将其视为数据的唯一名称。它可能看起来像这样:

bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi

老实说,这些名称目前对人类不是很友好(beagle.jpg 更具描述性!),但它们更安全。原因如下:

加密哈希可以从数据本身的内容中推导出来,这意味着任何人对同一数据使用相同的算法都会得到相同的哈希。如果 Ada 和 Grace 都使用相同的去中心化网络协议(例如 IPFS)来共享完全相同的小猫照片,则两张图像将具有完全相同的哈希值。通过比较这些哈希值并确认它们相同,我们可以保证这两张照片的每个像素都是相同的。

加密哈希是唯一的。如果 Grace 使用 Photoshop 去除那只小猫的一根胡须,则更新后的图像将具有新的哈希值。只需查看该散列,即使无法访问文件本身,也很容易判断该文件现在包含不同的数据。

Trust on the decentralized web

在集中式网络上,我们学会了信任某些权威而不是其他权威。我们尽最大努力利用从 URL 中获得的线索,但也有一些恶意行为者利用位置寻址的缺点来欺骗我们。

然而,在去中心化的网络上,我们都参与并托管彼此的数据,内容寻址使我们能够信任共享的信息。我们可能不太了解托管数据的对等方,但哈希可以防止恶意行为者在文件内容方面欺骗我们。这就是加密散列对分散网络如此重要的原因。

Asking peers for content

使用传统的位置寻址,我们知道我们需要访问域 puppies.com 才能找到存储为 beagle.jpg 的内容。如果 puppies.com 域因某种原因被破坏,我们将无法访问该图像。

去中心化网络的工作方式不同。当我们想要一张可爱宠物的特定照片时,我们会通过它的内容地址(哈希)来请求它。我们问谁?全网!如果 Ada 在线,我们将看到她拥有我们正在寻找的内容,并且我们将知道这正是我们需要的文件,因为它具有匹配的哈希值。如果她离线,我们仍然可以从 Grace 或其他同行那里获得相同的照片。

由于我们使用哈希在去中心化网络上请求数据,因此我们可以将哈希视为链接,而不仅仅是名称。

Cryptographic hashing and Content Identifiers (CIDs)

到目前为止,我们一直在讨论可爱的图像,只是为了让我们感到高兴,但内容寻址可用于所有不同类型的文件和数据,从 JSON 对象到学期论文再到视频。为了使加密散列起作用,我们需要知道我们正在使用什么数据格式并使用适当的工具。

Decoding data structures

CID(内容标识符)是在去中心化网络上使用的一种特殊形式的内容寻址。它是为 IPFS(我们将在后面的教程中讨论的去中心化网络协议)开发的,但具有非常广泛的影响。

CID 是一个单一的标识符,它包含一个加密散列和一个编解码器,它保存有关如何解释该数据的信息。编解码器以特定格式对数据进行编码和解码。

+-------+------------------------------+
| Codec | Multihash                    |
+-------+------------------------------+

许多格式和协议已经使用内容寻址。 Git 之类的工具以及以太坊和比特币之类的协议都在其中,但它们在如何解释数据以及用于散列的加密函数方面有所不同。 CID 允许我们为这些系统中的任何一个创建通用标识符。

每个 CID 都是一个标识符,其中包含解释数据的编解码器和一个多散列,它是一个自描述散列(一个散列,告诉您使用哪种散列函数来创建它)。

+------------------------------+
| Codec                        |
+------------------------------+
|                              |
| Multihash                    |
| +----------+---------------+ |
| |Hash Type | Hash Value    | |
| +----------+---------------+ |
|                              |
+------------------------------+

有关如何在 IPFS 中构建 CID 的更多详细信息,请查看我们的 CID 剖析教程。

Linking data together

网络最重要的特性之一——无论是集中式还是分散式——是链接。在集中式网络上,我们每天都在链接从文本到图像、从徽标到主页以及从电子邮件到 PDF 的链接。链接将资源联系在一起,传达意义,并使网络具有极好的交互性!

在本教程中,我们探讨了如何将特定数据的加密哈希用作链接,从去中心化网络上的对等方检索该数据。但是,我们可以更进一步,使用 CID 来表达数据结构,传达有关各种数据之间关系的含义。

在我们的 Merkle DAG 教程中,您将了解内容寻址数据结构如何使我们能够构建交织数据网络。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值