LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > 你靠独特的指纹打卡可知IPFS也有同样的强大功能?

你靠独特的指纹打卡可知IPFS也有同样的强大功能?

2020-04-27 引擎矿机 来源:区块链网络

指纹人人皆有,却各不相同,故其称为“人体身份证”。

IPFS使用加密哈希来识别数据,加密哈希本质上是为数据创建唯一特征的数学公式,内容标识符CID就是这个专属的指纹,独一无二。

IPFS上的每个数据都可以通过其CID进行引用,该CID表示Content IDentifier。在浏览IPFS网上内容时,你可能已经发现了一些不同之处,它们看起来像这样:

Qmd286K6pohQcTKYqnS1YhWrCiS4gz7Xi34sdwMe9USZ7u

这样:

QmYf4sT9KbtW3ZCKoX8DdgJy9tDKVAUjbPTBi525RNR29V

还有这样:

bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi

它们是由什么组成的?如何理解?

重点来了,CID被称为多哈希、多编解码器和多数据库。在本篇文章中,我们将为您详细介绍。

CID多哈希Multihash

生成此类哈希的流行密码算法是SHA2-256。SHA2-256创建长度为256位的哈希。它非常实用,但是当计算设备变得更加强大,并且量子计算大量运用后,这种特定算法将会受到严重挑战。

由于某些哈希函数(例如MD5和SHA-1)最终变得无用,那么,IPFS既知道最终会有破坏该算法的情况,应该使用哪种算法呢?

解决方案是使用多重哈希。

多重哈希非常容易理解,它由所使用的哈希函数的标识符、哈希函数的长度以及哈希本身组成。

使用的哈希函数是由每个人都同意的一个表决定的,在这个表中,我们为所有可能的哈希函数分配一个数字。

因此,多哈希最终看起来像这样:<哈希函数标识符> <哈希的长度> <哈希>

在SHA2-256哈希的情况下,就是<SHA2-256> <长度的256位> <001010101010… >。

这是一个非常棒的运用!现在,我们的内容标识符可满足未来需求!如果我们要更改哈希函数,可以做到。

但是,如果我们想从CID中获得更多信息怎么办?数据代表什么?

请看下文……

CID是多编解码器Multicodec

我们希望向CID添加更多信息,以便我们对数据类型有更好的了解。它是JSON数据吗?CBOR?还是别的呢?

因此,我们要做的事情非常简单,只需在多哈希前面添加更多数据即可,多哈希将根据一个表描述编解码器,这与用于多哈希的哈希函数标识符的工作方式相同。

所以现在,我们的CID如下所示:

<codec identifier><multihash>

CID只是一连串的自描述字节,首先,描述数据类型的多编解码器,然后,如前所述,使用多哈希。

但是还有更多……

CID是多数据库Multibase

最初,IPFS CID在base58中进行了描述,base58是编码比特币地址相同的库。

但是,当然,我们可以使用所有类型的基数,例如基数32,因此,再次,我们需要在CID前面添加更多数据。现在,我们添加了多库,它仅告诉我们将对CID进行编码的库。

<multibase>base(<multicodex><multihash>)

好的,就这样加上前缀数据,大功告成?

不,我们还需要先了解一些有关CID的历史记录,然后才能了解要添加的最后信息。

V1和V0

IPFS最开始,并没有多库或多编解码器,所有CID仅是多哈希。

我们将这些CID称为版本0。随后,IPFS项目决定改进CID,并同时添加多编解码器和多库。因此,版本1(v0)取代了版本0(v0)。

那么我们如何区分CID的版本0和版本1?我们如何确定CID是否即将发布的预设版本2,甚至是版本3?

这就是为什么从版本1起决定将这个版本添加到所有CID的原因。现在,我们将其放在多库之后。

因此,现在的CID如下所示:

<multibase>base(<CID version><multicodec><multihash>)

BAFY vs Qm

为了帮助您综合这些信息,这是一个很棒的工具(网址如下),可让您分析CID及其每个组成部分:

https : //cid.ipfs.io/

您要做的是把版本0的CID写入该工具中:

Qmd286K6pohQcTKYqnS1YhWrCiS4gz7Xi34sdwMe9USZ7u

您可能会注意到,多编解码器和多库是隐藏的(implicit)。这是因为对于版本0的CID,它们不存在!因此,我们只是假设它们是什么。

在页面底部,您将看到一个以bafy...开头的哈希,这是版本1的等效CID。

区分版本0和版本1 CID的一个巧妙技巧是查看首字母。如果以Qm开头,则会是版本0 CID;如果以bafy开头,则会是版本1 CID。

最后,将此版本1 CID写入工具:

bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi

现在,该工具根据上述格式向我们展示了库和编解码器。

恭喜你学完了全文内容!了解IPFS CID的来龙去脉,并且可以描述每个组件,不妨动手体验一下吧!

注:本文内容仅供学习参考,不构成投资建议。

—-

编译者/作者:引擎矿机

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...