multicodec是一种自描述的编解码,它包含一些自我描述的其他格式。多代码标识符是varint。它其实是个table,用1到2个字节定了数据内容的格式,比如用字母z表示base58 btc编码,0x50 表示 protobuf等等。
上边提到的table在这里可以看到https://github.com/multiformats/multicodec/blob/master/table.csv
multiodec识别的一大块数据如下所示:
< multicodec> <encoded-data >
#我们可以简写成:
< mc> <data >
另一个有用的场景是使用multicodec作为访问数据的密钥的一部分,例如:
# suppose we have a value and a key to retrieve it
"<key>" -> <value>
# we can use multicodec with the key to know what codec the value is in
"<mc><key>" -> <value>
值得注意的是,multiodec与multihash和multiaddr配合使用效果非常好,我们可以使用多重代码为这些值添加前缀,以告诉它们是什么。