## MoonChunk 项目申报书

**基本信息**

- 项目名称：MoonChunk：基于内容定义分块的增量同步工具
- 参赛者：谢高子涵
- 联系方式：308610283@qq.com
- GitHub 仓库链接：https://github.com/xgzh1111/1234
- 项目方向：MoonBit 数据基础设施 / 增量同步与存储优化
- 是否为移植项目：否

**项目简介**

MoonChunk 是一个使用 MoonBit 原生开发的内容定义分块与增量同步工具，面向大文件备份、对象存储去重、构建缓存、边缘节点同步和版本文件分发等场景。项目根据文件内容自动确定稳定的分块边界，为数据块生成内容标识，并使用 Merkle 清单验证完整性。文件发生局部变化后，只需传输新增或改变的数据块，无需重新处理整个文件，从而降低重复存储空间和网络传输成本。项目以 MoonBit 库和命令行示例为主要交付形式，方便其他存储、备份及同步应用集成。

**核心功能范围**

- 提供可配置的内容定义分块能力，支持设置最小、平均和最大数据块尺寸；
- 支持批量分块与流式分块，保证数据以不同批次输入时仍可得到一致结果；
- 提供确定性的内容摘要和内容寻址能力，用于数据块去重与损坏检测；
- 生成规范化文件清单、Merkle 根和包含性证明，并支持证明验证；
- 对比新旧文件清单，生成数据块复用、上传和删除计划；
- 提供内存数据块仓库、分块写入、文件恢复及存储状态查询能力；
- 提供缺失块、损坏块、尺寸异常和根摘要错误等完整性检查报告；
- 提供同步统计、去重收益分析、存储占用分析和基准测试模块；
- 提供可运行的命令行示例，展示分块、建库、校验和增量同步流程；
- 提供 MoonBit 自动化测试与 GitHub Actions 持续集成配置。

**移植或参考说明**

- 项目性质：原创项目
- 是否移植其他项目：否
- 参考开源项目：无
- 外部项目代码来源：无
- 本项目许可证：Apache License 2.0

本项目的原创设计和实现包括：

- 使用 MoonBit 原生包结构、类型系统和测试方式实现分块、清单、同步与校验模块；
- 自行设计面向内容块的公开数据模型、清单编码格式和同步计划接口；
- 将批量输入与流式输入统一到可重复验证的分块行为，并提供相应回归测试；
- 将 Merkle 证明、数据恢复、存储盘点和同步收益分析整合为一套可复用工具链；
- 仅采用内容定义分块、内容寻址和 Merkle Tree 等公开通用技术思想，未复制其他开源项目实现代码。
