You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Implement pool_mode=pps-classic — traditional coinbase, operator deposits
pool_mode gains a third value on top of solo/pps. When pool_mode =
pps-classic:
- Stratum username validation is a Thunder address (same as pps).
- Coinbase is rendered by the existing coinbase_build_split (or
coinbase_build_from_template for the CUSF enforcer path), paying
pool_btc_address for the net-of-fee reward and operator_address for
the fee_bps cut. No OP_DRIVECHAIN output, no OP_RETURN destination.
- PPS accrual fires exactly like pps mode: pps_credits.accrued_sats
+= difficulty * pps_sats_per_diff on every accepted share.
- New pool_btc_address config key required (validated at startup via
coinbase_address_to_script so the operator sees a fast failure
instead of every rendered job dropping at runtime).
Rationale: end-to-end regtest AND live forknet runs proved the
LayerTwo-Labs BIP300 enforcer does not credit coinbase-source
outputs as sidechain deposits. Blocks with the drivechain-shape
coinbase (pps mode) are accepted into the chain but the
OP_DRIVECHAIN UTXOs are stranded — consensus-locked to
Ctip-roll / withdrawal-bundle spends that never happen for
non-Ctip outputs. Real pools have to accept BTC into a normal
wallet and batch deposits, which is exactly what pps-classic
does. main.c now emits a WARN when pool_mode=pps for the
same reason.
schema + store.c: new `deposits` table (id, ts, btc_txid,
sats_deposited, fee_sats, thunder_recipient, ctip_seq_before/after,
notes) owned by the admin dashboard's deposit action. The C proxy
creates it for fresh-DB convenience but never writes to it.
proxy.conf.example rewritten with all three modes documented
inline, including the pps-mode "does not credit" warning.
Existing test suite (7 suites, 12 coinbase assertions) still passes;
config validation smoke-tested locally (rejects missing
pool_btc_address, accepts valid config, chain of startup logs
matches the new mode).
0 commit comments