Skip to content

dash(s8): broadcaster_full won-block keystone — dual-arm relay (#83) - #456

Closed
frstrtr wants to merge 1 commit into
masterfrom
dash/s8-broadcaster-full
Closed

dash(s8): broadcaster_full won-block keystone — dual-arm relay (#83)#456
frstrtr wants to merge 1 commit into
masterfrom
dash/s8-broadcaster-full

Conversation

@frstrtr

@frstrtr frstrtr commented Jun 24, 2026

Copy link
Copy Markdown
Owner

S8 keystone for the DASH dual-path #83 frontier. Routes a WON block to the network over BOTH arms, each unit-proven independently:

reached_network() is true iff >=1 peer reached OR dashd accepted; a won block with no live peers and no RPC arm returns false (no silent drop).

Reconcile note: the dash-spv-embedded reference broadcaster_full.hpp ports c2pool-ltc CoinBroadcaster and depends on c2pool/merged/, coin/node_interface, coin/transaction, coin/block and NodeP2P::submit_block — none on master. Wholesale copy would not compile, would drag in merged/ (breaking single-coin isolation), and would regress the newer master broadcaster.hpp(#405)/p2p_node/config. So this is 3-way reconciled against what master carries.

Fence: one new header src/impl/dash/broadcaster_full.hpp + its KAT; no src/core, no merged/, no other-coin tree. Single-coin DASH slice; DASH smoke suffices. Based on master, independent of the held #441-#444 relay stack (lands standalone).

KAT test_dash_broadcaster_full — 7/7 real (non-hollow, ctest from build/, IDs 663-669): embedded-only reaches each live peer with exact bytes, dead-peer skip, RPC-only reaches alone w/ correct hex, accept/reject verdict, dual-arm both-fire-independently, no-path guard, hex byte-parity.

Held for integrator verify -> operator tap. No self-merge.

@frstrtr
frstrtr force-pushed the dash/s8-broadcaster-full branch 2 times, most recently from d6b84f1 to 31aa67c Compare June 24, 2026 22:19
…ded P2P + submitblock RPC)

Composes the #405 DashBroadcaster leaf FanOutHook/submit_block_raw_all seam
(embedded P2P arm) with an injectable submitblock-RPC fallback (dashd arm,
never removed). on_block_found() relays a won block over BOTH arms
independently; reached_network() is true iff >=1 peer reached OR dashd
accepted. Reconciled against master (not the merged/-dependent dash-spv-embedded
ref). Fenced to src/impl/dash; no src/core / no merged/ adds.

KAT test_dash_broadcaster_full 7/7: each arm proves won-block-reaches-network
independently (embedded-only, RPC-only, dual, accept/reject, no-path guard,
hex parity).
@frstrtr

frstrtr commented Jun 25, 2026

Copy link
Copy Markdown
Owner Author

Superseded by #465 — fresh branch cut from current master (198e743). #456 base (merge-base 790d69a) was stale and would have reverted landed btc/dgb/web/build.yml work on merge despite mergeStateStatus=CLEAN. Branch preserved (not deleted).

@frstrtr frstrtr closed this Jun 25, 2026
frstrtr added a commit that referenced this pull request Jun 25, 2026
Fresh-branch re-cut of the broadcaster_full keystone onto current master
(supersedes #456, whose stale multi-coin base would revert landed
btc/dgb/web work on merge). Dash-lane-only: embedded-P2P + dashd
submitblock dual-arm won-block broadcaster, 7/7 KATs.

src/impl/dash/broadcaster_full.hpp        — dual-arm keystone
test/test_dash_broadcaster_full.cpp       — 7/7 won-block KATs
test/CMakeLists.txt                       — test target registration
.github/workflows/build.yml               — CI allowlist (test_dash_broadcaster_full)
frstrtr added a commit that referenced this pull request Jun 25, 2026
dash(s8): broadcaster_full won-block keystone — dual-arm relay (#83) [fresh base, supersedes #456]
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