Skip to content

tools(btc): pre-stage full G3b standup — dual-path broadcaster, one-command unblock - #460

Merged
frstrtr merged 2 commits into
masterfrom
btc/g3b-standup
Jun 25, 2026
Merged

tools(btc): pre-stage full G3b standup — dual-path broadcaster, one-command unblock#460
frstrtr merged 2 commits into
masterfrom
btc/g3b-standup

Conversation

@frstrtr

@frstrtr frstrtr commented Jun 24, 2026

Copy link
Copy Markdown
Owner

Pre-stages the full BTC G3b standup so the eventual unblock (testnet3 IBD completes / SHA256d rig key #387/#388 lands) is one command, not a fresh scramble. Authoring + dry-run need no rig key and no IBD-complete. Scripts-only, fenced under tools/testnet/, no core/consensus change.

Stacks on the VM130 readiness gate (base = btc/vm130-readiness-gate).

What lands

  • vm130_btc_readiness_gate.sh — EXTENDED with dual-path broadcaster preconditions on top of the existing IBD/template gate:
    • ARM B: submitblock RPC method is live (RPC fallback path).
    • ARM A: getconnectioncount >= 1 so an on_block_found P2P relay has a landing site (a 0-peer node would accept submitblock but silently drop a relay → ARM A would pass falsely). Fails closed.
  • vm130_btc_standup.sh — one-command orchestrator: composes the gate then launches c2pool-btc. single or tuned (2-instance A→B crossing via opt-in --sharechain-port btc: --sharechain-port flag for isolated second instance (G3b tuned-net) #457). --dry-run prints the full plan and runs nothing.
  • g3b_block_acceptance.py — runnable G3b FOUND→ASSEMBLED→ACCEPTED→BROADCAST over both arms × 3 regimes (v35/HYBRID/v36). --dry-run asserts reaches_network is orthogonal to (arm, regime); --live drives ARM B submitblock for real and marks ARM A rig-gated (never silently passed).

Dry-run output (this PR head)

== G3b dry-run model: FOUND->ASSEMBLED->ACCEPTED->BROADCAST (both arms x 3 regimes) ==
  arm=A_p2p_relay    regime=v35     => ACCEPTED
  arm=A_p2p_relay    regime=HYBRID  => ACCEPTED
  arm=A_p2p_relay    regime=v36     => ACCEPTED
  arm=B_submitblock  regime=v35     => ACCEPTED
  arm=B_submitblock  regime=HYBRID  => ACCEPTED
  arm=B_submitblock  regime=v36     => ACCEPTED
ALL PASS: all_reach=True arm_regime_orthogonal=True

Standup --dry-run (single + tuned) plans print and run nothing; bash -n + py_compile clean.

I do not self-merge — operator/integrator tap.

frstrtr added 2 commits June 24, 2026 23:26
Fails closed while parent bitcoind is in IBD (getblocktemplate rejected),
refusing to stand up the c2pool BTC layer against an unsynced parent so no
G2/G3 live-block evidence is captured against an invalid template source.
Prints the documented --testnet --bitcoind 127.0.0.1:18333 launch command
once GBT serves a template. Scripts-only; no consensus code touched.
…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
frstrtr changed the base branch from btc/vm130-readiness-gate to master June 24, 2026 23:27
@frstrtr
frstrtr merged commit a9fff41 into master Jun 25, 2026
2 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