This is a redesign, not a patch — it needs a design decision before code.
- Archive +5 is headers-only. Every response field is derivable from the public 80-byte header;
tx_count is self-reported; the ArchiveTx path is dead. A pruned node, an SPV client or an on-demand proxy passes every honest challenger, no collusion required.
- GhostPay +4 is unanchored self-attestation. The challenger checks field shapes and nonce binding only;
epoch_state_hash is never compared to anything; recipient re-derivation cannot return Fail by construction; the anchoring epoch_proof is None. A node with no L2 passes with a random hex string.
- Stratum +3 is a bare TCP connect.
nc -l 3333 passes. The handshake-capable StratumVerifier exists but is unused in the challenge path.
Compounding this: challenger /24s are self-reported and never probed (H-7), and the payout-gating verification_ledger stores passed verbatim with no evidence the challenger probed anything (H-8). Griefing resistance rests on distinct-subnet majorities that are fabricable.
Direction: archive → demand tx-level data with merkle-branch verification (revive the dead ArchiveTx path); ghostpay → anchor epoch_state_hash in a fleet-visible epoch commitment; stratum → complete a real mining.subscribe in the probe; challengers → count toward diversity only after passing a reachability probe at the claimed address; ledger verdicts → carry a target-signed artifact.
Until then these three are honesty-graded, not proof-graded, and the docs should say so. Blocks multi-operator.
This is a redesign, not a patch — it needs a design decision before code.
tx_countis self-reported; the ArchiveTx path is dead. A pruned node, an SPV client or an on-demand proxy passes every honest challenger, no collusion required.epoch_state_hashis never compared to anything; recipient re-derivation cannot return Fail by construction; the anchoringepoch_proofisNone. A node with no L2 passes with a random hex string.nc -l 3333passes. The handshake-capableStratumVerifierexists but is unused in the challenge path.Compounding this: challenger
/24s are self-reported and never probed (H-7), and the payout-gatingverification_ledgerstorespassedverbatim with no evidence the challenger probed anything (H-8). Griefing resistance rests on distinct-subnet majorities that are fabricable.Direction: archive → demand tx-level data with merkle-branch verification (revive the dead ArchiveTx path); ghostpay → anchor
epoch_state_hashin a fleet-visible epoch commitment; stratum → complete a realmining.subscribein the probe; challengers → count toward diversity only after passing a reachability probe at the claimed address; ledger verdicts → carry a target-signed artifact.Until then these three are honesty-graded, not proof-graded, and the docs should say so. Blocks multi-operator.