How PoS works on MotaCoin
MotaCoin's consensus is a coin-age weighted Proof-of-Stake, inherited from the Peercoin lineage and adapted with X13 hashing. Each unspent transaction output (UTXO) accumulates "coin age" the longer it sits unspent. When the daemon finds a valid stake kernel — a hash below the current target — it signs a new block with the private key of that UTXO, claiming the stake reward.
| Parameter | Value |
|---|---|
| Consensus | Pure Proof-of-Stake (post-cutoff) |
| Stake APR | 4.20% |
| Block time | 4m 20s (260 seconds) |
| Min stake age | 30 confirmations (~2 hours 10 min) before a UTXO can stake |
| Max stake age | 90 days — coin age stops accumulating past this |
| Stake kernel | X13 hash of (prev_stake, prev_time, stake_utxo_hash, out_index, tx_time, block_time) |
| Lockup | None — you can spend staked coins anytime |
Requirements
- MotaCoin Core installed and fully synced to mainchain tip (see desktop wallet tutorial if you need to install)
- A balance of mainchain MOTA in your wallet (prefix
M) - A machine that stays online — laptop sleep breaks staking. Ideal: Raspberry Pi 4/5 or always-on desktop
Step-by-step
-
Check your wallet balance
$ motacoin-cli getinfo { "version": 2000100, "balance": 1250.00000000, "stake": 0.00000000, "blocks": 184520, "connections": 8, "staking": false, "unlocked_until": 0, ... }If
connectionsis 0, you're not synced — wait for the daemon to catch up before continuing. Ifbalanceis 0, bridge some SPL MOTA in from Solana first — see the bridge tutorial. -
Encrypt the wallet (first-time setup only)
If you haven't encrypted the wallet yet, do it now — an unencrypted wallet has zero protection if your machine is compromised:
$ motacoin-cli encryptwallet "your-strong-passphrase-here" wallet encrypted; MotaCoin server stopping, restart to run with encrypted wallet. $ motacoind -daemonBack up wallet.dat before and after encrypting Copy~/.motacoin/wallet.datto an offline medium (USB stick, encrypted archive). If you lose your passphrase, the funds are unrecoverable. -
Unlock the wallet for staking only
The magic flag is the trailing
true— it unlocks the wallet for signing stake blocks only, not for spending. If your machine is compromised while unlocked like this, the attacker can't drain your funds.$ motacoin-cli walletpassphrase "your-strong-passphrase-here" 99999999 true # The "99999999" is the unlock duration in seconds (~3 years) — effectively forever. # The trailing "true" means stake-only; the wallet cannot send coins while unlocked this way. -
Verify staking started
$ motacoin-cli getinfo | grep staking "staking": true, $ motacoin-cli getstakinginfo { "enabled": true, "staking": true, "errors": "", "currentblocksize": 1000, "currentblocktx": 0, "pooledtx": 0, "difficulty": 142.857, "search-interval": 2581, "weight": 1250000000, "netstakeweight": 987654321098, "expectedtime": 287520 }weightis your stake weight in satoshis — roughlybalance × coin-age-seconds.expectedtime(seconds) is a rough ETA to your next reward based on your share ofnetstakeweight. For 1,250 MOTA at current difficulty, expect a stake every few days; for 10,000+ MOTA, expect one most days. -
Configure auto-staking on daemon start
So you don't have to re-run
walletpassphraseevery time you restart the daemon, create a stake config file. This is optional but strongly recommended for always-on machines.$ cat > ~/.motacoin/motacoin.conf << 'EOF' daemon=1 server=1 rpcuser=mota rpcpassword=change-this-to-something-random rpcallowip=127.0.0.1 staking=1 reservebalance=0 EOFAfter this you still need to run
walletpassphraseonce per daemon start, but auto-unlock helpers (systemd secrets, keyring) can automate that too. See the headless staking section of the desktop wallet tutorial. -
Watch for your first stake reward
Stake rewards arrive as coinstake transactions, tagged in your wallet transaction list:
$ motacoin-cli listtransactions "*" 10 | jq '.[] | select(.category=="stake")' { "category": "stake", "amount": 0.14520000, "confirmations": 12, "txid": "e2f1a4b8...", "time": 1712345678, "generated": true, ... }The reward for each stake is approximately
(staked_amount × 4.20%) / (365 × stakes_per_year). For 1,000 MOTA staked, expect ~0.115 MOTA per stake event on average.
Headless / always-on setup (Raspberry Pi)
For a long-term stake rig, a Raspberry Pi 4 or 5 with an SSD is the best option — low power, silent, and the chain fits comfortably on a 128 GB drive.
# On the Pi, after motacoind is installed (see desktop-wallet.html)
$ sudo tee /etc/systemd/system/motacoin.service > /dev/null << 'EOF'
[Unit]
Description=MotaCoin daemon
After=network.target
[Service]
Type=forking
User=pi
WorkingDirectory=/home/pi/.motacoin
ExecStart=/usr/local/bin/motacoind -daemon
ExecStop=/usr/local/bin/motacoin-cli stop
Restart=always
RestartSec=10
TimeoutStopSec=300
[Install]
WantedBy=multi-user.target
EOF
$ sudo systemctl enable --now motacoin
$ motacoin-cli walletpassphrase "YOUR_PASSPHRASE" 99999999 true
For auto-unlock on boot, store the passphrase in a root-owned systemd credential file and use an ExecStartPost hook to run walletpassphrase. This is an acceptable trade-off for a dedicated stake rig that only holds staking funds.
Common issues
"Staking shows false even after unlocking"
- Check
motacoin-cli getstakinginfo— iferrorsis non-empty, it'll tell you why. - If your balance UTXOs are younger than 30 confirmations, they can't stake yet. Wait ~2 hours.
- If the daemon isn't fully synced (
blocks< current explorer height), staking is disabled until catch-up.
"My rewards are smaller than 4.20% APR"
- 4.20% is the nominal annual rate averaged across the whole staking population. If network difficulty is high (many coins staking), you'll see slightly less; if low, slightly more.
- Small balances (< 100 MOTA) can go weeks between stakes due to randomness. Larger balances smooth out to ~4.20% over a 30–60 day window.
"I want to spend some of my staking coins"
Run motacoin-cli walletlock to re-lock the wallet, then motacoin-cli walletpassphrase "PASSPHRASE" 60 false to unlock for spending for 60 seconds. Send your tx, then re-unlock for staking with the true flag. The daemon auto-resumes staking.