本文重点分析链桨开源xdb的engine模块代码。
engine是xdb的核心引擎,包含了文件请求处理、节点请求处理等多种功能模块。
challenger模块
challenger模块提供文件副本保持证明的相关功能,包括参数初始化、挑战生成算法、挑战应答算法、挑战内容存储和获取等功能。
开源xdb支持两种副本保持证明算法:基于梅克尔树的和基于椭圆曲线双线性对的。
copier模块
copier是数据冗余模块,为文件切片提供多副本选择。
开源xdb支持优先从健康存储节点中选择指定数量的节点来存储文件切片。
encryptor模块
encryptor模块为文件提供对称加解密功能,用于保护用户数据隐私。
开源xdb提供了基于AES秘钥衍生和对称加解密功能。
monitor模块
monitor是xdb的监控任务模块,定时处理副本保持证明挑战、文件和节点相关功能。
1、challenging: 包含数据节点定期发起副本保持证明挑战、存储节点定期应答副本保持证明挑战的功能;
2、filemaintainer: 包含数据节点定期检测文件健康度,并进行文件迁移等功能;
3、nodemaintainer: 包含存储节点启动时自动注册、存储节点定时向区块链更新存活状态、存储节点定期清理过期文件等功能。
slicer模块
slicer模块提供文件切片功能,将文件切分为若干切片,便于分布式存储和备份。
开源xdb支持按照指定切片大小,将文件切分为若干切片。
handler_file
文件请求处理模块,包括文件列表获取、文件详情获取、更新过期时间、更新副本数等功能。
handler_node
存储节点请求处理模块,包括节点列表获取、节点详情获取、节点上下线等功能。
handler_read
文件下载功能模块,文件下载流程包括请求者身份校验、文件详情获取、文件分片下载、文件分片解密、文件分片重组、重组后解密并恢复原始文件等功能。
handler_write
文件上传功能模块,文件上传流程包括请求者身份校验、文件加密、文件分片、分片冗余存储、副本保持证明信息生成、文件链上存证等功能。