Skip to content

dash: runnable c2pool-dash entrypoint via live consensus selftest (launcher slice 2) - #388

Merged
frstrtr merged 1 commit into
dash/launcher-firstmint-slice1from
dash/launcher-firstmint-slice2
Jun 23, 2026
Merged

dash: runnable c2pool-dash entrypoint via live consensus selftest (launcher slice 2)#388
frstrtr merged 1 commit into
dash/launcher-firstmint-slice1from
dash/launcher-firstmint-slice2

Conversation

@frstrtr

@frstrtr frstrtr commented Jun 23, 2026

Copy link
Copy Markdown
Owner

Stacked on #387 (launcher slice 1). Closes the "DASH is impl-files-only, not runnable" gap with DASH's own c2pool-dash executable.

What it does

--selftest (default) drives the REAL header-only DASH consensus path, network-free, then exits — 11/11 checks green on Linux x86_64:

  • make_coin_params oracle CoinParams (symbol, sharechain ports 8999/18999 SSOT, share_version 16, X11 pow_func reachable through the coin-params seam).
  • X11 PoW KATs: mainnet genesis + real-node testnet3 #1497944 reproduce their published hashes (CI-pinned, test_dash_x11_kat.cpp).
  • Subsidy: post-V20 reward h=2459985 = 177022505 sat + 3/4 masternode payment (test_dash_subsidy.cpp, live-validated).

--run: block submission is explicitly DEFERRED (labelled stub, not silent). The won-block dual-path broadcaster — dashd-RPC submitblock fallback + embedded P2P relay — lives in the unmerged dash-spv-embedded work; DASH has no NodeRPC TU on master yet (only coin/rpc_data.hpp). The CoinParams path the RPC fallback consumes IS wired here.

Isolation / fencing

  • Touches src/c2pool/main_dash.cpp (new) + src/c2pool/CMakeLists.txt (one additive c2pool-dash target) only. No src/impl/<other-coin>, no shared-base/core SOURCE edit, dashd RPC fallback untouched.
  • Link set mirrors c2pool-bch (core monolith SCC direct-naming + dash_x11).

Build GREEN, GPG-signed f2fb646. Held for integrator verify -> operator tap (no self-merge). Retarget to master after #387 lands.

…uncher slice 2)

