Filecoin Car文件,Piece文件的原理笔记

CAR格式包括一系列以长度为前缀的IPLD块数据,其中CAR中的第一个块是编码为CBOR的header,其余块形成CAR的数据组件,并且每个块均附加有其CID前缀。CAR中每个块的长度前缀被编码为"varint"(无符号LEB128整数)。该整数指定该块条目的剩余字节数:

CAR 格式包括一系列以长度为前缀的 IPLD 块数据,其中CAR中的第一个块是编码为 CBOR 的 header,其余块形成CAR的数据组件,并且每个块均附加有其 CID 前缀。CAR 中每个块的长度前缀被编码为 "varint"(无符号 LEB128 整数)。该整数指定该块条目的剩余字节数: 不包括用于编码该整数的字节,但包括非 header 块的 CID。

|--------- Header --------| |---------------------------------- Data -----------------------------------|

[ varint | DAG-CBOR block ] [ varint | CID | block ] [ varint | CID | block ] [ varint | CID | block ] …

从上面的结构我们可以知道,把一个文件转成car文件时,其实就是把文件分成很多block,然后计算每个block的cid(hash)和长度,然后得到root cid,最后按照如上结构进行组合。

Filecoin检索是利用graphsync进行检索的时候,如果没有索引的话会非常慢,这个索引其实就是每个block的cid为key,而value则是对应car文件的block的offset。

感觉graphsync只适合多个p2p节点之间,进行数据传输,刚好每个peer都可以传输其中一个或者多个block,而不适用检索。

点赞 0
收藏 0
分享

0 条评论

请先 登录 后评论
杜满想Elvin
杜满想Elvin
老程序员,区块链架构师