1 个不稳定版本

0.1.0 2024 年 7 月 13 日

#5#l1

每月 22 次下载
用于 2 个包 (通过 zksync_node_framework)

MIT/Apache

1.5MB
31K SLoC

zksync_node_db_pruner

数据库修剪器是一个组件,它定期从数据库中删除最旧的 L1 批次以及相应的 L2 块、事件等。

有两种类型的对象没有被完全清理

  • 交易 只有 BYTEA 字段被清理,因为某些组件依赖于交易的存在。
  • 存储日志: 只有被覆盖的存储日志被删除

修剪工作流程

(有关修剪的高级概述,请参阅 节点文档)

L1 批次的修剪有两个阶段:软修剪和硬修剪。每个将要被删除记录的批次首先进行 软修剪。软修剪的批次不能安全使用。软修剪后一分钟(这是可配置的),进行 硬修剪,硬修剪意味着从数据库中物理删除数据。

这种分割背后的原因是让节点组件(如 API 服务器)了解计划中的数据修剪,并提前限制对修剪数据的访问。这确保了数据不会意外地从 Postgres 中消失(从组件的角度看),在操作过程中(如处理 Web3 请求)突然消失。至少在某些情况下,比如与 VM 相关的 Web3 方法中,我们无法依赖数据库事务来达到这个目的。

依赖关系

~84MB
~1.5M SLoC