当前位置:首页 > 知识 >

盘古开源浅析:IPLD是什么

  • 盘古
  • 2023-07-12 07:12:12
  • 13
什么是IPLD?

大多数人已经知道IPFS是什么以及它为普通开发人员在分布式数据方面提供了什么。然而,除了这个革命性的系统IPFS,还有另一个重要的系统被称为IPLD。

IPLD是IPFS的数据层。它处理了IPFS将数据存储在链上并创建哈希链接(我们称之为内容ID或CID)所需的所有繁重工作。了解IPLD将使您对IPFS的工作原理有更深入的了解,并了解通过IPFS扩展当前可用的数据结构所需的方法。

IPLD和IPFS

在最基本的形式下,IPLD是IPFS的数据层。它创建了一系列数据链接,并允许用户通过可以存储在IPFS上的简单数据结构自行创建这些链接。IPFS可以看作是IPLD的块存储,通过IPLD将数据发送到IPFS后,在链上保存,并为用户提供一个CID来访问该数据。

当用户在IPFS上存储一个文件时,该文件会被分成几个块,并存储在不同的块中。为了重建整个文件,一个图表将每个块连接在一起,目录指向单个数据片段。这与旧编程语言如C++中的指针所做的事情类似。

内容ID是生成的哈希,允许用户与IPFS进行交互并检索数据。IPLD负责解码这些哈希,使用户能够访问它们的数据。在许多方面,IPLD的功能类似于开发人员耳熟能详的Git,因为它使用类似的方法构建了被称为MerkleDAG的链接哈希。

Git和MerkleDAG

通常,当创建一个哈希时,它仅指向数据移动的一个方向。例如,人们无法从哈希不存在的位置进行回溯。Git使用MerkleDAG创建特定时间点的"快照",允许用户在需要时回滚数据。MerkleDAG是Git的重要组成部分,同时也是像IPLD这样的链接系统中的重要工具。

Git是一个完全独立的系统,其生成的哈希只能在该系统中解码。而IPLD更加雄心勃勃,它旨在解码它遇到的所有哈希。然而,为了使其成为一个可行的系统,就需要一种方法来告诉IPLD如何解释该哈希以获取底层数据。这就是多哈希和多编解码器的作用。对于系统来说,找出每个哈希表示什么的最佳方法是什么?当然,让哈希函数告诉系统它需要解码什么。

一个复杂的数据表示系统

大多数开发人员熟悉简单的数据表示系统,如JSON或CBOR。这些系统可以用来表示和检索多种数据结构。然而,这些简单的数据表示系统不支持链接。显然,IPLD无法使用这些简单的系统,因为链接是IPLD系统的核心。

那么,IPLD如何解决这个缺乏复杂性的问题呢?实际上,用户可以使用这些简单系统的扩展版本来存储数据。JSON-DAG允许存储常见的JSON序列化数据,同时也支持与IPLD一起使用的链接。JSON-CBOR则允许更大的灵活性。CBOR是一种二进制存储系统,因此速度更快、效率更高。Filecoin将CBOR-DAG用作其链,因为它的效率以及CBOR可以处理比JSON更多的数据类型。

使用IPLD进行编码和解码

将数据存储在链上似乎很容易,但是系统如何解码进入组件数据结构的哈希呢?IPLD使用底层数据模型,其中包含大多数开发人员熟悉的形式,如字符串、布尔值、整数、浮点数等。

IPLD的系统使用两层方法对这些数据结构进行编码。主要的Protobuf格式(DAG-PB)用于表示命名链接和二进制blob。辅助的Protobuf格式(称为UnixFS)提供有关文件的元数据。CID可以包含与不同系统相关的多个哈希和多个编解码器。这种多哈希、多编解码器的构建对于IPLD来说是必要的,因为IPLD认为自己是一个多格式系统。

将技术扩展到新领域

IPLD只是数据结构的最新迭代。数据结构已经存在并且已经被使用了很长时间。观察一些系统如Haskell和Scala,它们处理数据结构的方式与IPLD处理方式之间的相似之处显而易见。IPLD采用了这些创新性技术,并将其转化为分布式格式。

区别在于,IPLD允许分布式存储,其基础链接是IPFS。这些数据结构管理范式已经持续存在并不断发展成为可扩展的,这是IPLD提供的核心价值。

通过IPLD备份IPFS,开发人员可以访问一个强大的分布式数据存储系统,该系统可以处理多种自描述格式。灵活性和可扩展性形成了强大的组合,为开发人员提供了一种推动嵌入式Web3.0系统开发的工具。

猜你喜欢

微信二维码

微信