除IPFS与Filecoin,协议实验室如何改进整个互联网——Multiformats篇

2022-04-18 12:06 来源:星际云存 阅读:1068
Multiformats直译为“多格式”,它并不是一个软件,而是一组自描述(指源代码和用户界面符合一般的命名习惯和结构化编程习惯,这样普通用户能够在无需专业知识的情况下就能理解并读懂源代码和使用系统和

Multiformats直译为“多格式”,它并不是一个软件,而是一组自描述(指源代码和用户界面符合一般的命名习惯和结构化编程习惯,这样普通用户能够在无需专业知识的情况下就能理解并读懂源代码和使用系统和软件)的协议值,这些值对数据层 (IPLD) 和网络层 (libp2p) 都很有用。它是一个旨在立足于今天,以实现面向未来的系统。


简单来说,Multiformats是一组协议的集合,目的是打造一个现在到未来都可用的系统,目前,它主要通过增强自我描述的格式值来实现,它允许协议相互操作,可以保持协议灵活度、并可扩展、可升级,帮助我们避免被锁定在一个值上。


这些协议在自描述方面有一些具体的规定:


  • 它们必须在带内(带有值);不是带外(在上下文中)。

  • 它们必须避免被锁定并能促进可扩展性。

  • 它们必须是紧凑的,并且具有二进制打包的表示。

  • 它们必须具有人类可读的表示。


起初,Multiformats是专为IPFS打造的,但现在已经被广泛应用在IPLD、libp2p、IPFS和Filecoin项目上


想了解Multiformats,就要从了解这些作为它子集的多种协议开始,目前共有以下几种,每个项目都有其各种语言的实现列表。


  • multihash - 自描述哈希

  • multiaddr(正在开发中) - 自描述网络地址

  • multibase(正在开发中) - 自描述基编码

  • multicodec - 自描述序列化

  • multistream(已弃用) - 自描述流网络协议

  • multigram(正在开发中) - 自描述分组网络协议


下面,让我们具体了解下这些协议都是做什么的,他们对Filecoin网络又起到哪些帮助。

Multihash


Multihash 是一种协议,用于区分各种加密哈希函数的输出,同时解决寻址和编码问题。在编写应用程序来保证系统对哈希的使用、允许多个哈希函数共存等方面,它是很有用且重要的——尤其是对于那些依赖加密哈希函数(Cryptographic hash function)的系统中。


它由3个部分组成,分别是:哈希函数编码、哈希值的长度和哈希内容。这样的设计和构成专为升级设计,如果有一天,现阶段使用的哈希函数不再安全,或有了更安全的哈希函数,可以通过Multihash快速升级系统



Multiaddr


Multiaddr是一种用于对来自各种成熟网络协议的地址进行编码的格式。通过编写应用程序来保证它们对地址的使用,并允许多种传输协议和地址共存。


今天的互联网中,许多网络寻址方案不是自描述的,它们带有解释和上下文,意味着它们做出的假设会导致应用程序也作出这种假设,导致出现大量特定代码,未来无法更新协议,因为寻址会阻止新协议的更改。


Multiaddr可以构建与未来网络协议一起使用的应用程序,不会使系统和堆栈僵化。



multibase


multibase是一种用于消除文本中出现的基编码(例如,base32、base36、base64、base58 等)二进制编码的歧义的协议。


当文本被编码为字节时,我们通常可以使用一刀切的编码 (UTF-8),因为我们总是编码为相同的256字节集(+/- NUL 字节)。当这不起作用时,我们通常可以从上下文中推断编码。


但是当字节被编码为文本(使用基编码)时,基编码的基本选择通常受到上下文的限制。这些限制还可能会根据数据在文本中出现的位置而改变。这导致在不同用例下都会产生一个基编码。而基编码又无法标准化,因为没有能适用于所有情况的编码。


Multibase的用处就是告诉开发者该在什么情况下给使用什么基编码。它回答了类似“给定数据 d 编码为 text s,它是用什么基编码的?”这样的问题。


Filecoin使用IPLD的内容标识符 (CID) 引用数据,当CID被打印为字符串时,它们使用multibase来标识正在使用的基编码



Multicodec


Multicodec是一个编解码器表(table),它被设计用于二进制表示,即用1-2个字节确定数据内容的格式,比如用字母z表示base58btc编码, 0x50表示protobuf等。


在Multihash 中,它用于识别哈希,在机器可读的Multiaddr中,用于识别 IP 地址、域名、身份等组件


现在,你对Multiformats应该有了个系统的了解,其中正在使用的协议都具有稳定的规范和稳定的实现,而协议实验室也在努力研究更多Multiformats的子集并希望早日投入使用。


Multiformats能提供的协议互操作性和对未来的考量,一定能对今天的Web3形成现实意义上的影响。

ipfs.jpeg


声明:此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网站所提供的信息,只供参考之用。

点击阅读全文