第14章 【IPFS一问一答】IPFS文件碎片是什么?存储文件后,返回的哈希值是怎么产生的?

14 IPFS文件碎片是什么?存储文件后,返回的哈希值是怎么产生的?

IPFS网络中的数据是以打散的块存储的,这些块也叫文件碎片。ipfs在用ipfs add命令存储数据时,默认是将数据按大小256Kb分割的,当然你也可以根据自己的意愿分割数据,如ipfs add -r --chunker=size-10000或ipfs add -r --chunker=rabin-512-1024-2048对数据进行指定大小分割存储。接下来我们只是以默认的数据分割进行分析。

ipfs add某个数据时,本地会将数据按大小256kb分割,小于或分割到小于256kb的数据,将不再分割。这些分割后的块以二进制的形式按序存储。因为ipfs是内容可寻址的,所以需要块文件有自己唯一的指纹,也就是其hash值。

块文件的hash过程: 1.将块文件(二进制文件)用sha2-256,进行hash散列,得到块文件的摘要值Digest。 2.将块文件的摘要值进行base58处理,得到该块文件的hash值CID。

这些块文件组合成一起,进行sha2-256散列,再base58处理,最后得到整体文件的索引。当你在add数据后,会返回给你一个以Qm开头的hash值,该值就是文件的索引值。检索数据时只要ipfs get Qm...,就会将对应的文件下载到当前目录下。

下图展示了数据分割处理过程