## How rewards work

PotCoin pays validators a modest **1% annual inflation** as a staking subsidy, on top of the fees in each block they produce. The 420M POT supply grows slowly with every staked block; active stakers earn proportionally to the coin-age they commit.

```cpp
// PoS reward = 1% APR subsidy + transaction fees
int64_t GetProofOfStakeReward(int64_t nCoinAge, int64_t nFees) {
    int64_t nSubsidy = nCoinAge * 1 * CENT * 33 / (365 * 33 + 8);   // ≈1% APR
    return nSubsidy + nFees;
}
```

Validators earn a baseline APR for staying online, and a bonus whenever they produce a full block. Min fee is **0.420 POT per TX**.

## Stake parameters

| Parameter               | Value                     |
|-------------------------|---------------------------|
| Staking APR             | ~1% annually              |
| Minimum stake age       | 15 minutes                |
| Maximum stake age       | 25 days                   |
| Coinbase maturity       | 10 blocks                 |
| Target block time       | 260 seconds (4m 20s)      |
| Auto-combine threshold   | 250 POT                   |
| Hash drift              | 45 seconds                |
| Clock drift allowance    | 60 seconds                |

## Step-by-step

1. ### Fund a PotCoin address and wait for maturity

Send POT to an address in your wallet. Coins must have at least **10 confirmations** (coinbase maturity) and sit for at least **15 minutes** before they're eligible to stake.

2. ### Make sure your wallet is unlocked for staking

```bash
   $ potcoind walletpassphrase "your-passphrase" 99999999 true
   # the trailing `true` = unlock for staking only (cannot send TXs)
   ```

3. ### Confirm staking is active

```bash
   $ potcoind getstakinginfo
   {
     "enabled": true,
     "staking": true,
     "weight": 5000,
     "netstakeweight": 25000000,
     "expectedtime": 13520
   }
   ```
   
   `expectedtime` is in seconds — the network's estimate for how long until your next stake hit.

4. ### Watch for stake hits

```bash
   $ tail -f ~/.potcoin/debug.log | grep -i "CreateNewBlock\|stake hit"
   ```

5. ### Stay online

Staking only works while the daemon is running. Run it on a low-power always-on box (Pi, VPS, idle desktop). Combine with Tor if you want network privacy too.

## Stake kernel

```
hash = SHA256d(nStakeModifier + blockFrom.nTime + txPrev.offset
              + txPrev.nTime + txPrev.vout.n + nTimeTx)

valid if: hash < bnTargetPerCoinDay × nCoinDayWeight
```

Where `nCoinDayWeight = nValueIn × nTimeWeight / COIN / 86400`. Larger and older UTXOs win blocks proportionally more often — standard PPC-style PoS.

**Why 1% APR?**  
Low enough that the 420M supply grows slowly and predictably. High enough to keep validators economically incentivised to stay online and secure the chain. Combined with the 0.420 POT min fee, long-term holders earn a reliable yield without the dilution you'd see on higher-inflation chains.
