Become a miner (GhostRider)¶
PQWERAI blocks are sealed by GhostRider proof of work computed by a pinned native helper
(pqwerai_hash_worker). Mining is CPU-only. Every node verifies the helper's SHA-256 and refuses any other binary.
Prerequisites: a synced PQWERAI node (Install a node), Linux x86-64 (Windows: WSL2), an address for rewards whose key is not stored on the mining host.
1. Choose how to run the node¶
Edit /etc/pqwerai/core.env (installed by the release package):
Node page → Set up and start my node (runs the verified Linux Core inside WSL2) → Mine with this node. Rewards go to the selected wallet account.
pqwerai-core --datadir ./data --genesis genesis.json \
--helper ./pqwerai_hash_worker \
--helper-sha256 3a54f0bb461f296b606c9386c68ebf37514a703e5dbff3de4c4a5828637099a8 \
--difficulty 64 --expect-genesis-hash <manifest genesis hash> \
--mine --etherbase 0xYourRewardAddress
--difficulty must equal the network's base difficulty (64 for testnet-rc1, see
network parameters). All flags: Core CLI.
2. How difficulty and rewards work¶
- Target block interval 3–7 s. Difficulty doubles after a block ≤ 2 s and halves after a block ≥ 8 s, clamped to [base, 16 × base]. Above roughly 1024 hashes per 3 s of aggregate hash rate, blocks come faster than the band.
- Fork choice: greatest total difficulty; the node never reorganises below the BFT-finalized checkpoint.
- Each block's new issuance is split 79.2 % to the miner, 19.8 % to active Smartnode validators, 1 % to the founder treasury. Transfers, gas fees and AI payments are never taxed. The base fee is burned; the priority fee goes to the miner. There is no supply cap.
- Rewards are exact integers kept by consensus;
g4_statusexposes the lifetime counters.
3. Inspect confirmed rewards¶
# Read the exact issuance counters kept in consensus state and the miner's balance.
# MINER = the address passed as --etherbase / PQWERAI_ETHERBASE.
cast rpc g4_status --rpc-url "$RPC" | python3 -c '
import json, sys
s = json.load(sys.stdin)
print("head", s["head"], "finalized", s["finalized_height"])
for key in ("pow_issued_wei", "pos_issued_wei", "founder_issued_wei", "fee_burn_wei", "minted_wei"):
print("%-20s %.6f PQAI" % (key, int(s.get(key, "0")) / 1e18))'
cast balance "$MINER" --ether --rpc-url "$RPC"
# How many of the last 20 blocks this address sealed (the miner is the header coinbase).
HEAD=$(cast block-number --rpc-url "$RPC")
for n in $(seq $((HEAD - 19)) "$HEAD"); do cast block "$n" --field miner --rpc-url "$RPC"; done | grep -ic "${MINER#0x}"
Expected output (local testnet, numbers differ):
head 4501 finalized 4448
pow_issued_wei 1.475139 PQAI
pos_issued_wei 0.368785 PQAI
founder_issued_wei 0.018625 PQAI
fee_burn_wei 0.001109 PQAI
minted_wei 1019143.862550 PQAI
1.512361080541570015
20
minted_wei includes the genesis allocations; pow/pos/founder are issuance since genesis. Treat rewards in blocks
above finalized_height as reversible. The explorer shows per-block issuance at /api/v1/issuance.
Operational guidance¶
- Do not run AI hosting on the cores you mine with (
cpu_affinityin the AI configuration). - Keep the reward key off the server; a compromised miner should only lose electricity.
- A node with a different genesis, chain ID or helper hash cannot peer or will refuse to start — that is intended.
Troubleshooting¶
| Symptom | Cause |
|---|---|
--mine requires --etherbase |
Set PQWERAI_ETHERBASE / --etherbase |
helper SHA-256 mismatch |
Wrong or modified helper binary — use the release package |
| Blocks found but reorganised away | Another miner's heavier branch won before finality; normal below the finalized checkpoint |
eth_getWork returns no mining work available yet |
The legacy external-miner interface is not how GhostRider mining works; mine inside the node |
Sources at 72057fe3ec: testnet/release/network/network.json · testnet/release/vps/config/core.env.example · developers/examples/mining/check-rewards.sh
Found a problem? Report a documentation issue · Build testnet-rc1+72057fe3ec