dash: sharechain pool-peer state (S8 pool-node leaf 1) - #580
Merged
Conversation
This was referenced Jun 27, 2026
Merged
DASH lacked the p2pool sharechain pool-node layer that btc and dgb both carry (node.hpp/peer.hpp/messages.hpp/share_tracker.hpp/share_messages.hpp), which blocks the full gate (b) bind/dial-crosses-shares path. This is leaf 1: the per-peer state struct. src/impl/dash/peer.hpp — dash::Peer, analog of btc::Peer/dgb::Peer: negotiated version/subversion/services/nonce from the version handshake, connection timestamp, and the remembered-tx protocol sets (m_remote_txs hash set + m_remembered_txs hash->coin::Transaction map). Pure header-only state, no IO. test/test_dash_peer.cpp — 5 KATs: fresh-peer defaults, version-handshake round-trip, remote-tx set dedup, remembered-tx map roundtrip+erase, monotonic connection timestamps. 5/5 green, non-hollow. Strictly fenced to src/impl/dash/ + test wiring (CMakeLists + build.yml allowlist); no bitcoin_family/src/core/other-coin touch.
frstrtr
force-pushed
the
dash/s8-poolnode-peer
branch
from
June 27, 2026 19:42
54f5ba1 to
fe4d734
Compare
frstrtr
added a commit
that referenced
this pull request
Jun 27, 2026
DASH lacked the p2pool sharechain pool-node wire layer that btc/dgb/ltc all carry. This is leaf 2 (after peer #580): the message envelope itself. src/impl/dash/messages.hpp — namespace dash port of the shared p2pool-family messages layer (src/impl/ltc/messages.hpp): version/ping/addrme/getaddrs/ addrs/shares/sharereq/sharereply/have_tx BEGIN_MESSAGE definitions + the pool-node dispatch type-list. The envelope is byte-parity with the family layer; share VERSION/transition (16->36) lives inside chain::RawShare, not the message frame, so the pool-node wire contract is coin-uniform. Mirrors the analog; no new contract invented. test/test_dash_poolnode_messages.cpp — 10 KATs: per-message pack/make round-trips (version field-by-field, ping empty, addrme LE-layout pin, getaddrs, addrs, v16+v36 shares envelope, sharereq, sharereply enum, have_tx) + Handler type-list instantiation. 10/10 green, non-hollow. Strictly fenced to src/impl/dash/ + additive test wiring (CMakeLists add_executable/link + build.yml allowlist x2); no bitcoin_family/src/core/ other-coin touch. peer.hpp coverage stays in #580 (test_dash_peer).
…t master to clear stale-base CI
frstrtr
added a commit
that referenced
this pull request
Jul 2, 2026
…esolve build.yml CI test-list vs #580 (test_dash_peer + test_dash_share_messages union)
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.
S8 pool-node leaf 1 — dash::Peer
DASH lacks the p2pool sharechain pool-node layer that btc and dgb both carry (
node.hpp/peer.hpp/messages.hpp/share_tracker.hpp/share_messages.hpp). That gap is what blocks the full gate (b) bind/dial-crosses-shares path (the #575 launcher CLI shipped the dial surface; there is nothing on the pool-node side to dial). This is the first separable leaf: the per-peer state struct.Change (fenced to src/impl/dash/ + test wiring)
src/impl/dash/peer.hpp—dash::Peer, analog ofbtc::Peer/dgb::Peer. Holds the version-handshake negotiated fields (version / subversion / services / nonce), connection timestamp, and the remembered-tx protocol sets (m_remote_txsdedup hash set +m_remembered_txshash tocoin::Transactionmap). Pure header-only state, no socket/IO.test/test_dash_peer.cpp— 5 KATs (defaults, version round-trip, remote-tx dedup, remembered-tx roundtrip+erase, monotonic timestamps). 5/5 green, non-hollow (built + run locally, Linux x86_64).test/CMakeLists.txt+.github/workflows/build.yml— additive allowlist wiring only.Fence / safety
src/impl/dash/and test wiring — nobitcoin_family/src/core/ other-coin edits. Per-coin isolation OK.Held for integrator verify -> operator tap. Next leaves (separable): messages.hpp, share_messages.hpp, share_tracker.hpp, node.hpp bridge.