什么是 Blockmap 格式?
Blockmap(块映射)是一种用于描述大型文件或数据流中各个数据块位置、大小、校验信息等元数据的结构化格式。它常用于增量更新、差分下载、内容寻址存储(如 IPFS)、软件分发等场景。
典型应用场景
- 增量更新:仅下载发生变化的数据块,节省带宽。
- P2P 分发:通过哈希标识每个块,实现去中心化验证与传输。
- 断点续传:记录已下载块的状态,支持从中断处恢复。
- 内容完整性校验:每个块附带校验值(如 SHA-256),确保数据未被篡改。
基本结构示例
以下是一个简化的 JSON 格式的 Blockmap 示例:
{
"version": "1.0",
"fileSize": 10485760,
"blockSize": 65536,
"blocks": [
{
"offset": 0,
"size": 65536,
"hash": "a1b2c3d4..."
},
{
"offset": 65536,
"size": 65536,
"hash": "e5f6g7h8..."
}
// ... 更多块
]
}
关键字段说明
version:Blockmap 格式版本号,用于兼容性管理。fileSize:原始文件总大小(字节)。blockSize:建议的块大小(通常为 2^n,如 64KB)。blocks:数据块数组,每个块包含偏移量、实际大小和哈希值。hash:通常使用 SHA-256 或 BLAKE3 等强哈希算法生成。
注意事项
虽然“Blockmap”在不同系统中可能有细微差异(如 Electron 的 .blockmap 文件用于自动更新),但其核心思想一致:通过分块+哈希实现高效、安全的数据处理。使用时应参考具体平台的78TP文档。