◆ HOW TO SET UP A MINING-KEY LABEL FOR SbPoW
From block 7,100 every block must carry a Schnorr signature from the miner. The miner key lives inside a wallet file and is referenced by a label. The miner is launched with --wallet + --mining-key-label; --address alone is rejected.
OPTION A — create a NEW dedicated Phase 2 mining wallet
The label is yours to choose freely. Anything you can type works — pick whatever helps you remember which machine or address it points to. The wallet does not validate the string; the only rule is that the label you pass to getnewaddress <label> must match the one you pass to --mining-key-label <label> later. Two example shapes follow; copy either one and edit it:
// EXAMPLE 1 — label "phase2-miner"
cd ~/SOST/sostcore/sost-core/build
./sost-cli --wallet phase2-miner-wallet.json newwallet
./sost-cli --wallet phase2-miner-wallet.json getnewaddress phase2-miner
# confirm the label exists
./sost-cli --wallet phase2-miner-wallet.json listaddresses
# back up the wallet file (it holds your private key)
cp -a phase2-miner-wallet.json phase2-miner-wallet.json.bak
chmod 600 phase2-miner-wallet.json phase2-miner-wallet.json.bak
// EXAMPLE 2 — label "home-rig" (any string works the same way)
cd ~/SOST/sostcore/sost-core/build
./sost-cli --wallet home-rig-wallet.json newwallet
./sost-cli --wallet home-rig-wallet.json getnewaddress home-rig
./sost-cli --wallet home-rig-wallet.json listaddresses
cp -a home-rig-wallet.json home-rig-wallet.json.bak
chmod 600 home-rig-wallet.json home-rig-wallet.json.bak
Then launch the miner with that wallet + label. The label after --mining-key-label must be identical to the one you used in getnewaddress in the same wallet. Do NOT add --address; the miner derives the address from the wallet key automatically.
# using EXAMPLE 1
./sost-miner \
--wallet phase2-miner-wallet.json \
--mining-key-label phase2-miner \
--rpc 127.0.0.1:18232 --rpc-user USER --rpc-pass PASS \
--blocks 999999 --profile mainnet --threads N
# using EXAMPLE 2
./sost-miner \
--wallet home-rig-wallet.json \
--mining-key-label home-rig \
--rpc 127.0.0.1:18232 --rpc-user USER --rpc-pass PASS \
--blocks 999999 --profile mainnet --threads N
Expected startup lines (the label echoed back is whichever one you chose):
SbPoW signing key: label='<your-label>'
Miner address: sost1... (derived from wallet key)
Note: a brand-new address is not lottery-eligible until it mines its first valid block. Eligibility is per-address and unlocks automatically once the address mines once.
OPTION B — use an EXISTING wallet/address
If your existing wallet already holds the address you want to mine with, just point the miner at it. First find the label:
cd ~/SOST/sostcore/sost-core/build
./sost-cli --wallet wallet.json listaddresses
Then launch with that wallet and label (replace YOUR_LABEL):
./sost-miner \
--wallet wallet.json \
--mining-key-label YOUR_LABEL \
--rpc 127.0.0.1:18232 --rpc-user USER --rpc-pass PASS \
--blocks 999999 --profile mainnet --threads N
If that address has already mined ≥ 1 block since genesis, it is already lottery-eligible. If it has never mined, eligibility unlocks after its first block.
⚠ HOW TO KNOW IF YOU NEED TO UPGRADE
Your node or miner is outdated if
any of these is true:
- Your
getinfo reports a chain height below 7,100 while the public explorer is above it.
- Your node is connected to peers but its tip stays stuck (e.g. at 7087, 7097) — it is rejecting Phase II v2 blocks.
- Your miner exits with:
FATAL: Phase 2 active ... wallet-backed mining key required.
- Your
submitblock is rejected with: v2 header missing miner_pubkey.
- Your miner is launched with
--address only (post-7,100 needs the label workflow above).
⚠ COMBINED UPGRADE — node + miner in one go
cd <your sost-core directory>
git pull --ff-only origin main
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DSOST_ENABLE_PHASE2_SBPOW=ON
make -j$(nproc) sost-node sost-miner sost-cli
# Restart the node (it can now follow Phase II + V12)
sudo systemctl restart sost-node
# If you also mine, restart with wallet-backed SbPoW signing
pkill -9 -f sost-miner 2>/dev/null || true
./sost-miner \
--wallet YOUR_WALLET.json \
--mining-key-label YOUR_LABEL \
--rpc 127.0.0.1:18232 --rpc-user USER --rpc-pass PASS \
--blocks 999999 --profile mainnet --threads N
Verify your node has caught up:
curl -s -u "USER:PASS" -d '{"method":"getinfo"}' http://127.0.0.1:18232/
The
blocks field should match (or be within a couple of blocks of) the height shown at the top of this explorer. If it stays stuck, the rebuild step did not complete or the wrong binary is running — check
which sost-node and the systemd unit's
ExecStart= path.
What is currently active on chain
- V11 Phase 2 (since #7,100): SbPoW signed identity + DTD lottery + PAYOUT coinbase shape on triggered blocks.
- V12 (since #7,350): H20 cASERT ceiling, same-block 4-tier Slingshot, V12 miner rebuild protection, capsules,
getminerstats diagnostics.
Cooldown clarification
The 5-block cooldown applies to
miners who produced recent blocks, not to lottery winners.
- An address that mined any of the previous 5 blocks is temporarily excluded from the lottery.
- An address that only wins the DTD lottery remains eligible unless it also mined recently.
- Winning the lottery does NOT trigger cooldown.
- Mining a block does NOT automatically win the lottery.
This matches the C7.1 Phase 2 design.
Important — common pitfalls
- If you run only a node, update and restart the node.
- If you run only a miner, update and restart the miner.
- If node and miner are on different machines, update both.
--address-only mining is rejected post-#7,100. Use --wallet + --mining-key-label.
- Never share your wallet file or private key. Treat
phase2-miner-wallet.json as a secret.
—
NeoB