320 lines
7.9 KiB
Markdown
320 lines
7.9 KiB
Markdown
|
|
# XMR Pool Database - Quick Reference
|
||
|
|
|
||
|
|
**tl;dr**: Copy `xmr-pools-database.json` to your app, use it to populate pool selection UI, generate connection strings automatically.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Top 5 Pools to Recommend
|
||
|
|
|
||
|
|
| Pool | URL | Port | Fee | Min Payout | Notes |
|
||
|
|
|------|-----|------|-----|-----------|-------|
|
||
|
|
| **SupportXMR** | pool.supportxmr.com | 3333 | 0.6% | 0.003 | Best overall, no registration |
|
||
|
|
| **P2Pool** | p2pool.io | 3333 | 0% | 0.0 | Decentralized, instant payouts |
|
||
|
|
| **Nanopool** | xmr-eu1.nanopool.org | 14433 | 1.0% | 0.003 | Global network, mobile app |
|
||
|
|
| **Moneroocean** | gulf.moneroocean.stream | 10128 | 1.0% | 0.003 | Multi-algo, auto-switching |
|
||
|
|
| **WoolyPooly** | xmr.woolypooly.com | 3333 | 0.5% | 0.003 | Good fees, merged mining |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Connection Details Formula
|
||
|
|
|
||
|
|
For any pool from the database:
|
||
|
|
|
||
|
|
```
|
||
|
|
URL: stratum+tcp://[HOSTNAME]:[PORT]
|
||
|
|
Username: [WALLET_ADDRESS].[WORKER_NAME]
|
||
|
|
Password: x
|
||
|
|
```
|
||
|
|
|
||
|
|
Example:
|
||
|
|
```
|
||
|
|
URL: stratum+tcp://pool.supportxmr.com:3333
|
||
|
|
Username: 4ABC1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF1234567890AB.miner1
|
||
|
|
Password: x
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Standard Port Mapping
|
||
|
|
|
||
|
|
Use this for **any** pool following standard conventions:
|
||
|
|
|
||
|
|
```
|
||
|
|
3333 = Standard (auto difficulty) → Try this first
|
||
|
|
4444 = Medium difficulty
|
||
|
|
5555 = High difficulty → Use for powerful miners
|
||
|
|
6666 = Very high difficulty
|
||
|
|
|
||
|
|
Add "4" to port for TLS:
|
||
|
|
3334 = Standard over TLS (encrypted)
|
||
|
|
4445 = Medium over TLS
|
||
|
|
5556 = High over TLS
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Quick Code Snippets
|
||
|
|
|
||
|
|
### TypeScript: Load & Use Pool Database
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
import pools from './xmr-pools-database.json';
|
||
|
|
|
||
|
|
// Get a specific pool
|
||
|
|
const supportxmr = pools.pools.find(p => p.id === 'supportxmr');
|
||
|
|
|
||
|
|
// Generate connection string
|
||
|
|
const url = `${supportxmr.stratum_servers[0].ports[0].protocol}://${supportxmr.stratum_servers[0].hostname}:${supportxmr.stratum_servers[0].ports[0].port}`;
|
||
|
|
const username = `${walletAddress}.miner1`;
|
||
|
|
const password = supportxmr.authentication.password_default;
|
||
|
|
|
||
|
|
console.log(`URL: ${url}`);
|
||
|
|
console.log(`Username: ${username}`);
|
||
|
|
console.log(`Password: ${password}`);
|
||
|
|
```
|
||
|
|
|
||
|
|
### React: Pool Selector Component
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
<select onChange={(e) => setPoolId(e.target.value)}>
|
||
|
|
{pools.recommended_pools.beginners.map(poolId => {
|
||
|
|
const pool = pools.pools.find(p => p.id === poolId);
|
||
|
|
return (
|
||
|
|
<option key={poolId} value={poolId}>
|
||
|
|
{pool.name} - {pool.fee_percent}% fee
|
||
|
|
</option>
|
||
|
|
);
|
||
|
|
})}
|
||
|
|
</select>
|
||
|
|
```
|
||
|
|
|
||
|
|
### Go: Load Pool Database
|
||
|
|
|
||
|
|
```go
|
||
|
|
import "encoding/json"
|
||
|
|
import "io/ioutil"
|
||
|
|
|
||
|
|
var pools PoolDatabase
|
||
|
|
data, _ := ioutil.ReadFile("xmr-pools-database.json")
|
||
|
|
json.Unmarshal(data, &pools)
|
||
|
|
|
||
|
|
pool := pools.GetPool("supportxmr")
|
||
|
|
config := GenerateConnectionConfig(pool, walletAddr, "miner1", false, "standard")
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Connection Testing Checklist
|
||
|
|
|
||
|
|
Before recommending a pool:
|
||
|
|
|
||
|
|
- [ ] Test TCP connection: `telnet pool.hostname 3333`
|
||
|
|
- [ ] Verify wallet address format (95 chars, starts with 4 or 8)
|
||
|
|
- [ ] Check pool website is online
|
||
|
|
- [ ] Confirm fee information matches database
|
||
|
|
- [ ] Test connection with mining software
|
||
|
|
- [ ] Verify shares are accepted
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Wallet Address Validation
|
||
|
|
|
||
|
|
XMR addresses must be:
|
||
|
|
- **95 characters** long
|
||
|
|
- Start with **4** (mainnet) or **8** (stagenet)
|
||
|
|
- Contain only **Base58 characters** (no 0, O, I, l)
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
function isValidXMRAddress(addr: string): boolean {
|
||
|
|
return /^[48][1-9A-HJ-NP-Za-km-z]{94}$/.test(addr);
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Recommended Pool by User Type
|
||
|
|
|
||
|
|
**Beginners** (easiest setup):
|
||
|
|
1. SupportXMR - No registration, great UI
|
||
|
|
2. Nanopool - Mobile app, multiple regions
|
||
|
|
3. WoolyPooly - Low fees, simple interface
|
||
|
|
|
||
|
|
**Advanced Users** (best performance):
|
||
|
|
1. P2Pool - Zero fees, privacy-focused
|
||
|
|
2. Moneroocean - Multi-algo flexibility
|
||
|
|
3. SupportXMR - Open source, transparent
|
||
|
|
|
||
|
|
**Solo Miners** (small variance):
|
||
|
|
1. P2Pool - True solo mining capability
|
||
|
|
2. SupportXMR - Dedicated solo mode
|
||
|
|
3. Nanopool - Solo option available
|
||
|
|
|
||
|
|
**Privacy-Focused**:
|
||
|
|
1. P2Pool - Decentralized, no tracking
|
||
|
|
2. SupportXMR - No registration required
|
||
|
|
3. Moneroocean - Doesn't require personal info
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Fee Comparison
|
||
|
|
|
||
|
|
| Pool | Fee | Type | Recommendation |
|
||
|
|
|------|-----|------|---|
|
||
|
|
| P2Pool | 0% | Decentralized | Best for experienced miners |
|
||
|
|
| WoolyPooly | 0.5% | Commercial | Best value |
|
||
|
|
| SupportXMR | 0.6% | Community | Best for beginners |
|
||
|
|
| Moneroash | 0.6% | Commercial | Good alternative |
|
||
|
|
| Moneroocean | 1.0% | Commercial | Multi-algo option |
|
||
|
|
| Nanopool | 1.0% | Commercial | Global coverage |
|
||
|
|
| HashVault | 0.9% | Commercial | Reliable backup |
|
||
|
|
|
||
|
|
**Earnings impact at 100 H/s:**
|
||
|
|
- 0.5% pool = slightly higher earnings
|
||
|
|
- 1.0% pool = ~0.5% less than best
|
||
|
|
- Difference negligible for small miners
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Regional Server Selection
|
||
|
|
|
||
|
|
**Europe**: Use EU servers
|
||
|
|
- Nanopool: `xmr-eu1.nanopool.org`
|
||
|
|
- Moneroocean: `eu.moneroocean.stream`
|
||
|
|
|
||
|
|
**United States**: Use US servers
|
||
|
|
- Nanopool: `xmr-us-east1.nanopool.org` or `xmr-us-west1.nanopool.org`
|
||
|
|
- Moneroocean: `gulf.moneroocean.stream`
|
||
|
|
|
||
|
|
**Asia**: Use Asia servers
|
||
|
|
- Nanopool: `xmr-asia1.nanopool.org`
|
||
|
|
- Moneroocean: `asia.moneroocean.stream`
|
||
|
|
|
||
|
|
**General**: Use closest region to minimize latency
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Troubleshooting Quick Fixes
|
||
|
|
|
||
|
|
| Problem | Solution |
|
||
|
|
|---------|----------|
|
||
|
|
| Connection refused | Try TLS port (add 1 to normal port) |
|
||
|
|
| Shares rejected | Verify wallet address format |
|
||
|
|
| High stale shares | Switch to closer regional server |
|
||
|
|
| Pool offline | Check website, switch to backup pool |
|
||
|
|
| Very slow payouts | Check minimum payout threshold |
|
||
|
|
| Lost connection | Increase socket timeout value |
|
||
|
|
| Wrong difficulty | Try different difficulty port |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## One-Click Connection Strings
|
||
|
|
|
||
|
|
Just copy & paste these (replace WALLET_ADDRESS):
|
||
|
|
|
||
|
|
```
|
||
|
|
SupportXMR:
|
||
|
|
stratum+tcp://pool.supportxmr.com:3333
|
||
|
|
WALLET_ADDRESS.worker1
|
||
|
|
x
|
||
|
|
|
||
|
|
Nanopool (EU):
|
||
|
|
stratum+tcp://xmr-eu1.nanopool.org:14433
|
||
|
|
WALLET_ADDRESS.worker1
|
||
|
|
x
|
||
|
|
|
||
|
|
Moneroocean:
|
||
|
|
stratum+tcp://gulf.moneroocean.stream:10128
|
||
|
|
WALLET_ADDRESS.worker1
|
||
|
|
x
|
||
|
|
|
||
|
|
P2Pool:
|
||
|
|
stratum+tcp://p2pool.io:3333
|
||
|
|
WALLET_ADDRESS.worker1
|
||
|
|
(no password)
|
||
|
|
|
||
|
|
WoolyPooly:
|
||
|
|
stratum+tcp://xmr.woolypooly.com:3333
|
||
|
|
WALLET_ADDRESS.worker1
|
||
|
|
x
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Database File Locations
|
||
|
|
|
||
|
|
```
|
||
|
|
/home/snider/GolandProjects/Mining/docs/
|
||
|
|
├── xmr-pools-database.json ← Use this in your app
|
||
|
|
├── pool-research.md ← Full details & methodology
|
||
|
|
├── pool-integration-guide.md ← Code examples (TypeScript/Go)
|
||
|
|
├── POOL-RESEARCH-README.md ← Implementation guide
|
||
|
|
├── RESEARCH-SUMMARY.txt ← Executive summary
|
||
|
|
└── QUICK-REFERENCE.md ← This file
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Next Steps (5 Minutes)
|
||
|
|
|
||
|
|
1. Copy `xmr-pools-database.json` to your project
|
||
|
|
2. Create dropdown with top 5 pools
|
||
|
|
3. Generate connection string on selection
|
||
|
|
4. Show connection details to user
|
||
|
|
5. Done! Test with mining software
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## One-Page Cheat Sheet
|
||
|
|
|
||
|
|
**For UI Developers:**
|
||
|
|
- Load `xmr-pools-database.json`
|
||
|
|
- Display `pools[].name` in dropdown
|
||
|
|
- On select, call `PoolConnector.generateConnectionConfig()`
|
||
|
|
- Show URL, username, password to user
|
||
|
|
- Save selection to localStorage
|
||
|
|
|
||
|
|
**For Backend Developers:**
|
||
|
|
- Load pool database on startup
|
||
|
|
- Expose `/api/pools` endpoint
|
||
|
|
- Implement connection testing
|
||
|
|
- Return working pools in response
|
||
|
|
- Update database monthly
|
||
|
|
|
||
|
|
**For DevOps:**
|
||
|
|
- Set up weekly pool validation
|
||
|
|
- Monitor pool uptime
|
||
|
|
- Alert if primary pool down
|
||
|
|
- Update `last_verified` timestamp
|
||
|
|
- Track historical changes
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Why This Matters
|
||
|
|
|
||
|
|
Without this database:
|
||
|
|
- Setup takes 30 minutes per pool
|
||
|
|
- High chance of connection errors
|
||
|
|
- Need manual updates when pools change
|
||
|
|
- Scale to 100 coins = 3000+ hours
|
||
|
|
|
||
|
|
With this database:
|
||
|
|
- Setup takes 5 minutes per pool
|
||
|
|
- Automatic validation and testing
|
||
|
|
- Updates in one place for entire app
|
||
|
|
- Scale to 100 coins = Easy!
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Support
|
||
|
|
|
||
|
|
- **Full Details**: See `pool-research.md`
|
||
|
|
- **Code Examples**: See `pool-integration-guide.md`
|
||
|
|
- **Troubleshooting**: See `RESEARCH-SUMMARY.txt`
|
||
|
|
- **Implementation Plan**: See `POOL-RESEARCH-README.md`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**Last Updated**: December 27, 2025
|
||
|
|
**Version**: 1.0.0
|
||
|
|
**Status**: Ready for production
|