D 的个人博客

全职做开源,自由职业者

  menu

IPFS 去中心化数据结构(二)

本文翻译自 IPFS 社区教程 ProtoSchool。ProtoSchool 是一个可以交互式学习 IPFS 编程的网站,涉及代码的部分大家可到该网站上直接运行测试!

本文接上篇 IPFS 去中心化数据结构(一)

LESSION 3 - 通过加密哈希进行内容寻址

正如我们之前说的,中心化的 Web 依赖于中央机构来托管我们的数据,并使用 URL 作为地址来进行访问。但位置寻址不是唯一的选择。在去中心化的 Web 上,我们可以托管彼此的数据,并且通过一种特殊的链接方式让我们彼此间访问数据更可信和安全。

加密哈希

加密哈希是去中心化数据结构中最重要的工具函数。它打开了新链接形式的大门,我们称之为内容寻址,这样我们才能在没有中央机构的去中心化环境中链接数据。

哈希可以用于任何大小的数据,并为该数据返回单个固定大小的“哈希值”。 哈希值是一个看起来像 gobbledygook 的字符串,你可以将其视为数据的名称。它可能是这样的:

zdpuAsHkamdCQgrDrNSwJVgjMkQWoLxdrccxV6qe9htipNein

说实话,由内容衍生的名字目前对人类来说并不友好(beagle.jpg 更具描述性!),但哈希值更加安全。 原因如下:

加密哈希值是数据本身产生的,这意味着在相同数据上使用相同哈希算法将得到相同的哈希值。如果 Ada 和 Grace 都使用相同的去中心化 Web 协议(例如 IPFS)来共享完全相同的小猫照片,则两个图片文件会具有完全相同的哈希值。通过比较这些哈希值,我们可以保证这两张照片中的每个像素都是相同的。

加密哈希值也是独一无二的。这意味着如果 Grace 使用 Photoshop 从该小猫中删除了一些胡须,则更新后的图片会具有新的哈希值,并且很容易分辨 - 仅从哈希值,不用访问文件本身 - 它包含不同的数据。

去中心化 Web 上的信任

在中心化的网络上,我们信任某些机构,不信任其他机构。我们利用 URL 提供的线索尽力而为,但有些有恶意的人会使用位置寻址的缺点来欺骗我们。

在去中心化的网络上,我们能够传播并托管彼此的数据,我们可能不太了解托管数据的其他节点,但内容寻址为我们提供了一种信任他们所共享的数据的方法。通过内容寻址,我们不会被恶意行为者欺骗导致访问错误的数据。这就是加密哈希对去中心化网络如此重要的原因。

向对等节点查找数据

通过传统的位置寻址,我们知道需要访问域名 puppies.com 来查找 beagle.jpg 保存的数据内容。如果 puppies.com 域由于某种原因被破坏,我们将无法访问该图片。

去中心化网络的工作方式则是完全不同的。当我们想要一张可爱宠物的照片时,我们会通过其内容地址(哈希值)来进行查找。我们向谁查找呢?答案是整个网络!如果 Ada 在线,我们会看到她有我们正在寻找的内容,我们可以验证数据是否为我们正在寻找的内容,只要它具有匹配的哈希值。如果她下线,我们仍然可以从 Grace 或其他节点获得相同的照片。

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


下一节:IPFS 去中心化数据结构(三)