Dashboard: - Add aggregate stats across all running miners (total hashrate, shares) - Add workers table with per-miner stats, efficiency, and controls - Show hashrate bars and efficiency badges for each worker - Support stopping individual workers or all at once TT-Miner: - Implement Install, Start, GetStats, CheckInstallation, Uninstall - Add TT-Miner to Manager's StartMiner and ListAvailableMiners - Support GPU-specific config options (devices, intensity, cliArgs) Chart: - Improve styling with WA-Pro theme variables - Add hashrate unit formatting (H/s, kH/s, MH/s) - Better tooltip and axis styling Also: - Fix XMRig download URLs (linux-static-x64, windows-x64) - Add Playwright E2E testing infrastructure - Add XMR pool research documentation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
23 KiB
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
- Japan:
- 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
-
PPLNS (Pay Per Last N Shares)
- Most common for XMR
- Fair distribution based on recent work
- Used by: SupportXMR, MoneroHash, etc.
-
PPS (Pay Per Share)
- Instant flat payment per share
- Less common for XMR
- Higher operator risk
-
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
/apiendpoint documentation - GitHub repositories (many are open source)
- Pool status pages (
/stats,/api/stats,/api/pools)
Tier 2: Pool Websites
/helpor/getting-startedpages- 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:
# 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:
# 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:
# 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_comstratum://vsstratum+tcp://→ normalize to canonical form- Port numbers → standardize format
- Build a mapping table of aliases
Challenge 3: Regional Variations
Solution:
- Map all regional servers:
{ "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
{
"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
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
// 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
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
- Create generic pool scraper framework
- Build validation pipeline
- Implement normalized data storage
- 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:
# 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
#!/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
- SupportXMR (0.6% fee, no registration, reliable)
- Nanopool (1% fee, worldwide servers, mobile app)
- WoolyPooly (0.5% fee, merged mining support)
For Advanced Users
- P2Pool (0% fee, decentralized, higher variance)
- Moneroocean (1% fee, multi-algo switching)
- MoneroHash (0.5% fee, low fees, good uptime)
For Solo Mining
- P2Pool - True solo mining on a pool network
- SupportXMR - Dedicated solo mining feature
- Nanopool - Solo mode available
Part 9: Code for Pool Database Integration
Python Implementation (Pool Fetcher)
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
-
Port Standardization Works
- 90% of XMR pools follow the 3333/4444/5555 pattern
- This allows predictive configuration
-
Fee Competition
- Market range: 0.5% - 1% (for good pools)
- P2Pool stands out at 0%
- Higher fees (>2%) are NOT justified
-
TLS is Optional but Growing
- All major pools now offer TLS ports
- Adds security without performance cost
- Port number convention: main_port - 1 (usually)
-
API Availability is Inconsistent
- Some pools have comprehensive APIs
- Others require web scraping
- GitHub repositories often have better documentation than websites
-
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
-
Build with These 5 Pools First
- SupportXMR (best overall)
- Nanopool (best for regions)
- Moneroocean (best for variety)
- P2Pool (best for decentralization)
- WoolyPooly (best alternative)
-
Enable Auto-Detection
- Detect user location → suggest nearest pool
- Test all ports in background → use fastest responsive
- Validate wallet format before submission
-
Implement Fallback Logic
- Primary pool with primary port (3333)
- Secondary pool with secondary port (5555)
- TLS as ultimate fallback for firewall issues
-
Add Periodic Verification
- Background task to validate pool connectivity weekly
- Alert user if primary pool becomes unavailable
- Suggest alternative pools with minimal config changes
-
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
{
"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 |