IPFS CID Version 1的最大长度限制是多少?
首先纠正一个前提误解
你提到的CIDv0最大32字节的限制,实际是CIDv0默认强制使用的SHA2-256哈希算法的原始哈希值长度。完整的CIDv0二进制结构还包含2字节的multihash固定前缀,总长度为34字节,Base58编码后的字符串长度固定为46字符。
CID Version 1的长度规则
CIDv1没有和CIDv0一致的固定长度限制,它是完全自描述的可变长度结构,二进制格式由三部分组成:
- 版本标识:varint编码的版本号,v1固定为
0x01,占1字节 - 内容编解码器标识:varint编码的数值,用于标识内容的格式(比如raw、dag-pb、dag-cbor等),常用编解码器的标识长度为1~2字节
- Multihash结构:自描述的哈希值,由「哈希算法标识(varint)+ 哈希长度(varint)+ 原始哈希值」三部分组成,长度完全由选用的哈希算法决定
如果你和CIDv0一样选用SHA2-256作为哈希算法,对应的CIDv1二进制总长度为36字节,仅比同哈希的CIDv0多2字节的版本和编解码器标识。如果选用更长的哈希算法(比如SHA3-512、BLAKE3-512等),二进制总长度可以达到70字节以上,理论上只要符合multihash规范,CIDv1支持任意长度的哈希值,没有固定的最大长度上限。
另外字符串形式的CIDv1长度还会受multibase编码方式影响:比如用base32编码的SHA2-256 CIDv1字符串长度为59字符,用base64编码长度会更短。
内容的提问来源于stack exchange,提问作者Philip Rutovitz
相关产品推荐
相关产品推荐

