Decentralized mining for Salvium: no pool fees, no registration
P2Pool mining involves three components running on your machine, each connecting to its respective network:
[Miner/XMRig] ----> [p2pool-salvium] <----> [salviumd]
:3333 | |
| |
v v
P2Pool Network Salvium Network
(Sidechain) (Blockchain)
You'll need three pieces of software: the Salvium node (salviumd), p2pool-salvium, and a miner. XMRig is the standard choice.
Download the latest Salvium release:
Salvium Releases# Extract the archive
tar -xvf salvium-linux-x64-*.tar.bz2
cd salvium-*
Download the latest p2pool-salvium binary release:
P2Pool ReleasesLinux builds are available for multiple architectures. Pick the one matching your hardware:
# Extract p2pool (substitute the archive name for your architecture)
tar -xvf p2pool-salvium-linux-*.tar.gz
Linux x64 (glibc) binary complains about missing .so files or a too-old glibc, grab the Linux x64 (static/musl) variant instead. It has no external library requirements and runs on essentially any 64-bit x86 Linux.
Download the latest XMRig miner for Linux:
XMRig DownloadsKeep XMRig in its own directory rather than mixing its files in with p2pool's:
mkdir -p ~/xmrig
cd ~/xmrig
tar -xvf /path/to/xmrig-*-linux-*.tar.gz --strip-components=1
For a robust setup, run salviumd as a dedicated system user managed by systemd. This keeps the node isolated, ensures it starts on boot, and restarts automatically if it crashes.
Create a system user account for the daemon to run under:
sudo useradd -m -s /bin/bash salvium
Move (or extract) the salvium binaries into /home/salvium/salvium/ and ensure the user owns them:
sudo mkdir -p /home/salvium/salvium
sudo cp salvium-*/* /home/salvium/salvium/
sudo mkdir -p /home/salvium/.salvium/logs
sudo chown -R salvium:salvium /home/salvium
Create the config file at /home/salvium/.salvium/salvium.conf. Below is the configuration used on the WhiskyMine node, which you can use as a starting point:
data-dir=/home/salvium/.salvium
log-file=/home/salvium/.salvium/logs/salvium.log
log-level=0
max-log-file-size=10485760
max-concurrency=12
public-node=0
zmq-rpc-bind-ip=0.0.0.0
zmq-rpc-bind-port=19083
zmq-pub=tcp://0.0.0.0:19084
out-peers=128
in-peers=128
enforce-dns-checkpointing=1
prep-blocks-threads=8
fast-block-sync=0
show-time-stats=1
block-sync-size=0
check-updates=disabled
enable-dns-blocklist=1
disable-dns-checkpoints=0
rpc-ssl=disabled
restricted-rpc=0
disable-rpc-ban=1
no-igd=0
no-zmq=0
sync-pruned-blocks=0
prune-blockchain=no
db-sync-mode=safe:sync
p2p-bind-ip=0.0.0.0
p2p-bind-port=19080
pad-transactions=no
rpc-bind-port=19081
rpc-bind-ip=0.0.0.0
confirm-external-bind=1
rpc-restricted-bind-ip=0.0.0.0
rpc-restricted-bind-port=19089
no-fluffy-blocks=1
rpc-max-connections-per-public-ip=4096
rpc-max-connections-per-private-ip=4096
rpc-max-connections=4096
max-connections-per-ip=4096
add-priority-node=seed01.salvium.io:19080
add-priority-node=seed02.salvium.io:19080
add-priority-node=seed03.salvium.io:19080
zmq-pub entry is required for p2pool-salvium to receive block notifications. Adjust max-concurrency and prep-blocks-threads to match your CPU.
Create /etc/systemd/system/salviumd.service with the following contents:
[Unit]
Description=Salvium Node Daemon
After=network-online.target
[Service]
ExecStart=/home/salvium/salvium/salviumd --detach --config-file=/home/salvium/.salvium/salvium.conf --pidfile /run/salvium/salviumd.pid
ExecStartPost=/bin/sleep 1
PIDFile=/run/salvium/salviumd.pid
Type=forking
Restart=always
RestartSec=30
User=salvium
Group=salvium
RuntimeDirectory=salvium
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now salviumd
sudo systemctl status salviumd
Watch the sync progress via the journal or the log file:
sudo journalctl -u salviumd -f
# or
sudo tail -f /home/salvium/.salvium/logs/salvium.log
Initial sync may take several hours. When complete, you'll see output like:
Height: 425000/425000 (100.0%) on mainnet, net hash 1.23 GH/s...
We'll set up a dedicated ~/p2pool/ directory in your regular user account (not the salvium system user) and run p2pool inside a tmux session via a small control script so it survives terminal disconnects.
The run script below uses tmux to keep p2pool running across SSH disconnects:
sudo apt install tmux
Create the working directory and drop the p2pool-salvium binary you extracted in Step 1 into it:
mkdir -p ~/p2pool
cp /path/to/extracted/p2pool-salvium ~/p2pool/
chmod +x ~/p2pool/p2pool-salvium
Save the following as ~/run_p2pool.sh. It auto-launches itself inside a detached tmux session named p2pool, so you can disconnect from your shell (or SSH) without killing the process:
#!/bin/bash
if [ -z "$TMUX" ]; then
exec tmux new-session -d -s p2pool "$0"
exit # Exit the current script after starting the new tmux session
fi
cd ~/p2pool/
./p2pool-salvium \
--host 127.0.0.1 \
--rpc-port 19081 \
--zmq-port 19084 \
--wallet SC1YourAddressHere \
--stratum 0.0.0.0:3333 \
--loglevel 3 \
--p2p 0.0.0.0:38889 \
--inpeers 64 \
--outpeers 64
Replace SC1YourAddressHere with your actual Salvium wallet address, then make it executable and run it:
chmod +x ~/p2pool/run_p2pool.sh
~/p2pool/run_p2pool.sh
The script starts p2pool in a detached tmux session. To watch its output:
# Attach to the running p2pool session
tmux attach -t p2pool
# Detach (leaves p2pool running): press Ctrl-b then d
# List running tmux sessions
tmux ls
# Kill the session (stops p2pool)
tmux kill-session -t p2pool
Ctrl-b. So Ctrl-b then d detaches, Ctrl-b then [ enters scrollback mode (use arrow keys / PgUp / PgDn, press q to exit).
P2Pool will start syncing its own sidechain. When ready, you'll see:
SIDECHAIN LOADED - MINING IS NOW ENABLED
Point your miner to p2pool's stratum server:
Pool: 127.0.0.1:3333
Username: YOUR_SALVIUM_ADDRESS
Password: x
cd ~/xmrig
./xmrig -o 127.0.0.1:3333 -u SC1YourAddressHere -p x --algo rx/0
Check the p2pool observer to see your miner:
P2Pool ObserverLook for:
Download Salvium, P2Pool, and XMRig for Windows. From the P2Pool releases page, grab the Windows x64 archive:
Salvium (Windows) P2Pool (Windows) XMRig (Windows)Extract each ZIP file to its own folder. Salvium and p2pool can share a folder, but XMRig should stay in a separate folder of its own:
C:\Salvium\
├── salviumd.exe
├── salvium-wallet-cli.exe
├── salvium-wallet-rpc.exe
└── p2pool-salvium.exe
C:\xmrig\
├── xmrig.exe
├── WinRing0x64.sys
└── config.json
xmrig.exe. XMRig uses it to enable MSR tweaks and other privileged CPU access on Windows. config.json is only needed if you want to launch XMRig by clicking the executable in Windows Explorer. If you launch it from a Command Prompt with flags as shown later, you can ignore it.
Open Command Prompt (cmd) or PowerShell and navigate to your Salvium folder:
cd C:\Salvium
salviumd.exe --zmq-pub tcp://127.0.0.1:19083 --disable-dns-checkpoints
Wait for the blockchain to sync (may take several hours on first run):
Open a new Command Prompt window (keep salviumd running) and start p2pool:
cd C:\Salvium
p2pool-salvium.exe --host 127.0.0.1 --loglevel 1 --wallet YOUR_SALVIUM_ADDRESS
Replace YOUR_SALVIUM_ADDRESS with your wallet address starting with SC1.
Create a file called start-p2pool.bat with:
@echo off
cd C:\Salvium
p2pool-salvium.exe --host 127.0.0.1 --loglevel 1 --wallet SC1YourAddressHere
pause
Configure your mining software to connect to p2pool:
Pool Address: 127.0.0.1:3333
Username: YOUR_SALVIUM_ADDRESS
Password: x
Edit your config.json or run from command line:
xmrig.exe -o 127.0.0.1:3333 -u SC1YourAddressHere -p x --algo rx/0
Check the p2pool observer to confirm your miner is contributing:
P2Pool ObserverYou should see:
Enable Huge Pages. This significantly improves RandomX mining performance.
sudo sysctl -w vm.nr_hugepages=1280 (or add to /etc/sysctl.conf for persistence)Use an SSD. The blockchain sync and node performance benefit greatly from SSD storage versus traditional hard drives.
Keep Software Updated. Check for updates to salviumd, p2pool-salvium, and your mining software periodically for performance improvements and bug fixes.
P2Pool can't connect to salviumd
--zmq-pub tcp://127.0.0.1:19084 flag is setMiner shows 0 hashrate on observer
No payouts received
P2Pool sidechain not syncing / stuck syncing
38889 TCP) to the machine running p2pool-salvium--p2p-external-port: use if your router maps to a different external port than your local p2p port.--no-upnp: disable automatic UPnP port forwarding.Questions? Join the Salvium community on Discord