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 教程中,您将了解内容寻址数据结构如何使我们能够构建交织数据网络。

去中心网络上的内容寻址相关推荐

  1. 去中心网络服务器,去IOE 去中心化_浪潮服务器_网络安全-中关村在线

    但与瞬间成为"世界英雄"截然相反的是:在斯诺登过去的29年中,他给似乎是个"隐形人":教师.同学.邻居等他周围的人都表示:不记得他:或者称,他话很少,有意与人们 ...

  2. 区块链 分布式账本和 去中心化网络

    去中心化网络 我们的资产(比特币),是分布式的存储在网络节点种的,也成为分布式账本 承载分布式账本的网络就叫去中心化网络 分布式账本 中心化在线支付系统,是在一台服务器上分别开设 account/pw ...

  3. 零信任与区块链:身份的中心化和去中心化

    文章摘要: 互联网行业,身份存在的目的是告诉特定服务提供方(比如支付宝)"我是谁".这个意义上讲,任何可以告诉别人我是谁的标记性信息都可以叫做身份.传统互联网行业最常用的身份措施就 ...

  4. 去中心身份与可信身份,零信任架构

    可信身份可以是中心化的,也可以是去中心化的,所以这里专门把可信.去中心二者并列. 中心化情况下,中心提供者无法自证清白,某些不诚实的中心提供者还会冒用用户身份作恶. 而且中心化逻辑下,中心保存了大量用 ...

  5. 用区块链改变人工智能:去中心化带来数据新范式

    近年,从围棋到人类水平的语音识别,人工智能(AI)研究者终于在他们几十年一直努力探索的领域取得了突破.取得突破进展的关键一点是研究者们可以收集巨量的数据并「学习」这些数据,从而将错误率降低到可接受范围 ...

  6. V神:你所理解的“去中心化”不一定准确

    2019独角兽企业重金招聘Python工程师标准>>> "去中心化"被视为区块链存在的核心意义,但它也许是定义最不明确的一个词. 我们花费了数千小时的时间,耗费了 ...

  7. 区块链游戏中的网络效应:内容仍为王

    导读:两个月前,我们写过一篇<内容为王>,其中用VR行业和主机游戏行业为例阐述了如今区块链应用落地过程中的困境--没有内容.没有消费者.上周六我们在Hackernoon上读到了一篇观点类似 ...

  8. 【转】 Vitalik:去中心化的意涵

    "去中心化"或许是区块链被提到过的最高频的一个词了,但这个词的定义也是最不清楚的. 想想这件事其实挺不可思议的.区块链消耗了计算机大量宝贵的哈希算力,正是为了保证网络的去中心化,但 ...

  9. 区块链应用(去中心化应用)是什么样的?

    EOS 的技术白皮书给出了应用所需的六个条件(如下所示),而 EOS 的软件设计的确是对应这些条件而设计的.本节我们将重点讨论 EOS 的其中三个为应用而做的特别设计:用户免费.账户体系.存储. 区块 ...

最新文章

  1. python logging模块使用总结
  2. SpringSecurity实现拦截未登录页面
  3. 浅析C语言中strtol()函数与strtoul()函数的用法
  4. 心理压力如何测试软件,心理压力测试 缓解压力有什么办法
  5. osip和mysql_osip2和eXosip2协议
  6. centos7改语言包
  7. 在linux中at 调度出错,linux系统中的调度延迟任务:at 命令
  8. 信用评分卡 (part 3of 7)
  9. qu32调音台说明书_Qu-32 数字调音台
  10. 新版个人信息安全规范正式发布:收集生物识别信息前需告知
  11. 201671030112—词频统计软件项目报告
  12. 2021-08-26小白笔记2
  13. 时艳强对话王团长:EOS如果失去社群共识,也就没什么价值了
  14. Python 判断三位水仙花数
  15. t检验只能用于样本量少于30个的数据?要做z检验吗?(转)
  16. java输出hello world_java输出Hello World
  17. c++面向对象的学生管理系统
  18. C++中双引号和单引号分别表示什么意思?
  19. Ardublockly学习— —安装篇(一)
  20. 互联网摸鱼日报(2022-09-21)

热门文章

  1. 大数据分析实验二:金融中的时间序列数据处理
  2. 陈春花老师说「管理是管事不是管人」,而我想说这句漂亮话是经不起推敲的
  3. 庆哥原创 || 这次我们好好交个心!
  4. 2.04 商品服务-2-品牌管理
  5. ADC工作原理及应用
  6. 在secureCRT下常用的一些shell 命令
  7. 公司利润爆棚,为啥还要减少我的年终奖?
  8. 【IDEA】SpringBoot --could not autowire
  9. qt和C++调用windowsApi实现鼠标宏操作
  10. 通霸云v10 运营级影视源码