Files
mev-beta/GEMINI.md
2025-09-14 06:21:10 -05:00

138 lines
5.6 KiB
Markdown

# MEV Bot Project - Gemini Context
This file contains context information for Gemini about the MEV Bot project.
## Project Overview
This is an MEV (Maximal Extractable Value) bot written in Go 1.24+ that monitors the Arbitrum sequencer for potential swap opportunities. When a potential swap is detected, the bot scans the market to determine if the swap is large enough to move the price using off-chain methods.
## Project Structure
- `cmd/` - Main applications (specifically `cmd/mev-bot/main.go`)
- `internal/` - Private application and library code
- `internal/config` - Configuration management
- `internal/logger` - Logging functionality
- `internal/ratelimit` - Rate limiting implementations
- `internal/utils` - Utility functions
- `pkg/` - Library code that can be used by external projects
- `pkg/events` - Event processing system
- `pkg/market` - Market data handling
- `pkg/monitor` - Arbitrum sequencer monitoring
- `pkg/scanner` - Market scanning functionality
- `pkg/test` - Test utilities and helpers
- `pkg/uniswap` - Uniswap V3 specific implementations
- `config/` - Configuration files
- `@prompts/` - AI prompts for development assistance
- `docs/` - Documentation
- `scripts/` - Scripts for building, testing, and deployment
## Key Integration Points
- Refer to @prompts/COMMON.md for core requirements and integration points
- Follow the modular architecture with independent components
- Use the universal message bus for inter-module communication
- Adhere to the standards defined in the project plan
## Development Guidelines
- Focus on implementing the features outlined in the project plan
- Ensure all code follows Go best practices
- Write comprehensive tests for all functionality
- Document all public APIs and complex algorithms
- Follow the performance requirements outlined in COMMON.md
## Mathematical Implementation Details
### Uniswap V3 Pricing Functions
The core of the MEV bot's functionality relies on precise Uniswap V3 pricing calculations:
1. **sqrtPriceX96 to Price Conversion**
- Formula: `price = (sqrtPriceX96 / 2^96)^2`
- Implementation uses `math/big` for precision
- Critical for accurate price impact calculations
2. **Price to sqrtPriceX96 Conversion**
- Formula: `sqrtPriceX96 = sqrt(price) * 2^96`
- Used when initializing or updating pool states
- Requires careful handling of floating-point precision
3. **Tick Calculations**
- Formula: `tick = log_1.0001(sqrtPriceX96 / 2^96)^2`
- Ticks range from -887272 to 887272
- Used for discrete price levels in Uniswap V3
4. **Price Impact Calculations**
- Based on liquidity and amount being swapped
- Formula: `priceImpact = amountIn / liquidity`
- Critical for determining arbitrage profitability
### Precision Handling
- Uses `github.com/holiman/uint256` for precise uint256 arithmetic
- Implements proper rounding strategies
- Handles overflow and underflow conditions
- Maintains precision throughout calculations
## Performance Optimization Areas
### Concurrency Patterns
1. **Worker Pools**
- Used in `pkg/scanner` for concurrent event processing
- Configurable number of workers based on system resources
- Channel-based job distribution
2. **Pipeline Processing**
- Multi-stage processing in `pkg/market`
- Parallel processing of different transaction batches
- Backpressure handling through channel buffering
3. **Caching Strategies**
- Singleflight pattern to prevent duplicate requests
- Time-based expiration for cached pool data
- Memory-efficient data structures
### Low-Level Optimizations
1. **Memory Allocation Reduction**
- Object pooling for frequently created objects
- Pre-allocation of slices and maps when size is known
- Reuse of buffers and temporary variables
2. **Algorithmic Efficiency**
- O(1) lookups for cached pool data
- Efficient sorting and searching algorithms
- Minimal computational overhead in hot paths
3. **System-Level Optimizations**
- Proper tuning of Go's garbage collector
- NUMA-aware memory allocation (if applicable)
- CPU cache-friendly data access patterns
## Gemini's Primary Focus Areas
As Gemini, you're particularly skilled at:
1. **Algorithmic Implementations and Mathematical Computations**
- Implementing precise Uniswap V3 pricing functions
- Optimizing mathematical calculations for performance
- Ensuring numerical stability and precision
- Creating efficient algorithms for arbitrage detection
2. **Optimizing Performance and Efficiency**
- Profiling and identifying bottlenecks in critical paths
- Reducing memory allocations in hot code paths
- Optimizing concurrency patterns for maximum throughput
- Tuning garbage collection for low-latency requirements
3. **Understanding Complex Uniswap V3 Pricing Functions**
- Implementing accurate tick and sqrtPriceX96 conversions
- Calculating price impact with proper precision handling
- Working with liquidity and fee calculations
- Handling edge cases in pricing mathematics
4. **Implementing Concurrent and Parallel Processing Patterns**
- Designing efficient worker pool implementations
- Creating robust pipeline processing systems
- Managing synchronization primitives correctly
- Preventing race conditions and deadlocks
5. **Working with Low-Level System Operations**
- Optimizing memory usage and allocation patterns
- Tuning system-level parameters for performance
- Implementing efficient data structures for high-frequency access
- Working with CPU cache optimization techniques
When working on this project, please focus on these areas where your strengths will be most beneficial.