Closes the "DASH is impl-files-only, not runnable" gap. Slice 1 (#387)
registered DASH in the unified launcher dispatch; this adds DASHs own
c2pool-dash executable driving the REAL header-only consensus path:

  --selftest (default): make_coin_params (oracle CoinParams + X11 pow_func
    seam), X11 PoW KATs (mainnet genesis + real-node testnet3 #1497944),
    and post-V20 subsidy + 3/4 masternode payment. 11/11 checks green.
  --run: block submission is DEFERRED to the next stacked slice and is an
    explicit labelled stub. The dual-path broadcaster (dashd-RPC submitblock
    fallback + embedded P2P relay) lives in the unmerged dash-spv-embedded
    work; DASH has no NodeRPC TU on master yet (only coin/rpc_data.hpp).
    The CoinParams path the RPC fallback consumes IS wired here.

Per-coin isolation: src/impl/dash only + main_dash.cpp; no shared-base/core
SOURCE edit; dashd RPC fallback untouched. Link set mirrors c2pool-bch.
@frstrtr
frstrtr merged commit 2fc633d into dash/launcher-firstmint-slice1 Jun 23, 2026
1 check passed
frstrtr added a commit that referenced this pull request Jun 23, 2026
…uncher slice 2) (#388)

Closes the "DASH is impl-files-only, not runnable" gap. Slice 1 (#387)
registered DASH in the unified launcher dispatch; this adds DASHs own
c2pool-dash executable driving the REAL header-only consensus path:

  --selftest (default): make_coin_params (oracle CoinParams + X11 pow_func
    seam), X11 PoW KATs (mainnet genesis + real-node testnet3 #1497944),
    and post-V20 subsidy + 3/4 masternode payment. 11/11 checks green.
  --run: block submission is DEFERRED to the next stacked slice and is an
    explicit labelled stub. The dual-path broadcaster (dashd-RPC submitblock
    fallback + embedded P2P relay) lives in the unmerged dash-spv-embedded
    work; DASH has no NodeRPC TU on master yet (only coin/rpc_data.hpp).
    The CoinParams path the RPC fallback consumes IS wired here.

Per-coin isolation: src/impl/dash only + main_dash.cpp; no shared-base/core
SOURCE edit; dashd RPC fallback untouched. Link set mirrors c2pool-bch.

Co-authored-by: frstrtr <frstrtr@users.noreply.github.com>
frstrtr added a commit that referenced this pull request Jun 24, 2026
…uncher slice 2) (#388)

Closes the "DASH is impl-files-only, not runnable" gap. Slice 1 (#387)
registered DASH in the unified launcher dispatch; this adds DASHs own
c2pool-dash executable driving the REAL header-only consensus path:

  --selftest (default): make_coin_params (oracle CoinParams + X11 pow_func
    seam), X11 PoW KATs (mainnet genesis + real-node testnet3 #1497944),
    and post-V20 subsidy + 3/4 masternode payment. 11/11 checks green.
  --run: block submission is DEFERRED to the next stacked slice and is an
    explicit labelled stub. The dual-path broadcaster (dashd-RPC submitblock
    fallback + embedded P2P relay) lives in the unmerged dash-spv-embedded
    work; DASH has no NodeRPC TU on master yet (only coin/rpc_data.hpp).
    The CoinParams path the RPC fallback consumes IS wired here.

Per-coin isolation: src/impl/dash only + main_dash.cpp; no shared-base/core
SOURCE edit; dashd RPC fallback untouched. Link set mirrors c2pool-bch.

Co-authored-by: frstrtr <frstrtr@users.noreply.github.com>
frstrtr added a commit that referenced this pull request Jun 24, 2026
…uncher slice 2) (#388)

Closes the "DASH is impl-files-only, not runnable" gap. Slice 1 (#387)
registered DASH in the unified launcher dispatch; this adds DASHs own
c2pool-dash executable driving the REAL header-only consensus path:

  --selftest (default): make_coin_params (oracle CoinParams + X11 pow_func
    seam), X11 PoW KATs (mainnet genesis + real-node testnet3 #1497944),
    and post-V20 subsidy + 3/4 masternode payment. 11/11 checks green.
  --run: block submission is DEFERRED to the next stacked slice and is an
    explicit labelled stub. The dual-path broadcaster (dashd-RPC submitblock
    fallback + embedded P2P relay) lives in the unmerged dash-spv-embedded
    work; DASH has no NodeRPC TU on master yet (only coin/rpc_data.hpp).
    The CoinParams path the RPC fallback consumes IS wired here.

Per-coin isolation: src/impl/dash only + main_dash.cpp; no shared-base/core
SOURCE edit; dashd RPC fallback untouched. Link set mirrors c2pool-bch.

Co-authored-by: frstrtr <frstrtr@users.noreply.github.com>
frstrtr added a commit that referenced this pull request Jun 24, 2026
…mmand unblock)

Stacks on the VM130 readiness gate. Pre-stages everything the BTC live lane
needs so the eventual unblock (testnet3 IBD completes / SHA256d rig key #387/#388
lands) is one command, not a fresh scramble. No rig key and no IBD-complete are
required to author or dry-run any of this.

- vm130_btc_readiness_gate.sh: EXTENDED to assert the dual-path broadcaster
  preconditions on top of the existing IBD/template gate -- ARM B (submitblock
  RPC method live) and ARM A (>=1 P2P peer so an on_block_found relay has a
  landing site). Still fails closed.
- vm130_btc_standup.sh: one-command orchestrator (single or tuned 2-instance
  A->B crossing via opt-in --sharechain-port #457); --dry-run prints the plan.
- g3b_block_acceptance.py: runnable FOUND->ASSEMBLED->ACCEPTED->BROADCAST over
  BOTH arms x 3 regimes; --dry-run asserts reaches_network orthogonal to
  (arm,regime); --live drives ARM B for real, marks ARM A rig-gated.

Scripts-only, fenced under tools/testnet/, no core/consensus change.
frstrtr added a commit that referenced this pull request Jun 26, 2026
#509)

One-command BTC G3b relaunch: isolated regtest sharechain (--regtest +
isolated --prefix/--network-id), asserts the #506 isolation invariant
(net_name=bitcoin_regtest regtest-FIRST + 0 public seeds + isolated prefix
via pure grep over main_btc.cpp startup banner), then arms the dual-path
won-block capture (ARM A on_block_found->P2P, ARM B submitblock RPC
fallback; delegates structured both-arms capture to g3b_block_acceptance.py).

--dry-run is self-contained (no host/binary/operator-go): proves the
isolation asserts PASS on a golden regtest log and BITE on a mainnet-shaped
log, with 0 blocks produced. --go is operator-gated (relaunch drops bake-in
state) and HARD-STOPs if any invariant fails on the live banner. Block-FOUND
stays rig-gated (#387/#388 or RPC-tuned solve). Held — no push pending tap.

Co-authored-by: frstrtr <frstrtr@users.noreply.github.com>
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