- Added comprehensive bounds checking to prevent buffer overruns in multicall parsing - Implemented graduated validation system (Strict/Moderate/Permissive) to reduce false positives - Added LRU caching system for address validation with 10-minute TTL - Enhanced ABI decoder with missing Universal Router and Arbitrum-specific DEX signatures - Fixed duplicate function declarations and import conflicts across multiple files - Added error recovery mechanisms with multiple fallback strategies - Updated tests to handle new validation behavior for suspicious addresses - Fixed parser test expectations for improved validation system - Applied gofmt formatting fixes to ensure code style compliance - Fixed mutex copying issues in monitoring package by introducing MetricsSnapshot - Resolved critical security vulnerabilities in heuristic address extraction - Progress: Updated TODO audit from 10% to 35% complete 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
272 lines
8.5 KiB
Markdown
272 lines
8.5 KiB
Markdown
# Claude CLI Configuration
|
|
|
|
This directory contains Claude Code configuration and tools for the MEV Bot project.
|
|
|
|
## 🚀 Quick Start Commands
|
|
|
|
### Essential Build & Test Commands
|
|
```bash
|
|
# Build the MEV bot binary
|
|
make build
|
|
|
|
# Run tests
|
|
make test
|
|
|
|
# Start development server with hot reload
|
|
./scripts/run.sh
|
|
|
|
# Build and run with logging
|
|
./scripts/build.sh && ./mev-bot start
|
|
|
|
# Check for Go modules issues
|
|
go mod tidy && go mod verify
|
|
|
|
# Run linter
|
|
golangci-lint run
|
|
|
|
# Run security analysis
|
|
gosec ./...
|
|
```
|
|
|
|
### Development Workflow Commands
|
|
```bash
|
|
# Setup production environment for testing
|
|
export ARBITRUM_RPC_ENDPOINT="wss://arbitrum-mainnet.core.chainstack.com/53c30e7a941160679fdcc396c894fc57"
|
|
export ARBITRUM_WS_ENDPOINT="wss://arbitrum-mainnet.core.chainstack.com/53c30e7a941160679fdcc396c894fc57"
|
|
export MEV_BOT_ENCRYPTION_KEY="tVoxTugRw7lk7q/GC8yXd0wg3vLy8m6GtrvCqj/5q48="
|
|
export METRICS_ENABLED="false"
|
|
|
|
# Run with production endpoints and timeout for testing
|
|
env ARBITRUM_RPC_ENDPOINT="wss://arbitrum-mainnet.core.chainstack.com/53c30e7a941160679fdcc396c894fc57" ARBITRUM_WS_ENDPOINT="wss://arbitrum-mainnet.core.chainstack.com/53c30e7a941160679fdcc396c894fc57" MEV_BOT_ENCRYPTION_KEY="tVoxTugRw7lk7q/GC8yXd0wg3vLy8m6GtrvCqj/5q48=" timeout 30 ./bin/mev-bot start
|
|
|
|
# Debug with verbose logging using production endpoints
|
|
env ARBITRUM_RPC_ENDPOINT="wss://arbitrum-mainnet.core.chainstack.com/53c30e7a941160679fdcc396c894fc57" ARBITRUM_WS_ENDPOINT="wss://arbitrum-mainnet.core.chainstack.com/53c30e7a941160679fdcc396c894fc57" MEV_BOT_ENCRYPTION_KEY="tVoxTugRw7lk7q/GC8yXd0wg3vLy8m6GtrvCqj/5q48=" LOG_LEVEL="debug" timeout 15 ./bin/mev-bot start
|
|
|
|
# Scan for opportunities using production endpoints
|
|
env ARBITRUM_RPC_ENDPOINT="wss://arbitrum-mainnet.core.chainstack.com/53c30e7a941160679fdcc396c894fc57" ARBITRUM_WS_ENDPOINT="wss://arbitrum-mainnet.core.chainstack.com/53c30e7a941160679fdcc396c894fc57" MEV_BOT_ENCRYPTION_KEY="tVoxTugRw7lk7q/GC8yXd0wg3vLy8m6GtrvCqj/5q48=" timeout 20 ./bin/mev-bot scan
|
|
|
|
# Profile performance
|
|
go tool pprof http://localhost:6060/debug/pprof/profile
|
|
```
|
|
|
|
## Claude Commands Directory
|
|
|
|
The `.claude/commands/` directory contains predefined commands for common development tasks:
|
|
|
|
- `analyze-performance.md` - Analyze application performance
|
|
- `debug-issue.md` - Debug issues in the codebase
|
|
- `implement-feature.md` - Implement new features
|
|
- `optimize-performance.md` - Optimize performance
|
|
- `security-audit.md` - Perform security audits
|
|
|
|
## Claude Settings
|
|
|
|
The `.claude/settings.local.json` file contains Claude's permissions configuration:
|
|
|
|
```json
|
|
{
|
|
"permissions": {
|
|
"allow": [
|
|
"Bash(find:*)",
|
|
"Bash(go mod:*)",
|
|
"Bash(go list:*)",
|
|
"mcp__ide__getDiagnostics",
|
|
"Bash(go test:*)",
|
|
"Bash(go build:*)",
|
|
"Read(//tmp/**)",
|
|
"Bash(./mev-bot start --help)",
|
|
"Bash(xargs ls:*)",
|
|
"Bash(timeout:*)",
|
|
"WebSearch",
|
|
"WebFetch(domain:docs.uniswap.org)",
|
|
"WebFetch(domain:github.com)",
|
|
"WebFetch(domain:raw.githubusercontent.com)",
|
|
"WebFetch(domain:htdocs.dev)"
|
|
],
|
|
"deny": [],
|
|
"ask": []
|
|
}
|
|
}
|
|
```
|
|
|
|
## 📋 Development Guidelines & Code Style
|
|
|
|
### Go Best Practices
|
|
- **Error Handling**: Always wrap errors with context using `fmt.Errorf("operation failed: %w", err)`
|
|
- **Concurrency**: Use worker pools for processing large datasets (see `pkg/market/pipeline.go`)
|
|
- **Interfaces**: Keep interfaces small and focused (1-3 methods maximum)
|
|
- **Testing**: Aim for >90% test coverage with table-driven tests
|
|
- **Logging**: Use structured logging with `slog` package
|
|
- **Performance**: Profile regularly with `go tool pprof`
|
|
|
|
### Code Organization Rules
|
|
- **File Size**: Keep files under 500 lines (split larger files into logical components)
|
|
- **Package Structure**: Follow Go standard layout (cmd/, internal/, pkg/)
|
|
- **Naming**: Use Go naming conventions (PascalCase for exports, camelCase for private)
|
|
- **Documentation**: Document all exported functions with examples
|
|
- **Constants**: Group related constants in blocks with `iota` when appropriate
|
|
|
|
### Required Checks Before Commit
|
|
```bash
|
|
# Run all checks before committing
|
|
make test && make lint && go mod tidy
|
|
|
|
# Security scan
|
|
gosec ./...
|
|
|
|
# Dependency vulnerability check
|
|
go list -json -m all | nancy sleuth
|
|
```
|
|
|
|
## Claude's Primary Focus Areas
|
|
|
|
As Claude, you're particularly skilled at:
|
|
|
|
1. **Code Architecture and Design Patterns**
|
|
- Implementing clean, maintainable architectures
|
|
- Applying appropriate design patterns (pipeline, worker pool, etc.)
|
|
- Creating well-structured interfaces between components
|
|
- Ensuring loose coupling and high cohesion
|
|
|
|
2. **System Integration and APIs**
|
|
- Designing clear APIs between components
|
|
- Implementing proper data flow between modules
|
|
- Creating robust configuration management
|
|
- Building error handling and recovery mechanisms
|
|
|
|
3. **Writing Clear Documentation**
|
|
- Documenting complex algorithms and mathematical calculations
|
|
- Creating clear API documentation
|
|
- Writing architectural decision records
|
|
- Producing user guides and examples
|
|
|
|
4. **Implementing Robust Error Handling**
|
|
- Using Go's error wrapping with context
|
|
- Implementing retry mechanisms with exponential backoff
|
|
- Handling timeouts appropriately
|
|
- Creating comprehensive logging strategies
|
|
|
|
5. **Creating Maintainable and Scalable Code Structures**
|
|
- Organizing code for easy testing and maintenance
|
|
- Implementing performance monitoring and metrics
|
|
- Designing for horizontal scalability
|
|
- Ensuring code follows established patterns and conventions
|
|
|
|
## 🛠 Claude Code Optimization Settings
|
|
|
|
### Workflow Preferences
|
|
- **Always commit changes**: Use `git commit -am "descriptive message"` after significant changes
|
|
- **Branch naming**: Use hyphens (`feat-add-new-parser`, `fix-memory-leak`)
|
|
- **Context management**: Use `/compact` to manage long conversations
|
|
- **Parallel processing**: Leverage Go's concurrency patterns extensively
|
|
|
|
### File Organization Preferences
|
|
- **Never save temporary files to root**: Use `/tmp/` or `internal/temp/`
|
|
- **Log files**: Always save to `logs/` directory
|
|
- **Test files**: Place alongside source files with `_test.go` suffix
|
|
- **Documentation**: Keep in `docs/` with clear naming
|
|
|
|
### Performance Monitoring
|
|
```bash
|
|
# Enable metrics endpoint
|
|
export METRICS_ENABLED="true"
|
|
export METRICS_PORT="9090"
|
|
|
|
# Monitor memory usage
|
|
go tool pprof http://localhost:9090/debug/pprof/heap
|
|
|
|
# Monitor CPU usage
|
|
go tool pprof http://localhost:9090/debug/pprof/profile?seconds=30
|
|
|
|
# Monitor goroutines
|
|
go tool pprof http://localhost:9090/debug/pprof/goroutine
|
|
```
|
|
|
|
## 🔧 Environment Configuration
|
|
|
|
### Required Environment Variables
|
|
```bash
|
|
# Production Arbitrum RPC Configuration (WSS for full features)
|
|
export ARBITRUM_RPC_ENDPOINT="wss://arbitrum-mainnet.core.chainstack.com/53c30e7a941160679fdcc396c894fc57"
|
|
export ARBITRUM_WS_ENDPOINT="wss://arbitrum-mainnet.core.chainstack.com/53c30e7a941160679fdcc396c894fc57"
|
|
|
|
# Security Configuration
|
|
export MEV_BOT_ENCRYPTION_KEY="tVoxTugRw7lk7q/GC8yXd0wg3vLy8m6GtrvCqj/5q48="
|
|
|
|
# Application Configuration
|
|
export LOG_LEVEL="info"
|
|
export METRICS_ENABLED="false"
|
|
export METRICS_PORT="9090"
|
|
|
|
# Development Configuration
|
|
export GO_ENV="development"
|
|
export DEBUG="true"
|
|
```
|
|
|
|
### Optional Environment Variables
|
|
```bash
|
|
# Performance Tuning
|
|
export GOMAXPROCS=4
|
|
export GOGC=100
|
|
|
|
# Logging Configuration
|
|
export LOG_FORMAT="json"
|
|
export LOG_OUTPUT="logs/mev-bot.log"
|
|
|
|
# Rate Limiting
|
|
export MAX_RPS=100
|
|
export RATE_LIMIT_BURST=200
|
|
```
|
|
|
|
## 📝 Commit Message Conventions
|
|
|
|
### Format
|
|
```
|
|
type(scope): brief description
|
|
|
|
- Detailed explanation of changes
|
|
- Why the change was needed
|
|
- Any breaking changes or migration notes
|
|
|
|
🤖 Generated with [Claude Code](https://claude.ai/code)
|
|
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
```
|
|
|
|
### Types
|
|
- `feat`: New feature implementation
|
|
- `fix`: Bug fix
|
|
- `perf`: Performance improvement
|
|
- `refactor`: Code restructuring without feature changes
|
|
- `test`: Adding or updating tests
|
|
- `docs`: Documentation updates
|
|
- `build`: Build system or dependency changes
|
|
- `ci`: CI/CD pipeline changes
|
|
|
|
## 🚨 Security Guidelines
|
|
|
|
### Never Commit
|
|
- Private keys or wallet seeds
|
|
- API keys or secrets
|
|
- RPC endpoints with authentication
|
|
- Personal configuration files
|
|
|
|
### Always Validate
|
|
- Input parameters for all functions
|
|
- RPC responses before processing
|
|
- Mathematical calculations for overflow
|
|
- Memory allocations for bounds
|
|
|
|
### Security Commands
|
|
```bash
|
|
# Scan for secrets
|
|
git-secrets --scan
|
|
|
|
# Security audit
|
|
gosec ./...
|
|
|
|
# Dependency vulnerabilities
|
|
go list -json -m all | nancy sleuth
|
|
|
|
# Check for hardcoded credentials
|
|
grep -r "password\|secret\|key" --exclude-dir=.git .
|
|
``` |