dash: S8 node slice-B version-handshake reception (fires #646 min-proto gate) - #649
Merged
Conversation
Add dash::MinProtocolGate, a per-instance reject-if-proto<floor policy for the version handshake. Floor defaults to SharechainConfig::MINIMUM_PROTOCOL_VERSION (1700, oracle accept-all) so the leaf is a NO-OP at default and commits no premature v36 constant; the ratchet value stays a one-line operator knob set at G2-migration time. Fenced to src/impl/dash/ (no shared bitcoin_family/core handshake types touched). Live wiring into handle_version rides reception slice B. KAT (test_dash_min_protocol_gate, 3/3) pins: peer at floor=1700 MUST be accepted (no-op), below-floor rejected at the >= boundary, and the floor is a settable per-instance member (ratchet mechanism works while default stays inert).
…to gate) Replace the slice-A no-op handle_version stub in dash::NodeImpl with the real version-handshake reception, mirroring the ltc::NodeImpl reference reconciled to DASH s header-only pool node. Parses message_version, guards self- and duplicate connections, and fires the #646 min-protocol ratchet gate as a LIVE per-instance discrimination (default floor 1700 = oracle accept-all no-op; operator lifts it at G2-migration). Registers the peer and returns the negotiated legacy/actual connection type for the G2 dual-pool. This flips the G2 dual-pool from a dormant seam to a live cross-peer reception. test_dash_node 9/9.
… reachable The slice-A handle() was a no-op that dropped all inbound messages, leaving the new handle_version() reception (and its live #646 min-protocol gate) unreachable -- a dormant seam. Route the unknown-peer version handshake into handle_version() (mirrors pool::NodeBridge), close on self/dup, and mark the peer stable on the negotiated type. Full Legacy/Actual established-peer dispatch rides a later slice. This makes the #646 discrimination genuinely live on the handshake path. test_dash_node 9/9.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Slice B of the DASH S8 pool-node plan. Replaces the slice-A no-op
handle_versionstub indash::NodeImplwith the real version-handshake reception.What it does:
message_version; guards self-connection and duplicate-nonce connections.dash::MinProtocolGate) as a LIVE per-instance discrimination. Default floor 1700 = oracle accept-all no-op; operator liftsmin_versionat G2-migration and this reception then rejects sub-floor peers.m_peersand returns the negotiated legacy/actual connection type for the G2 dual-pool.This flips the G2 dual-pool from a dormant seam to a live cross-peer reception.
Scope note: DASH s header-only node does not yet carry the share-download / getaddrs machinery the ltc reference drives here; that rides a later slice. Acceptance for slice-B is live cross-peer on VM200 (legacy:5150 / v36:5151) -- this PR is the reception TU; the live two-instance cross-peer verification is the follow-through.
Verify:
cmake --build build --target test_dash_node(EXIT=0),ctest -R ^test_dash_node$-> 9/9. GPG-signed 86098e5.