Repository navigation
Release v5.0.0 - Eticapool v5
Major Release: Performance Overhaul + Docker Deployment
Eticapool v5 is a major release focused on performance, scalability, and ease of deployment. The pool can now support 5-10x more concurrent miners
than v4 thanks to significant backend optimizations and a new Redis-based architecture.
Performance Optimizations
- Share processing: Reduced from 17-19 MongoDB operations per share down to ~10 by eliminating redundant reads
- Duplicate RandomX hash eliminated: Each share is now hashed once instead of twice (major CPU savings)
- Busy-wait loop fixed: Removed a hot loop that generated ~60,000 wasted DB operations per minute when idle
- Data caching layer: TTL-based cache for frequently accessed mining contract data, invalidated on new challenges
- Socket.IO room-based push: Frontend receives real-time updates via server push instead of polling
- 6 compound MongoDB indexes added for common query patterns
- Background timer consolidation: Reduced query storms from 20+ independent timers
Redis Integration
- Redis Streams share queue: High-throughput share pipeline between stratum and processor (falls back to MongoDB if Redis is unavailable)
- Redis Pub/Sub: Cross-process event system for scaled deployments
- Redis-backed caching and IP ban list: Shared state across multiple pool instances
- Fully optional: Pool works with or without Redis — all Redis features have automatic MongoDB fallback
Docker Deployment
- One-command setup: docker compose up --build -d starts the entire pool (Redis, web, stratum, share processing, network sync, cleanup)
- 3 deployment modes:
- Standard (docker-compose.yml) — Single-process monolith, best for small to medium pools
- Scaled (docker-compose.scaled.yml) — Separate containers per role (7 containers), best for high-traffic pools
- Privacy (docker-compose.privacy.yml) — Same as standard without network pool discovery
- 3-stage Dockerfile: Frontend build → backend native modules → slim production image
- Horizontal scaling ready: Run multiple stratum instances behind a load balancer
Frontend Modernization
- New React frontend (React 18 + Vite + Tailwind) replacing Vue 2
- TanStack Query for data fetching with incremental WebSocket updates
- New design system with dark theme, emerald accents, and responsive layout
- Frontend/backend separation: Frontend builds independently, backend serves static files
New REST API (v2)
- /api/v2/pool/overview, /api/v2/pool/miners, /api/v2/pool/miner/:address, and more
- Optimized queries with projections and limits
- Backward compatible — v1 API endpoints still work
Price Oracle Fix
- Fixed broken EGAZ price feed: CoinGecko EGAZ endpoint was returning 404 (delisted), causing pool suspension
- 3-source price waterfall: NonKYC (primary) → CoinPaprika + NonKYC (fallback) → CoinGecko (last resort)
Bug Fixes
- Fixed promise reject/return bug in all 16 mongo-interface methods
- Fixed minerEthAddres typo causing crashes on JSONRPC calls
- Removed dead Redis references in peer-helper.js
- Removed duplicate method definitions in token-data-helper.js
- Fixed race condition on poolConfig.minimumTarget
Get Pool Updates
Docker (Recommended)
cd eticapool
git fetch
git checkout eticapool-v2
git pull
Create .env with your Redis password
echo "REDIS_PASSWORD=your_secure_password_here" > .env
docker compose down
docker compose up --build -d
Manual (pm2)
cd eticapool
git fetch
git checkout eticapool-v2
git pull
node --version # must be 18.x
npm install
cd frontend-new && npm install && npm run build && cd ..
Optional: Redis
export REDIS_URL=redis://localhost:6379
pm2 restart all
Or if process names changed:
pm2 delete all
pm2 start index.js
pm2 start indexpoolsnetwork.js
pm2 start indexcleanercoordinator.js
pm2 save