D 的个人博客

开源程序员,自由职业者

小而美的 Java 博客系统 Solo
Golang 在线 IDE Wide
黑客与画家的社区 Sym
  menu
401 文章
1,855 评论
3379363 浏览
11 当前访客
ღゝ◡╹)ノ❤️

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

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

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

LESSION 4 - 内容标识符(CID)

之前我们通过可爱的照片举例让讨论不那么无趣,但实际上内容寻址可用于所有不同类型的文件和数据,JSON 对象、学术论文还有视频。要使加密哈希工作,我们需要知道我们正在使用的是哪种数据格式并使用适当的工具。

数据结构解码

CID 是内容寻址的特定方式。它是 IPFS 的规范之一,IPFS 是一种去中心化的 Web 协议,我们将在后面的教程中讨论,它具有非常广泛的含义。

CID 是包含加密哈希的单个标识符,并包含了编码解码器("codec")相关所需的信息。编解码器以某些格式编码和解码数据。

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

许多格式和协议都是使用内容寻址的。 CID 让我们可以为任何系统机制创建通用标识符。 像 Git 、以太坊和比特币都使用内容寻址,只是它们在解析数据加密哈希函数上有所不同。

CID 是一种标识符,包含用于解释数据的编解码器和多重哈希值(multihash),它是一种自描述哈希值(值中标识了使用什么类型的哈希函数来创建该值)。

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

链接不同的数据结构

CID 允许我们对完全不同的数据结构进行链接。 想象一下,一个 JSON 对象树链接到 BSON 对象,这些对象又链接到 Git 提交。(或者想象一个包含小狗照片和小猫视频的文件夹,其子文件夹包含长颈鹿的文章。存在各种各样无穷的可能性!)在这棵文件树下,我们有一个加密哈希值,我们用它来分发或链接到其他数据。

为什么在不同的数据结构之间建立链接很重要?在中心化的网络上,我们将文本链接到图片,从徽标链接到主页,从电子邮件链接到 PDF。链接将资源联系在一起,传达意义,形成网络互动!


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

评论
  • 差不多可以这里理解吧。用文中提到的 Git 来理解更简单一些,每次提交都会按相关提交数据生成一个唯一哈希值。

    Reply
  • 读完这个我有点疑惑,这样的关联关系类似于是 nosql 数据库生成了了关系型数据库的主键吗?内容是 nosql 部分,根据内容计算出来的主键?是这样的吗?

    Reply