Relayer
Project Structure
This document provides detailed information about each directory in the OpenZeppelin Relayer project.
Source Code Organization
src/
Directory
The main source code directory contains the core implementation files organized into several modules:
api/
: Route and controllers logic- Manages HTTP routing and delegates incoming requests to controllers
bootstrap/
: Service initialization- Bootstraps and initializes application services
config/
: Configuration management- Handles system configuration and environment settings
constants/
: Global constants- Provides static values used across the application
domain/
: Business domain logic- Encapsulates core business rules and domain-specific functionality
jobs/
: Asynchronous job processing- Manages background task queueing and execution
logging/
: Logging and file rotation- Implements logging functionalities and log file management
metrics/
: Metrics collection- Collects and reports application performance and usage metrics
models/
: Core data models and types- Defines data structures and type definitions for the system
repositories/
: Configuration storage- Provides interfaces for storing and retrieving configuration data
services/
: Business service logic- Implements core business functionalities and service operations
utils/
: Utility functions- Offers helper functions and common utilities for the application
Documentation
docs/
Directory
Project documentation:
- User guides
- API documentation
- Configuration examples
- Architecture diagrams
Configuration
config/
Directory
Houses system configuration file and keys:
config.json
configuration file- keystore files referenced from config.json file
Tests
test/
Directory
Includes comprehensive testing suites to ensure system reliability:
- End-to-end tests that simulate real-world user scenarios
Scripts
scripts/
Directory
Utility scripts.
Examples
examples/
Directory
Provides practical examples and sample configurations to help users get started:
- Demonstrates typical service configurations for various environments
- Acts as a quick-start guide for customizing and deploying the relayer
- Serves as a reference for best practices in configuration and deployment
Development Tools
Pre-commit Hooks
Located in the project root:
- Code formatting checks
- Linting rules
- Commit message validation
Build Configuration
Core build files:
Cargo.toml
: Project dependencies and metadatarustfmt.toml
: Code formatting rulesrust-toolchain.toml
: Rust version and components
Docker Support
The project includes Docker configurations for different environments:
Dockerfile.development
: Development container setupDockerfile.production
: Production-ready container
For detailed information about running the relayers in containers, see the Docker deployment section in the main documentation.