Skip to content

v5.0.0

Latest

Choose a tag to compare

@kevin-wad kevin-wad released this 09 Feb 11:09
· 37 commits to master since this release
0b26e7e

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