美文网首页
IPFS的content identifier(CID)

IPFS的content identifier(CID)

作者: 周宇盛 | 来源:发表于2018-12-20 11:07 被阅读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>

    • multi-base:编码格式
    • CID version
    • multi-codec:文件类型
    • multi-hash:hash值

    举个例子,将下面的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-base的作用是缩小hash的长度,支持base64, base32, base58btc等等。完整的支持列表
    • multi-codec标志数据的类型,支持raw, png, mp4, zip, eth-tx, bitcoin-tx, git-raw, md5, sha2-512等等。可以看到它不仅支持图片、视频,还支持以太坊、比特币的交易和区块。完整的支持列表
    • multi-hash支持多种hash方法,md5, sha2-512, sha3-512等等

    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
    • 紫色的部分表示hash算法,不同算法有对应的标志。
    • 绿色部分表示hash值长度,这里都是256位,也就是32 bytes,使用16进制表示为20
    • 白色部分表示使用对应的hash算法求得的hash值。

    参考

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

    相关文章

      网友评论

          本文标题:IPFS的content identifier(CID)

          本文链接:https://www.haomeiwen.com/subject/ocaekqtx.html