Introduction
Welcome to the Bitcoin-PoCX documentation. This guide covers Linux command-line setup for running nodes and mining on the Bitcoin-PoCX network.
What is Bitcoin-PoCX?
Bitcoin-PoCX is a Bitcoin fork that replaces Proof of Work with Proof of Capacity (PoCX) consensus. Instead of continuously computing hashes, miners pre-compute hashes once during plotting and store them on disk. Mining then simply reads from these plots, resulting in significantly lower power consumption.
Quick Start
Use the guided installer to get up and running quickly:
curl -sSL https://raw.githubusercontent.com/PoC-Consortium/bitcoin-pocx-docs/main/scripts/install.sh | bash
See Quick Start for details and options.
Choose Your Path
| Role | Description | Time |
|---|---|---|
| Node Operator | Run a full node to support network decentralization | ~15-20 min |
| Miner | Mine solo or with a pool | ~30-40 min |
Network Status
Note: Bitcoin-PoCX is currently in testnet phase. All examples default to testnet. Mainnet instructions are provided for future reference.
Requirements
All guides assume:
- Linux operating system (Debian/Ubuntu, Fedora, Arch)
- Command-line familiarity
- Basic understanding of blockchain concepts
Getting Help
Quick Start
Get up and running with the guided installer.
One-Line Install
curl -sSL https://raw.githubusercontent.com/PoC-Consortium/bitcoin-pocx-docs/main/scripts/install.sh | bash
Or download and review first:
curl -LO https://raw.githubusercontent.com/PoC-Consortium/bitcoin-pocx-docs/main/scripts/install.sh
less install.sh # review the script
bash install.sh
What the Installer Does
The guided installer will:
- Detect your OS (Debian/Ubuntu, Fedora, Arch)
- Install dependencies (curl, tar, etc.)
- Ask your role:
- Node Operator (network support only)
- Solo Miner (mine to your own wallet)
- Pool Miner (mine through a pool)
- Download latest releases from GitHub
- Configure based on your choices:
- Testnet or Mainnet
- Create dedicated
bitcoinuser (optional) - Install systemd services (optional)
- Start services and verify
Installer Options
# Interactive mode (default)
bash install.sh
# Specify role directly
bash install.sh --role node-operator
bash install.sh --role solo-miner
bash install.sh --role pool-miner
# Specify network
bash install.sh --testnet
bash install.sh --mainnet
# Non-interactive with defaults
bash install.sh --role solo-miner --testnet --yes
Manual Installation
Prefer to do it yourself? See the manual guides:
Node Operator Guide
Run a Bitcoin-PoCX full node to support network decentralization, validate transactions, and relay blocks.
Prefer automated setup? Use the Quick Start installer.
Overview
| Purpose | Support network decentralization |
| Setup time | ~15-20 minutes |
| Sync time | Several hours |
| Disk space | 50GB+ (SSD recommended) |
| Wallet | Not required (disabled) |
Prerequisites
System Requirements
| Resource | Minimum | Recommended |
|---|---|---|
| OS | Linux (64-bit) | Ubuntu 22.04+, Debian 12+, Fedora 38+ |
| Disk | 50 GB | 100+ GB (SSD) |
| RAM | 2 GB | 4+ GB |
| Network | Broadband | Stable, low latency |
Network Ports
| Network | Port |
|---|---|
| Mainnet | 8333 |
| Testnet | 18333 |
Install Dependencies
# Debian/Ubuntu
sudo apt update && sudo apt install -y curl tar
# Fedora
sudo dnf install -y curl tar
# Arch
sudo pacman -S --noconfirm curl tar
Installation
Download Latest Release
Network Selection
Bitcoin-PoCX is currently in testnet phase. All examples default to testnet.
# Create directory
mkdir -p ~/bitcoin-pocx && cd ~/bitcoin-pocx
# Get latest release URL from GitHub API
LATEST=$(curl -s https://api.github.com/repos/PoC-Consortium/bitcoin/releases/latest \
| grep "browser_download_url.*x86_64-linux-gnu.tar.gz" \
| cut -d '"' -f 4)
# Download
curl -LO "$LATEST"
# Extract
tar -xzf *.tar.gz
# Find and add to PATH
BINDIR=$(find . -type d -name "bin" | head -1)
export PATH="$PWD/$BINDIR:$PATH"
echo "export PATH=\"$PWD/$BINDIR:\$PATH\"" >> ~/.bashrc
Verify Installation
# Note: -testnet required until mainnet launch
bitcoind -testnet -?
You should see version info: Bitcoin PoCX daemon version v30.x.x
Configuration
Create Data Directory
mkdir -p ~/.bitcoin-pocx-pocx
Create Configuration File
Create ~/.bitcoin-pocx-pocx/bitcoin.conf:
Testnet (Current)
# Network
testnet=1
# Disable wallet (node operator only)
disablewallet=1
# RPC Settings (cookie auth - no password needed)
server=1
# Node Settings
listen=1
maxconnections=40
dbcache=450
[test]
rpcport=18332
Mainnet (After Launch)
# Disable wallet (node operator only)
disablewallet=1
# RPC Settings (cookie auth - no password needed)
server=1
# Node Settings
listen=1
maxconnections=40
dbcache=450
rpcport=8332
Cookie Authentication: With
disablewallet=1, cookie auth is simpler and more secure. Bitcoin Core automatically creates a.cookiefile for local RPC access. No password configuration needed.
Running the Node
Start Manually
bitcoind -daemon
Check Status
# Wait ~30 seconds for initial startup, then check blockchain info
bitcoin-cli -testnet getblockchaininfo
Note: During the first few seconds after startup, you may see a JSON parsing error. This is normal - wait for the initial block download to begin.
Monitor Sync Progress
watch bitcoin-cli -testnet getblockchaininfo
When blocks equals headers and initialblockdownload is false, sync is complete.
Systemd Service (Recommended)
Create Service User
sudo useradd -r -m -d /var/lib/bitcoin-pocx -s /sbin/nologin bitcoin
sudo mkdir -p /var/lib/bitcoin-pocx/.bitcoin-pocx
sudo chown -R bitcoin:bitcoin /var/lib/bitcoin-pocx
Copy Configuration
sudo cp ~/.bitcoin-pocx/bitcoin.conf /var/lib/bitcoin-pocx/.bitcoin-pocx/
sudo chown bitcoin:bitcoin /var/lib/bitcoin-pocx/.bitcoin-pocx/bitcoin.conf
Install Binaries System-Wide
sudo install -m 0755 ~/bitcoin-pocx/*/bin/* /usr/local/bin/
Create Service File
Create /etc/systemd/system/bitcoind.service:
[Unit]
Description=Bitcoin PoCX Node
After=network-online.target
Wants=network-online.target
[Service]
Type=forking
User=bitcoin
Group=bitcoin
ExecStart=/usr/local/bin/bitcoind -daemon -datadir=/var/lib/bitcoin-pocx/.bitcoin-pocx
ExecStop=/usr/local/bin/bitcoin-cli -datadir=/var/lib/bitcoin-pocx/.bitcoin-pocx stop
Restart=on-failure
RestartSec=30
TimeoutStartSec=60
TimeoutStopSec=120
[Install]
WantedBy=multi-user.target
Note: With cookie auth, use
-datadir=to point to the data directory. The cookie file is read automatically.
Enable and Start
sudo systemctl daemon-reload
sudo systemctl enable bitcoind
sudo systemctl start bitcoind
Check Status
sudo systemctl status bitcoind
sudo journalctl -u bitcoind -f
Verification
Check Peer Connections
# Manual run (as your user)
bitcoin-cli -testnet getpeerinfo | grep -E '"addr"|"subver"'
# Systemd (as bitcoin user)
sudo -u bitcoin bitcoin-cli -datadir=/var/lib/bitcoin-pocx/.bitcoin-pocx getpeerinfo | grep -E '"addr"|"subver"'
Check Block Height
# Manual run
bitcoin-cli -testnet getblockcount
# Systemd
sudo -u bitcoin bitcoin-cli -datadir=/var/lib/bitcoin-pocx/.bitcoin-pocx getblockcount
View Logs
# Manual run
tail -f ~/.bitcoin-pocx/testnet/debug.log
# Systemd
sudo journalctl -u bitcoind -f
# or
sudo tail -f /var/lib/bitcoin-pocx/.bitcoin-pocx/testnet/debug.log
Useful Commands
For manual runs (as your user):
| Command | Description |
|---|---|
bitcoin-cli -testnet stop | Stop the node |
bitcoin-cli -testnet getblockcount | Current block height |
bitcoin-cli -testnet getconnectioncount | Number of peers |
bitcoin-cli -testnet getnetworkinfo | Network information |
bitcoin-cli -testnet getmempoolinfo | Mempool status |
For systemd service:
# Prefix with: sudo -u bitcoin bitcoin-cli -datadir=/var/lib/bitcoin-pocx/.bitcoin-pocx
# Example:
sudo -u bitcoin bitcoin-cli -datadir=/var/lib/bitcoin-pocx/.bitcoin-pocx getblockcount
You’re Done!
Your node is now supporting the Bitcoin-PoCX network by:
- Validating transactions and blocks
- Relaying data to other nodes
- Contributing to network decentralization
Next Steps
Want to start mining? See:
- Solo Miner Guide - Mine directly to your wallet
- Pool Miner Guide - Mine through a pool
Miner Guide
Mine Bitcoin-PoCX using Proof of Capacity. Choose between solo mining (direct rewards) or pool mining (consistent rewards).
Prefer automated setup? Use the Quick Start installer.
Solo vs Pool Mining
| Solo Mining | Pool Mining | |
|---|---|---|
| Rewards | 100% of block (when found) | Proportional share |
| Consistency | Variable (depends on capacity) | More consistent |
| Requirements | Run full node | Wallet for assignment only |
| Fees | None | Pool fee (varies) |
| Best for | Large capacity, technical users | Smaller capacity, beginners |
Prerequisites
System Requirements
| Resource | Minimum | Recommended |
|---|---|---|
| OS | Linux (64-bit) | Ubuntu 22.04+, Debian 12+, Fedora 38+ |
| Disk (blockchain) | 50 GB | 100+ GB (SSD) - Solo only |
| Disk (plots) | 100 GB | As much as possible |
| RAM | 4 GB | 8+ GB (for plotting) |
| CPU | 2 cores | 4+ cores (for plotting) |
Pool miners don’t need to store the full blockchain permanently - only temporarily for creating assignments.
Install Dependencies
# Debian/Ubuntu
sudo apt update && sudo apt install -y curl tar openssl
# Fedora
sudo dnf install -y curl tar openssl
# Arch
sudo pacman -S --noconfirm curl tar openssl
Step 1: Install Bitcoin Core PoCX
mkdir -p ~/bitcoin-pocx && cd ~/bitcoin-pocx
# Get latest release
LATEST=$(curl -s https://api.github.com/repos/PoC-Consortium/bitcoin/releases/latest \
| grep "browser_download_url.*x86_64-linux-gnu.tar.gz" \
| cut -d '"' -f 4)
curl -LO "$LATEST"
tar -xzf *.tar.gz
# Add to PATH
BINDIR=$(find . -type d -name "bin" | head -1)
export PATH="$PWD/$BINDIR:$PATH"
echo "export PATH=\"$PWD/$BINDIR:\$PATH\"" >> ~/.bashrc
Step 2: Configure Node
Generate RPC Password
RPCPASS=$(openssl rand -hex 32)
echo "Save this password: $RPCPASS"
Create Configuration
Create ~/.bitcoin-pocx/bitcoin.conf:
mkdir -p ~/.bitcoin-pocx
cat > ~/.bitcoin-pocx/bitcoin.conf << EOF
testnet=1
server=1
rpcuser=bitcoinrpc
rpcpassword=$RPCPASS
listen=1
maxconnections=40
dbcache=450
[test]
rpcport=18332
# Auto-load mining wallet on startup
wallet=mining
EOF
Note: Miners need RPC password authentication (not cookie auth) for the miner to connect. The
wallet=miningline ensures your wallet loads automatically on node restart.
Step 3: Start Node and Create Wallet
# Start node
bitcoind -testnet -daemon
# Wait for startup (~30 seconds)
sleep 30
# Create wallet
bitcoin-cli -testnet createwallet "mining"
# Generate mining address
bitcoin-cli -testnet getnewaddress "mining_rewards"
Save your mining address! You need it for plotting.
⚠️ BACKUP YOUR WALLET - DO THIS NOW ⚠️
🔴 CRITICAL - READ THIS BEFORE CONTINUING 🔴
Your wallet contains the private keys to your mining rewards.
If you lose the wallet without a backup, YOUR COINS ARE LOST FOREVER.
There is NO recovery possible without a backup. No one can help you.
Back it up NOW before proceeding.
# Create backup file
bitcoin-cli -testnet backupwallet ~/mining-wallet-backup.dat
Store this backup safely:
- ✅ Copy to an encrypted USB drive
- ✅ Store in a different physical location (fire, flood, theft)
- ✅ Make multiple backup copies
- ❌ NEVER share your wallet file or private keys with anyone
- ❌ NEVER store backups in cloud services unencrypted
Optional: Export private key for paper backup
# Get private key for your address (KEEP THIS SECRET!)
bitcoin-cli -testnet dumpprivkey "YOUR_MINING_ADDRESS"
Write down this key and store it offline (e.g., safe deposit box, fireproof safe).
For solo mining, wait for the blockchain to sync before mining:
# Check sync progress
bitcoin-cli -testnet getblockchaininfo
Step 4: Install PoCX Framework
cd ~/bitcoin-pocx
# Get latest pocx release (musl build for maximum compatibility)
LATEST=$(curl -s https://api.github.com/repos/PoC-Consortium/pocx/releases/latest \
| grep "browser_download_url.*x86_64-unknown-linux-musl.tar.gz" \
| cut -d '"' -f 4)
curl -LO "$LATEST"
tar -xzf pocx-*.tar.gz
Step 5: Create Plots
Plots are pre-computed hashes stored on disk. More capacity = higher rewards.
./pocx_plotter \
-i YOUR_MINING_ADDRESS \
-p /path/to/plots \
-w 100 \
-x 1
| Option | Description |
|---|---|
-i | Your mining address from Step 3 |
-p | Plot storage location |
-w | Size in warps (1 warp = 1 GiB) |
-x | Compression level (1 = none, 2 = 50%, 4 = 75%) |
Example for 100 GiB plot:
./pocx_plotter -i tpocx1q... -p /mnt/plots -w 100 -x 1
Plotting takes hours to days depending on size. You can proceed to Step 6 while plotting if you have existing plots.
Step 6: Configure Mining
Choose your mining approach:
6a. Solo Mining
Solo mining submits directly to your local node. You keep 100% of block rewards.
Create ~/bitcoin-pocx/miner.yaml:
chains:
- name: 'Bitcoin-PoCX Testnet'
rpc_transport: http
rpc_host: '127.0.0.1'
rpc_port: 18332
rpc_auth:
type: user_pass
username: 'bitcoinrpc'
password: 'YOUR_RPC_PASSWORD'
block_time_seconds: 120
submission_mode: wallet
plot_dirs:
- '/path/to/plots'
Replace YOUR_RPC_PASSWORD with your password from Step 2.
Start mining:
./pocx_miner --config miner.yaml
6b. Pool Mining
Pool mining requires a forging assignment that authorizes the pool to mine on your behalf.
Testnet Pool
| Pool URL | https://pool.testnet.bitcoin-pocx.org |
| Forging Address | tpocx1qp00ljf5sy0kdk4h8x5n4erzdshkzj4cdrhq76k |
| Fee | 1% |
| Minimum Payout | 1.0 BTCX |
Create Forging Assignment
bitcoin-cli -testnet create_assignment \
"YOUR_MINING_ADDRESS" \
"tpocx1qp00ljf5sy0kdk4h8x5n4erzdshkzj4cdrhq76k"
- First argument: your mining/plot address
- Second argument: pool’s forging address
Note: Assignments become active after 30 blocks (~1 hour).
Verify your assignment:
bitcoin-cli -testnet get_assignment "YOUR_MINING_ADDRESS"
Revoking Assignments
To switch pools or return to solo mining, you must revoke your current assignment:
bitcoin-cli -testnet revoke_assignment "YOUR_MINING_ADDRESS"
Important timing:
- Revocation takes effect after 720 blocks (~24 hours)
- After revocation completes, wait before creating a new assignment
- New assignments then take another 30 blocks (~1 hour) to activate
So switching pools takes approximately 25 hours total.
Configure Miner for Pool
Create ~/bitcoin-pocx/miner.yaml:
chains:
- name: 'Testnet Pool'
rpc_transport: https
rpc_host: 'pool.testnet.bitcoin-pocx.org'
rpc_port: 443
block_time_seconds: 120
submission_mode: pool
plot_dirs:
- '/path/to/plots'
Start mining:
./pocx_miner --config miner.yaml
Stop Local Node (Optional)
Once your assignment is confirmed (after 30 blocks), pool miners can stop the local node:
bitcoin-cli -testnet stop
Verification
Check Miner Output
Working miner shows:
[INFO] Connected to local/pool at http://...
[INFO] Scanning plots: /path/to/plots
[INFO] Found X plot files (Y GB capacity)
[INFO] Waiting for new block...
Solo Mining
# Check wallet balance (after finding blocks)
bitcoin-cli -testnet getbalance
Pool Mining
Check your pool’s dashboard for:
- Your address appears as active miner
- Capacity matches your plots
- Submissions being recorded
Block Explorer
Check your address: https://explorer.testnet.bitcoin-pocx.org/
Systemd Services
Miner Service
Create /etc/systemd/system/pocx_miner.service:
[Unit]
Description=PoCX Miner
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=YOUR_USERNAME
ExecStart=/home/YOUR_USERNAME/bitcoin-pocx/pocx_miner --config /home/YOUR_USERNAME/bitcoin-pocx/miner.yaml
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
For solo mining, also add After=bitcoind.service and see Node Operator Guide for the bitcoind service.
sudo systemctl daemon-reload
sudo systemctl enable pocx_miner
sudo systemctl start pocx_miner
Troubleshooting
Miner can’t connect
- Solo: Verify bitcoind is running and synced
- Pool: Check pool URL and status
- Verify RPC credentials match
No plots found
- Check plot path in
miner.yaml - Verify plots exist:
ls /path/to/plots/*.plot - Ensure plots match your wallet address
Pool doesn’t see capacity
- Wait for activation - assignments take 30 blocks (~1 hour at 120s/block) to activate
- Verify assignment is confirmed:
bitcoin-cli -testnet get_assignment "YOUR_MINING_ADDRESS" - Check assignment hasn’t expired
- Ensure plots are for correct address
No rewards
- Solo: Normal - depends on capacity vs network
- Pool: Check minimum payout threshold
Maintenance
Renew Pool Assignments
Before expiration, create a new assignment (renewing the same pool doesn’t require revoking):
bitcoind -testnet -daemon # if stopped
sleep 30
bitcoin-cli -testnet create_assignment \
"YOUR_MINING_ADDRESS" \
"tpocx1qp00ljf5sy0kdk4h8x5n4erzdshkzj4cdrhq76k"
Add More Capacity
Create additional plots and add to miner.yaml:
plot_dirs:
- '/path/to/plots'
- path: '/path/to/more/plots'
Restart miner to pick up new plots.
Configuration Reference
Complete reference for Bitcoin-PoCX configuration options.
Bitcoin Core PoCX (bitcoin.conf)
Location
| Setup | Path |
|---|---|
| Manual | ~/.bitcoin-pocx/bitcoin.conf |
| Systemd | /var/lib/bitcoin/.bitcoin/bitcoin.conf |
Authentication
Cookie Auth (Recommended for Node Operators)
No configuration needed. Bitcoin Core creates a .cookie file automatically:
- Mainnet:
~/.bitcoin-pocx/.cookie - Testnet:
~/.bitcoin-pocx/testnet/.cookie
RPC Password (Required for Mining)
server=1
rpcuser=bitcoinrpc
rpcpassword=YOUR_SECURE_PASSWORD
Network Options
| Option | Description | Default |
|---|---|---|
testnet=1 | Use testnet | 0 (mainnet) |
regtest=1 | Use regtest | 0 |
RPC Options
| Option | Description | Default |
|---|---|---|
server=1 | Enable RPC server | 0 |
rpcuser= | RPC username | - |
rpcpassword= | RPC password | - |
rpcport= | RPC port | 8332 (18332 testnet) |
rpcbind= | RPC bind address | 127.0.0.1 |
rpcallowip= | Allow RPC from IP | 127.0.0.1 |
P2P Network Options
| Option | Description | Default |
|---|---|---|
listen=1 | Accept incoming connections | 1 |
port= | P2P port | 8333 (18333 testnet) |
maxconnections= | Max peer connections | 125 |
addnode= | Add specific peer | - |
connect= | Connect only to specific peers | - |
Wallet Options
| Option | Description | Default |
|---|---|---|
disablewallet=1 | Disable wallet | 0 |
wallet= | Load specific wallet | - |
Performance Options
| Option | Description | Default |
|---|---|---|
dbcache= | Database cache MB | 450 |
maxmempool= | Mempool size MB | 300 |
prune= | Prune blockchain MB | 0 (disabled) |
Example Configurations
Node Operator (Testnet, Cookie Auth)
testnet=1
disablewallet=1
server=1
listen=1
maxconnections=40
dbcache=450
[test]
rpcport=18332
Solo Miner (Testnet, RPC Password)
testnet=1
server=1
rpcuser=bitcoinrpc
rpcpassword=YOUR_PASSWORD
listen=1
maxconnections=40
dbcache=450
[test]
rpcport=18332
wallet=mining
PoCX Miner (miner.yaml)
Location
Typically ~/bitcoin-pocx/miner.yaml or /var/lib/bitcoin/miner.yaml
Chain Configuration
chains:
- name: 'local' # Friendly name
rpc_transport: http # Transport type
rpc_host: '127.0.0.1' # Node/pool host
rpc_port: 18332 # RPC port
rpc_auth: # Auth (required for solo)
type: user_pass
username: 'bitcoinrpc'
password: 'YOUR_PASSWORD'
block_time_seconds: 120 # Block time
submission_mode: wallet # wallet or pool
Plot Configuration
plot_dirs:
- '/path/to/plots' # Directory containing plot files
Multiple plot directories:
plot_dirs:
- '/mnt/disk1/plots'
- path: '/mnt/disk2/plots'
- path: '/mnt/disk3/plots'
Full Example (Solo Mining)
chains:
- name: 'Bitcoin-PoCX Testnet'
rpc_transport: http
rpc_host: '127.0.0.1'
rpc_port: 18332
rpc_auth:
type: user_pass
username: 'bitcoinrpc'
password: 'your_rpc_password'
block_time_seconds: 120
submission_mode: wallet
plot_dirs:
- '/home/user/plots'
- path: '/mnt/external/plots'
Full Example (Pool Mining)
chains:
- name: 'Testnet Pool'
rpc_transport: https
rpc_host: 'pool.testnet.bitcoin-pocx.org'
rpc_port: 443
block_time_seconds: 120
submission_mode: pool
plot_dirs:
- '/home/user/plots'
PoCX Plotter
Command Line Options
| Option | Description |
|---|---|
-i, --id | Your mining address (required) |
-p, --path | Output directory (required) |
-w, --warps | Size in warps (1 warp = 1 GiB) |
-x, --compression | Compression level (1, 2, or 4) |
-c, --cpu | CPU threads to use |
-g, --gpu | GPU(s) for plotting |
-n, --num | Number of files (0 = fill disk) |
Compression Levels
| Level | Space Savings | Mining CPU Use |
|---|---|---|
| 1 (X1) | None | Lowest |
| 2 (X2) | ~50% | Medium |
| 4 (X4) | ~75% | Highest |
Example
./pocx_plotter \
-i tpocx1qyouraddress... \
-p /mnt/plots \
-w 500 \
-x 1 \
-c 4
Network Ports Reference
| Service | Mainnet | Testnet |
|---|---|---|
| Bitcoin P2P | 8333 | 18333 |
| Bitcoin RPC | 8332 | 18332 |
File Locations Reference
| File | Purpose |
|---|---|
~/.bitcoin-pocx/bitcoin.conf | Node configuration |
~/.bitcoin-pocx/.cookie | Cookie auth (mainnet) |
~/.bitcoin-pocx/testnet/.cookie | Cookie auth (testnet) |
~/.bitcoin-pocx/testnet/ | Testnet blockchain data |
~/.bitcoin-pocx/wallets/ | Wallet files |
~/.bitcoin-pocx/debug.log | Node logs (mainnet) |
~/.bitcoin-pocx/testnet/debug.log | Node logs (testnet) |
Troubleshooting
Common issues and solutions.
Node Issues
Node won’t start
Symptoms: bitcoind exits immediately or shows errors.
Check logs:
tail -50 ~/.bitcoin-pocx/debug.log # mainnet
tail -50 ~/.bitcoin-pocx/testnet/debug.log # testnet
Common causes:
-
Port already in use
sudo lsof -i :8333 # mainnet sudo lsof -i :18333 # testnet -
Corrupt database
bitcoind -reindex # takes time -
Insufficient disk space
df -h ~/.bitcoin-pocx
Node not syncing
Symptoms: Block height not increasing, few or no peers.
Check peer connections:
bitcoin-cli -testnet getconnectioncount
bitcoin-cli -testnet getpeerinfo
Solutions:
-
Check firewall
sudo ufw allow 18333/tcp -
Add peers manually in
bitcoin.conf:addnode=seed.testnet.bitcoin-pocx.org -
Check internet
curl -s https://api.github.com | head -1
RPC connection refused
Symptoms: bitcoin-cli shows “Could not connect to the server”
Check:
-
Node running?
pgrep bitcoind -
RPC enabled? Ensure
server=1inbitcoin.conf -
Correct network flag?
bitcoin-cli -testnet getblockchaininfo -
Cookie auth working?
# Check cookie file exists ls -la ~/.bitcoin-pocx/testnet/.cookie
Miner Issues
Miner can’t connect to node
Symptoms: Connection refused, timeout errors.
Check:
-
Node running and synced?
bitcoin-cli -testnet getblockchaininfo -
RPC password auth enabled? Mining requires
rpcuser/rpcpasswordinbitcoin.conf(not cookie auth) -
Credentials match? Compare
bitcoin.confandminer.yaml -
Correct URL?
- Testnet:
http://127.0.0.1:18332 - Mainnet:
http://127.0.0.1:8332
- Testnet:
No plots found
Symptoms: Miner reports 0 capacity.
Check:
-
Plot path correct?
ls -la /path/to/plots/*.plot -
Permissions?
sudo -u bitcoin ls /path/to/plots/ -
Plot format valid? Ensure plots created with
pocx-plotter
Miner can’t connect to pool
Symptoms: Connection timeout, refused.
Check:
- Pool URL correct? Verify with pool docs
- Pool online? Check status page
- Network access?
curl -v http://pool-url:port
Plotting Issues
Plotting fails or corrupts
Solutions:
-
Check disk space
df -h /path/to/plots -
Check disk health
sudo smartctl -a /dev/sdX -
Resume interrupted plots (if supported)
Plotting too slow
Tips:
- More threads:
./pocx-plotter --threads 8 - Check I/O:
iostat -x 1 - SSD for temp files if plotter supports it
Pool Mining Issues
Assignment not recognized
Check:
-
Assignment confirmed?
bitcoin-cli -testnet get_assignment "YOUR_MINING_ADDRESS" -
Correct pool address?
-
Assignment expired?
No pool rewards
Check:
- Minimum payout threshold - most pools have one
- Correct payout address in pool dashboard
- Miner submitting? Check logs for submissions
Systemd Service Issues
Service won’t start
sudo systemctl status bitcoind
sudo journalctl -u bitcoind -n 50
Common issues:
-
Permissions
sudo chown -R bitcoin:bitcoin /var/lib/bitcoin -
Path issues - verify paths in service file
-
Config errors - check
bitcoin.confsyntax
Service starts then stops
Check:
- Exit code:
sudo systemctl status bitcoind - Memory limits - service may be OOM killed
- Logs:
sudo journalctl -u bitcoind --since "5 minutes ago"
Getting Help
If stuck:
- Check debug logs for specific errors
- Search GitHub issues
- Discord: https://discord.gg/enQ57bgJdq
- Telegram: https://t.me/+aqavnqlq2vg0Mzhk
When asking for help, include:
- OS and version
- Config files (redact passwords)
- Full error messages
- Steps to reproduce