Skip to content

test(dash/s8): stratum extranonce coinb1/coinb2 split contract KAT#633

Merged
frstrtr merged 1 commit into
masterfrom
dash/s8-stratum-extranonce-split
Jul 4, 2026
Merged

test(dash/s8): stratum extranonce coinb1/coinb2 split contract KAT#633
frstrtr merged 1 commit into
masterfrom
dash/s8-stratum-extranonce-split

Conversation

@frstrtr

@frstrtr frstrtr commented Jul 4, 2026

Copy link
Copy Markdown
Owner

Fenced (test/ + build.yml allowlist only), non-consensus, merge-gated — no self-merge.

Binds the REAL landed producer dash::coinbase::split_coinb() — the mining.subscribe/mining.notify wire split coinb1 || <extranonce2> || coinb2 — which the get_work slot KAT (test_dash_stratum_binding, #630) and the notify-roundtrip KAT (test_dash_stratum_notify_roundtrip, #631) do not cover. This is the next stratum-binding suite leaf integrator named (extranonce).

Pins:

  • split leaves a gap of EXACTLY EXTRANONCE2_SIZE==8 between coinb1/coinb2 == oracle stratum.py COINBASE_NONCE_LENGTH advertised in mining.subscribe;
  • coinb1 == bytes[0:offset], coinb2 == bytes[offset+8:] (no gap/overlap/truncation);
  • reassembling coinb1||extranonce2||coinb2 reproduces the EXACT coinbase sha256d the slot/notify KATs golden-anchor (cross-binds the split producer to the slot-substitution producer, byte-for-byte);
  • distinct extranonce2 are injective through the reassembly;
  • wrong-width extranonce2 (7/9 bytes) breaks the coinbase length (advertised size is load-bearing);
  • bad nonce64 offset throws.

Oracle: frstrtr/p2pool-dash @9a0a609 — stratum.py rpc_subscribe extranonce2_size, work.py get_work coinb1/coinb2. Goldens = independent Python hashlib sha256d (non-circular; identical to the notify leaf coinbase anchors).

Base master @ff20c365. Local: 6/6 non-hollow (ctest from build/, out of 6). GPG-signed @4747b69f. Merge-gated on FULL green rollup + operator tap.

Fenced KAT (test/ + build.yml allowlist only) binding the REAL landed
producer dash::coinbase::split_coinb() -- the mining.subscribe/notify
wire split coinb1 || <extranonce2> || coinb2 that the get_work slot KAT
and notify-roundtrip KAT do not cover.

Pins: the split leaves a gap of exactly EXTRANONCE2_SIZE (==8) between
coinb1 and coinb2 (== oracle stratum.py COINBASE_NONCE_LENGTH advertised
in mining.subscribe); coinb1/coinb2 are the exact bytes around the slot;
reassembling coinb1||extranonce2||coinb2 reproduces the EXACT coinbase
sha256d the slot/notify KATs golden-anchor; distinct extranonce2 are
injective; a wrong-width extranonce2 breaks the coinbase length; bad
offset throws. Goldens = independent Python hashlib sha256d (non-circular).

Non-consensus, socket-free, node-free. 6/6.
@frstrtr frstrtr force-pushed the dash/s8-stratum-extranonce-split branch from 4747b69 to d839d8c Compare July 4, 2026 06:12
@frstrtr frstrtr merged commit ae199c9 into master Jul 4, 2026
22 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant