A high-performance, secure, and scalable P2P mining pool system with advanced optimization capabilities.
- Multi-Algorithm Support: SHA256d, Scrypt, Ethash, RandomX, and more
- Hardware Support: CPU, GPU (NVIDIA/AMD), and ASIC mining
- P2P Network: Decentralized peer-to-peer architecture
- Auto-Optimization: Automatic performance tuning and power management
- Security-First: Built with enterprise-grade security measures
- Rate limiting and DDoS protection
- Session management with CSRF protection
- Input validation and sanitization
- Secure password hashing (bcrypt)
- TLS/SSL support
- IP-based access control
- Hardware-accelerated mining algorithms
- Memory pool optimization
- Automatic difficulty adjustment
- Load balancing across devices
- Real-time performance monitoring
- Go 1.21 or higher
- PostgreSQL 14+ or SQLite3
- Redis (optional, for caching)
# Clone the repository
git clone https://github.com/otedama/otedama.git
cd otedama
# Build the application
go build -o otedama ./cmd/otedama
# Run with default configuration
./otedamaCreate a config.yaml file:
mining:
algorithm: sha256d
auto_start: true
cpu:
enabled: true
threads: -1 # Auto-detect
gpu:
enabled: false
api:
enable: true
address: ":8080"
stratum:
enabled: true
pools:
- url: "stratum+tcp://pool.example.com:3333"
user: "your_wallet_address"
password: "x"GET /health- Health checkGET /api/mining/status- Mining statusPOST /api/mining/start- Start miningPOST /api/mining/stop- Stop miningGET /api/stats- Pool statistics
# Build Docker image
docker build -t otedama:v2.1.9 .
# Run with Docker Compose
docker-compose up -dotedama/
├── cmd/ # Application entrypoints
├── internal/ # Internal packages
│ ├── mining/ # Mining engine
│ ├── p2p/ # P2P networking
│ ├── api/ # REST API
│ └── security/ # Security components
├── config/ # Configuration files
└── web/ # Web interface
# Run unit tests
go test ./...
# Run benchmarks
go test -bench=. ./internal/mining
# Run with race detector
go test -race ./...MIT License - see LICENSE file for details
For issues and feature requests, please use the GitHub issue tracker.
See CHANGELOG.md for detailed version history.