项目结构 - OpenZeppelin 文档

本文档描述了 OpenZeppelin Monitor 代码库的项目结构和组织方式,包括源代码布局、配置文件和开发资源。内容涵盖了项目布局、源代码组织、配置和数据、示例和资源、指标和监控、测试和文档、开发工具以及 Docker 支持等多个方面,为开发者提供了全面的项目概览。

项目结构

本文档描述了 OpenZeppelin Monitor 代码库的项目结构和组织,包括源代码布局、配置文件和开发资源。

项目布局

该项目遵循标准的 Rust 项目布局,并为配置、文档和操作资源添加了额外的目录:

openzeppelin-monitor/
├── src/                # 源代码
│   ├── bootstrap/      # 应用程序的引导函数
│   ├── models/         # 数据结构和类型
│   ├── repositories/   # 配置存储
│   ├── services/       # 核心业务逻辑
│   ├── utils/          # 辅助函数
│
├── config/             # 配置文件
├── tests/              # 集成测试和基于属性的测试
├── data/               # 运行时数据存储
├── docs/                # 文档
├── scripts/             # 实用工具脚本
├── cmd/                # 指标和监控
├── examples/            # 示例配置文件
└── ... 其他根文件 (Cargo.toml, README.md, 等)

源代码组织

src/ 目录

主源代码目录包含核心实现文件,这些文件被组织成几个模块:

bootstrap/

main.rs 的应用程序初始化和设置:

  • 处理服务初始化和依赖注入

  • 管理启动顺序和服务生命周期

models/

核心数据结构和类型:

  • blockchain/: 平台特定的实现

  • evm/: 以太坊虚拟机特定类型

  • stellar/: Stellar 区块链特定类型

  • config/: 配置加载和验证

  • core/: 核心领域模型

  • security/: 安全和密钥管理

repositories/

配置存储:

  • 处理加载和验证配置文件

  • 为 monitors、networks 和 triggers 提供存储接口

  • 实现配置引用的验证

services/

核心业务逻辑:

  • blockchain/: 区块链客户端接口

  • transports/: 传输客户端

  • evm/: 以太坊虚拟机传输客户端

  • stellar/: Stellar 传输客户端

  • clients/: 客户端实现

  • evm/: 以太坊虚拟机客户端

  • stellar/: Stellar 客户端

  • blockwatcher/: 区块监控和处理

  • filter/: 事务和事件过滤

  • filters/: 过滤器实现

  • evm/: 以太坊虚拟机过滤器

  • stellar/: Stellar 过滤器

  • notification/: 警报处理

  • trigger/: Trigger 评估和执行

  • script/: 脚本执行实用程序

utils/

辅助函数:

  • cron_utils: Cron 调度实用程序

  • expression: 表达式评估

  • logging/: 日志实用程序

  • macros/: 公共功能的宏

  • metrics/: 指标实用程序

  • monitor/: Monitor 配置测试实用程序

  • tests/: 包含测试实用程序和辅助函数

  • builders/: 测试构建器模式,实现用于创建测试装置的 fluent 接口

  • evm/: 特定于以太坊虚拟机 (EVM) 测试的构建器实现

  • stellar/: 特定于 Stellar 区块链测试的构建器实现

配置和数据

config/ 目录

包含 JSON 配置文件,用于:

  • 网络配置 ( networks/)

  • 区块链网络的连接详细信息

  • RPC 端点和网络参数

  • Monitor 配置 ( monitors/)

  • 监控规则和条件

  • 网络和 trigger 引用

  • Trigger 配置 ( triggers/)

  • 通知设置

  • 脚本定义

  • Filter 配置 ( filters/)

  • 匹配过滤器脚本

examples/config/ 目录包含每个(网络、monitor、trigger 和过滤器)的示例 JSON 配置文件。

data/ 目录

运行时数据存储:

  • 区块处理状态

  • 操作数据

  • 临时文件

data/logs/config/ 目录会被 gitignore,除了示例文件。 这些目录被挂载以持久化配置和运行时数据。

示例和资源

examples/ 目录

提供实用的示例和示例配置,以帮助用户入门:

  • 演示了各种网络的典型服务配置

  • 作为自定义 monitor 的快速入门指南

  • 作为配置最佳实践的参考

指标和监控

cmd/prometheus/ 目录

Prometheus exporter 和监控基础设施:

  • dashboards/: Grafana 仪表板

  • datasources/: Prometheus 数据源

  • prometheus.yml: Prometheus 配置

  • grafana.ini: Grafana 配置

测试和文档

tests/ 目录

包含全面的测试套件:

  • 集成测试

  • 基于属性的测试

  • Mock 实现

  • 测试实用程序和助手

docs/ 目录

项目文档:

  • 用户指南

  • API 文档

  • 配置示例

  • 架构图

scripts/ 目录

实用工具脚本,用于:

  • 开发工作流程

  • 文档生成

  • 构建过程

  • 部署助手

开发工具

Pre-commit Hooks

位于项目根目录中:

  • 代码格式检查

  • Linting 规则

  • 提交消息验证

Build 配置

核心构建文件:

  • Cargo.toml: 项目依赖项和元数据

  • rustfmt.toml: 代码格式规则

  • rust-toolchain.toml: Rust 版本和组件

Docker 支持

该项目包括用于不同环境的 Docker 配置:

  • Dockerfile.development: 开发容器设置

  • Dockerfile.production: 可用于生产的容器

  • 在运行 docker compose 之前,请根据你的需要在 .env 中设置你的 env 变量

有关在容器中运行 monitor 的详细信息,请参阅用户文档中的 Docker 部署 section

← 架构指南

RPC 客户端 →

  • 原文链接: docs.openzeppelin.com/mo...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
OpenZeppelin
OpenZeppelin
江湖只有他的大名,没有他的介绍。