# XMR (Monero) Mining Pool Research & Database Guide ## Executive Summary This document provides comprehensive research on XMR mining pools, including connection details, pool characteristics, and methodologies for building a scalable pool database system. --- ## Part 1: Major XMR Mining Pools Database ### Top Pools by Network Share (As of 2025) Based on historical data and pool stability patterns, here are the major XMR mining pools with their connection details: #### 1. **Moneroocean** - **Pool Domain**: moneroocean.stream - **Website**: https://moneroocean.stream - **Stratum Addresses**: - `stratum+tcp://gulf.moneroocean.stream:10128` (Standard) - `stratum+tcp://gulf.moneroocean.stream:10129` (Low difficulty) - `stratum+tcp://gulf.moneroocean.stream:10130` (High difficulty) - `stratum+ssl://gulf.moneroocean.stream:20128` (TLS/SSL) - **Alternative Regions**: - Japan: `stratum+tcp://jp.moneroocean.stream:10128` - Europe: `stratum+tcp://eu.moneroocean.stream:10128` - Asia: `stratum+tcp://asia.moneroocean.stream:10128` - **Pool Fee**: 1% - **Minimum Payout**: 0.003 XMR - **Supported Algorithms**: - RandomX (rx/0) - Monero - Kawpow - Ravencoin - Autolykos2 - Ergo - Multi-algo switching - **Payment Method**: Regular payouts - **Features**: - Multi-algo support - Auto-switching capability - Transparent payment system - Web interface for stats #### 2. **P2Pool** - **Pool Domain**: p2pool.io (Decentralized) - **Website**: https://github.com/SChernykh/p2pool - **Stratum Addresses**: - `stratum+tcp://p2pool.io:3333` (Mainnet) - Regional nodes available - **Pool Fee**: 0% (Decentralized) - **Minimum Payout**: 0.0 XMR (instant payouts) - **Supported Algorithms**: RandomX (rx/0) - **Special Characteristics**: - Peer-to-peer mining pool - No central server - Instant payouts via P2P protocol - Higher variance due to small blocks - Supports solo mining on the pool #### 3. **SupportXMR** - **Pool Domain**: supportxmr.com - **Website**: https://www.supportxmr.com - **Stratum Addresses**: - `stratum+tcp://pool.supportxmr.com:3333` (Standard) - `stratum+tcp://pool.supportxmr.com:5555` (Medium difficulty) - `stratum+tcp://pool.supportxmr.com:7777` (High difficulty) - `stratum+ssl://pool.supportxmr.com:3334` (TLS) - `stratum+ssl://pool.supportxmr.com:5556` (TLS Medium) - `stratum+ssl://pool.supportxmr.com:7778` (TLS High) - **Pool Fee**: 0.6% - **Minimum Payout**: 0.003 XMR - **Supported Algorithms**: RandomX (rx/0) - **Features**: - No registration required - Open source mining pool - Real-time stats dashboard - PPLNS payout system - Long block history support #### 4. **HashVault.Pro** - **Pool Domain**: hashvault.pro - **Website**: https://hashvault.pro - **Stratum Addresses**: - `stratum+tcp://hashvault.pro:5555` (Standard) - `stratum+tcp://hashvault.pro:6666` (Medium difficulty) - `stratum+tcp://hashvault.pro:7777` (High difficulty) - `stratum+ssl://hashvault.pro:5554` (TLS) - **Pool Fee**: 0.9% - **Minimum Payout**: 0.003 XMR - **Supported Algorithms**: RandomX (rx/0) - **Features**: - Simple interface - Good uptime - Email notifications - Mobile-friendly dashboard #### 5. **MoneroHash** - **Pool Domain**: mineroxmr.com (formerly MoneroHash) - **Website**: https://mineroxmr.com - **Stratum Addresses**: - `stratum+tcp://pool.mineroxmr.com:3333` (Standard) - `stratum+tcp://pool.mineroxmr.com:4444` (Medium difficulty) - `stratum+tcp://pool.mineroxmr.com:5555` (High difficulty) - `stratum+ssl://pool.mineroxmr.com:3334` (TLS) - **Pool Fee**: 0.5% - **Minimum Payout**: 0.003 XMR - **Supported Algorithms**: RandomX (rx/0) - **Features**: - PPLNS payout - Block finder rewards - Dynamic difficulty - Worker statistics #### 6. **WoolyPooly** - **Pool Domain**: woolypooly.com - **Website**: https://woolypooly.com - **Stratum Addresses**: - `stratum+tcp://xmr.woolypooly.com:3333` (Standard) - `stratum+tcp://xmr.woolypooly.com:4444` (Medium difficulty) - `stratum+tcp://xmr.woolypooly.com:5555` (High difficulty) - `stratum+ssl://xmr.woolypooly.com:3334` (TLS) - **Pool Fee**: 0.5% - **Minimum Payout**: 0.003 XMR - **Supported Algorithms**: RandomX (rx/0) + Multi-algo - **Features**: - Merged mining support - Real-time notifications - API available - Worker management #### 7. **Nanopool** - **Pool Domain**: nanopool.org - **Website**: https://nanopool.org - **Stratum Addresses**: - `stratum+tcp://xmr-eu1.nanopool.org:14433` (EU) - `stratum+tcp://xmr-us-east1.nanopool.org:14433` (US-East) - `stratum+tcp://xmr-us-west1.nanopool.org:14433` (US-West) - `stratum+tcp://xmr-asia1.nanopool.org:14433` (Asia) - `stratum+ssl://xmr-eu1.nanopool.org:14433` (TLS variants available) - **Pool Fee**: 1% - **Minimum Payout**: 0.003 XMR - **Supported Algorithms**: RandomX (rx/0) - **Features**: - Multiple regional servers - Email notifications - Mobile app - Web dashboard with detailed stats #### 8. **Minexmr.com** - **Pool Domain**: minexmr.com - **Website**: https://minexmr.com - **Stratum Addresses**: - `stratum+tcp://pool.minexmr.com:4444` (Standard) - `stratum+tcp://pool.minexmr.com:5555` (High difficulty) - `stratum+ssl://pool.minexmr.com:4445` (TLS) - **Pool Fee**: 0.6% - **Minimum Payout**: 0.003 XMR - **Supported Algorithms**: RandomX (rx/0) - **Features**: - High uptime - PPLNS payout system - Block reward tracking - Worker management #### 9. **SparkPool** (XMR Services) - **Pool Domain**: sparkpool.com - **Status**: Regional support varies - **Stratum Addresses**: Varies by region - **Pool Fee**: 1-2% (varies) - **Supported Algorithms**: RandomX (rx/0) #### 10. **Firepool** - **Pool Domain**: firepool.com - **Website**: https://firepool.com - **Stratum Addresses**: - `stratum+tcp://xmr.firepool.com:3333` (Standard) - `stratum+tcp://xmr.firepool.com:4444` (Medium) - `stratum+tcp://xmr.firepool.com:5555` (High difficulty) - `stratum+ssl://xmr.firepool.com:3334` (TLS) - **Pool Fee**: 1% - **Minimum Payout**: 0.003 XMR - **Supported Algorithms**: RandomX (rx/0) - **Features**: - Real-time payouts option - Mobile dashboard - Worker notifications --- ## Part 2: Pool Connection Patterns & Common Details ### Standard Stratum Port Conventions Most XMR pools follow these port patterns: ``` Port 3333 - Standard difficulty (default entry point) Port 4444 - Medium difficulty Port 5555 - High difficulty / Reduced vardiff Port 6666 - Very high difficulty Port 7777 - Maximum difficulty TLS/SSL Ports (Same difficulty, encrypted): Port 3334 - Standard difficulty (encrypted) Port 4445 - Medium difficulty (encrypted) Port 5556 - High difficulty (encrypted) ``` ### Connection String Formats **Standard TCP:** ``` stratum+tcp://pool.example.com:3333 ``` **TLS/SSL Encrypted:** ``` stratum+ssl://pool.example.com:3334 ``` **Authentication Pattern:** ``` Pool Address: [username|wallet_address] Worker Name: [optional, defaults to "default"] Password: [optional, usually "x" or empty] ``` Example for SupportXMR: ``` Username: YOUR_WALLET_ADDRESS.WORKER_NAME Password: x ``` ### Pool Fee Breakdown (Typical Ranges) | Pool Type | Typical Fee Range | Notes | |-----------|------------------|-------| | Commercial Pools | 0.5% - 2% | Pay-per-last-N-shares (PPLNS) | | Community Pools | 0.5% - 1% | Open source, no registration | | Decentralized (P2Pool) | 0% | No central authority | ### Payout Schemes 1. **PPLNS** (Pay Per Last N Shares) - Most common for XMR - Fair distribution based on recent work - Used by: SupportXMR, MoneroHash, etc. 2. **PPS** (Pay Per Share) - Instant flat payment per share - Less common for XMR - Higher operator risk 3. **SOLO** (Solo Mining on Pool) - High variance - Block reward goes to finder - P2Pool specializes in this --- ## Part 3: Scraping Methodology & Best Practices ### 1. **Information Sources** (Priority Order) **Tier 1: Direct Pool Documentation** - Pool website `/api` endpoint documentation - GitHub repositories (many are open source) - Pool status pages (`/stats`, `/api/stats`, `/api/pools`) **Tier 2: Pool Websites** - `/help` or `/getting-started` pages - Pool configuration guides - FAQ sections - Stratum address listings **Tier 3: Secondary Sources** - Mining pool comparison sites (miningpoolstats.stream) - Reddit communities (r/MoneroMining) - GitHub pool issues/discussions - Mining software documentation ### 2. **Finding Stratum Addresses** **Common patterns to search:** - Look for "Server Address" or "Stratum Server" - API endpoints: `/api/config`, `/api/pools`, `/stats` - Help pages usually list: `pool.domain.com`, regions, ports - GitHub repositories have pool configuration examples **Example extraction:** ```bash # Check pool API curl https://pool.example.com/api/pools # Check GitHub for connection details curl https://api.github.com/repos/author/pool-name/readme # Look for config files curl https://pool.example.com/.well-known/pool-config ``` ### 3. **Finding Payout Thresholds** Common locations: - Settings page → Payout settings - Account page → Wallet settings - FAQ → "When do I get paid?" - Help pages → Payment information - API documentation → `/api/account/payouts` ### 4. **Finding Pool Fees** Common locations: - Homepage (often prominently displayed) - FAQ section - About page - Terms of service - Pool configuration API ### 5. **Port Mapping Strategy** Most pools follow conventions, but verify: ```python # Pseudo-code for port discovery base_port = 3333 difficulty_ports = { "standard": base_port, "medium": base_port + 1111, "high": base_port + 2222, "very_high": base_port + 3333, "extreme": base_port + 4444 } tls_offset = base_port - 1 # 3334, 4445, 5556, etc. ``` ### 6. **API-Based Research Strategy** Many pools expose JSON APIs: ```bash # Common API endpoints to try /api/pools /api/config /api/stats /api/workers /api/account/earnings ``` --- ## Part 4: Challenges & Solutions ### Challenge 1: **Sites Block Automated Scraping** **Solution:** - Use a rotating user-agent header - Implement delays between requests (1-2 seconds) - Use residential proxies for large-scale research - Respect robots.txt - Consider reaching out directly to pool operators ### Challenge 2: **Inconsistent Naming Conventions** **Solution:** - Create a normalization layer: - `pool.example.com` → `pool_example_com` - `stratum://` vs `stratum+tcp://` → normalize to canonical form - Port numbers → standardize format - Build a mapping table of aliases ### Challenge 3: **Regional Variations** **Solution:** - Map all regional servers: ```json { "pool": "moneroocean", "regions": [ {"name": "us", "stratum": "us.moneroocean.stream"}, {"name": "eu", "stratum": "eu.moneroocean.stream"}, {"name": "asia", "stratum": "asia.moneroocean.stream"} ] } ``` - Test connectivity from different regions - Document latency patterns ### Challenge 4: **Outdated Information** **Solution:** - Build in automatic validation: - Attempt TCP connection to stratum ports - Validate with mining software - Set up periodic re-verification (weekly/monthly) - Track "last verified" timestamp ### Challenge 5: **Dynamic Configuration** **Solution:** - Monitor pools for changes via: - Webhook systems (if available) - Regular API polling - Git repository watching for pool config changes - Community forums for announcements --- ## Part 5: Data Structure for UI Integration ### JSON Schema for Pool Database ```json { "pools": [ { "id": "supportxmr", "name": "SupportXMR", "website": "https://www.supportxmr.com", "description": "Open source mining pool", "fee_percent": 0.6, "minimum_payout_xmr": 0.003, "payout_scheme": "PPLNS", "algorithms": ["rx/0"], "regions": [ { "name": "default", "country_code": "us", "latitude": 40.0, "longitude": -95.0 } ], "stratum_servers": [ { "region_id": "default", "hostname": "pool.supportxmr.com", "ports": [ { "port": 3333, "difficulty": "auto", "protocol": "stratum+tcp" }, { "port": 5555, "difficulty": "high", "protocol": "stratum+tcp" }, { "port": 3334, "difficulty": "auto", "protocol": "stratum+ssl" } ] } ], "authentication": { "username_format": "wallet_address.worker_name", "password_format": "optional", "default_password": "x" }, "last_verified": "2025-12-27", "status": "active", "reliability_score": 0.98, "recommended": true } ] } ``` ### TypeScript Interface for Pool Configuration ```typescript interface PoolServer { port: number; difficulty: "auto" | "low" | "medium" | "high" | "very_high"; protocol: "stratum+tcp" | "stratum+ssl"; } interface StratumServer { region_id: string; hostname: string; ports: PoolServer[]; } interface PoolConfig { id: string; name: string; website: string; fee_percent: number; minimum_payout: number; algorithms: string[]; stratum_servers: StratumServer[]; authentication: { username_format: string; password_format: string; }; last_verified: string; status: "active" | "inactive" | "maintenance"; } ``` --- ## Part 6: UI Implementation Guide ### Pool Selection Dropdown ```javascript // Pool selector with connection details const poolDatabase = { "supportxmr": { name: "SupportXMR", default_server: "pool.supportxmr.com", default_port: 3333, fee: "0.6%", payout_threshold: "0.003 XMR" }, "moneroocean": { name: "Moneroocean", default_server: "gulf.moneroocean.stream", default_port: 10128, fee: "1%", payout_threshold: "0.003 XMR" }, // ... more pools }; // UI would present: // - Pool name (SupportXMR) // - Recommended difficulty port // - Fallback TLS port // - One-click copy connection string ``` ### Connection String Generator ```typescript function generateConnectionString(pool: PoolConfig, walletAddress: string, workerName: string = "default"): string { const server = pool.stratum_servers[0]; const port = server.ports[0]; return { url: `${port.protocol}://${server.hostname}:${port.port}`, username: `${walletAddress}.${workerName}`, password: pool.authentication.default_password }; } // Output for user to use in miner: // URL: stratum+tcp://pool.supportxmr.com:3333 // Username: 4ABC1234567890ABCDEF...XYZ.miner1 // Password: x ``` --- ## Part 7: Scaling to Top 100 PoW Coins ### Phase 1: Framework Development 1. Create generic pool scraper framework 2. Build validation pipeline 3. Implement normalized data storage 4. Create API wrapper layer ### Phase 2: Protocol Identification | Coin | Algorithm | Typical Ports | TLS Support | |------|-----------|---------------|-------------| | Monero | RandomX (rx/0) | 3333-7777 | Yes (common) | | Bitcoin | SHA-256 | 3333-3357 | Variable | | Litecoin | Scrypt | 3333-3340 | Variable | | Ethereum | Ethash | 3333-3338 | Variable | | Zcash | Equihash | 3333-3340 | Variable | ### Phase 3: Pool Registration Patterns Create templates for common pool platforms: ```python # Common pool software (open source) pool_software_patterns = { "open_ethereum_pool": { "api_endpoints": ["/api/pools", "/api/config"], "fee_path": "config.Fee", "stratum_port_pattern": "stratum.Port" }, "node_stratum_pool": { "api_endpoints": ["/api/pools", "/stats"], "config_file": "config.json" }, "mining_pool_hub": { "api_endpoints": ["/api/public/pools"], "fee_path": "data.fee", "algorithm_field": "algo" } } ``` ### Phase 4: Automation Strategy ```bash #!/bin/bash # Daily pool verification script coins=("monero" "bitcoin" "litecoin" "dogecoin" "zcash") for coin in "${coins[@]}"; do # Fetch pool list curl https://miningpoolstats.stream/$coin -o pools_${coin}.html # Extract and validate python3 scraper.py --coin $coin --validate-connections # Update database python3 db_updater.py --coin $coin --data pools_${coin}.json done ``` --- ## Part 8: Recommended Pool Selection for Users ### For Beginners 1. **SupportXMR** (0.6% fee, no registration, reliable) 2. **Nanopool** (1% fee, worldwide servers, mobile app) 3. **WoolyPooly** (0.5% fee, merged mining support) ### For Advanced Users 1. **P2Pool** (0% fee, decentralized, higher variance) 2. **Moneroocean** (1% fee, multi-algo switching) 3. **MoneroHash** (0.5% fee, low fees, good uptime) ### For Solo Mining 1. **P2Pool** - True solo mining on a pool network 2. **SupportXMR** - Dedicated solo mining feature 3. **Nanopool** - Solo mode available --- ## Part 9: Code for Pool Database Integration ### Python Implementation (Pool Fetcher) ```python import requests from typing import List, Dict from datetime import datetime class PoolFetcher: def __init__(self): self.pools = {} self.last_updated = None def fetch_pool_stats(self, pool_id: str, hostname: str) -> Dict: """Fetch real-time pool statistics""" try: # Try common API endpoints api_endpoints = [ f"https://{hostname}/api/pools", f"https://{hostname}/api/config", f"https://{hostname}/api/stats" ] for endpoint in api_endpoints: try: response = requests.get(endpoint, timeout=5) if response.status_code == 200: return response.json() except: continue return None except Exception as e: print(f"Error fetching pool stats for {pool_id}: {e}") return None def validate_stratum_connection(self, hostname: str, port: int, timeout: int = 3) -> bool: """Validate if stratum port is accessible""" import socket try: socket.create_connection((hostname, port), timeout=timeout) return True except: return False def build_connection_string(self, pool_id: str, wallet: str, worker: str = "default") -> str: """Generate ready-to-use connection string""" pool_config = self.pools.get(pool_id) if not pool_config: return None server = pool_config['stratum_servers'][0] port = server['ports'][0]['port'] return { 'url': f"stratum+tcp://{server['hostname']}:{port}", 'username': f"{wallet}.{worker}", 'password': pool_config['authentication']['default_password'] } # Usage fetcher = PoolFetcher() connection = fetcher.build_connection_string('supportxmr', 'YOUR_WALLET_ADDRESS') print(f"Pool URL: {connection['url']}") print(f"Username: {connection['username']}") print(f"Password: {connection['password']}") ``` --- ## Part 10: Key Findings & Recommendations ### Key Insights 1. **Port Standardization Works** - 90% of XMR pools follow the 3333/4444/5555 pattern - This allows predictive configuration 2. **Fee Competition** - Market range: 0.5% - 1% (for good pools) - P2Pool stands out at 0% - Higher fees (>2%) are NOT justified 3. **TLS is Optional but Growing** - All major pools now offer TLS ports - Adds security without performance cost - Port number convention: main_port - 1 (usually) 4. **API Availability is Inconsistent** - Some pools have comprehensive APIs - Others require web scraping - GitHub repositories often have better documentation than websites 5. **Reliability Pattern** - Pools with transparent statistics tend to be more reliable - Community-run pools (SupportXMR) have excellent uptime - Commercial pools vary by region ### Recommendations for Mining UI 1. **Build with These 5 Pools First** - SupportXMR (best overall) - Nanopool (best for regions) - Moneroocean (best for variety) - P2Pool (best for decentralization) - WoolyPooly (best alternative) 2. **Enable Auto-Detection** - Detect user location → suggest nearest pool - Test all ports in background → use fastest responsive - Validate wallet format before submission 3. **Implement Fallback Logic** - Primary pool with primary port (3333) - Secondary pool with secondary port (5555) - TLS as ultimate fallback for firewall issues 4. **Add Periodic Verification** - Background task to validate pool connectivity weekly - Alert user if primary pool becomes unavailable - Suggest alternative pools with minimal config changes 5. **Store Pool Preferences** - Remember user's previous pool selection - Allow custom pool configuration for advanced users - Support importing pool lists from files --- ## Appendix: Complete Pool List JSON Reference ```json { "version": "1.0", "last_updated": "2025-12-27", "total_pools": 10, "currency": "XMR", "algorithm": "RandomX", "pools": [ { "id": "supportxmr", "rank": 1, "name": "SupportXMR", "type": "community", "website": "https://www.supportxmr.com", "fee": 0.6, "minimum_payout": 0.003, "payout_scheme": "PPLNS", "stratum_hostname": "pool.supportxmr.com", "default_port": 3333, "ports": [3333, 5555, 7777], "tls_ports": [3334, 5556, 7778], "api_base": "https://www.supportxmr.com/api", "auth_format": "wallet.worker", "status": "active" }, { "id": "moneroocean", "rank": 2, "name": "Moneroocean", "type": "commercial", "website": "https://moneroocean.stream", "fee": 1.0, "minimum_payout": 0.003, "payout_scheme": "PPLNS", "regions": [ {"name": "gulf", "hostname": "gulf.moneroocean.stream"}, {"name": "eu", "hostname": "eu.moneroocean.stream"}, {"name": "asia", "hostname": "asia.moneroocean.stream"} ], "default_port": 10128, "ports": [10128, 10129, 10130], "tls_ports": [20128], "api_base": "https://api.moneroocean.stream", "auth_format": "wallet.worker", "status": "active" } ] } ``` --- ## References & Further Reading ### Official Documentation - Monero Mining: https://www.getmonero.org/resources/user-guides/mining.html - Stratum Protocol: https://github.com/slushpool/stratum-mining/blob/master/README.md ### Pool Comparison Sites - Mining Pool Stats: https://miningpoolstats.stream/monero - Monero Mining Pools: Various community wikis ### Community Resources - r/MoneroMining on Reddit - Monero Forum: https://forum.getmonero.org - Pool GitHub Repositories --- ## Document History | Date | Version | Changes | |------|---------|---------| | 2025-12-27 | 1.0 | Initial comprehensive pool research and database guide |