IPFS的content identifier(CID)

2018-12-20  本文已影响11人  周宇盛

A content identifier, or CID, is a label used to point to material in IPFS. It doesn’t indicate where the content is stored, but it forms a kind of address based on the content itself.

IPFS协议使用CID作为文件的唯一标志,它基于文件本身创建,和HTTP不同的是,它不标志文件存储的位置。
一个IPFS节点可以向它的peer询问是否存有某特定hash值的文件,如果某个peer有这个文件,就返回文件。

由4个部分组成

CID当前最新的版本是v1,结构是:
<multibase-prefix><cid-version><multicodec-content-type><multihash-content-address>

举个例子,将下面的CID转换成可读形式,它表示使用base58btc编码,cidv1版本的CID,文件类型raw,hash算法sha2-256,hash值长度256 bits, hash值6e6ff7950a36187a801613426e858dce686cd7d7e3c0fc42ee0330072d245c95

# example CID
zb2rhe5P4gXftAwvA4eXQ5HJwsER2owDyS9sKaQRRVQPn93bA
# corresponding human readable CID
base58btc - cidv1 - raw - sha2-256-256-6e6ff7950a36187a801613426e858dce686cd7d7e3c0fc42ee0330072d245c95

支持多版本

这里的multi指的是它支持多个版本

multi-hash

multi-hash又分成3部分:hash算法、hash值bytes长度、hash值。不仅包含了hash值,还包含了所使用的hash算法,实现self describing,并兼容多种hash算法。
<varint hash function code><varint digest size in bytes><hash function output>
下面是使用4中不同hash算法对同一个文件获得multi-hash,使用的是16进制。

multi-hash

参考

https://docs.ipfs.io/guides/concepts/cid/
https://github.com/multiformats/multihash

上一篇下一篇

猜你喜欢

热点阅读