Skip to content

ltc: split advertised protocol version from accept-floor (3600/3301) - #234

Merged
frstrtr merged 1 commit into
masterfrom
ltc-doge/ltc-minproto-split-resoak
Jun 19, 2026
Merged

ltc: split advertised protocol version from accept-floor (3600/3301)#234
frstrtr merged 1 commit into
masterfrom
ltc-doge/ltc-minproto-split-resoak

Conversation

@frstrtr

@frstrtr frstrtr commented Jun 19, 2026

Copy link
Copy Markdown
Owner

proto-version split: advertised (3600) vs accept-floor (3301)

Clean, pure-master follow-up to the live-deployed crossing-soak binary (842ae99b). This is the upstreamable form of the fix already running on the #97 soak.

Rationale

send_version was advertising our accept-floor (min_protocol_version) rather than a higher advertised protocol version. At high v36 saturation a crossing peer (e.g. .82) whose own accept-floor has ratcheted up rejects us as "peer too old" — even though we are fully V36-capable. The split decouples the two:

  • advertised_protocol_version = 3600 — what we announce in send_version (our true capability).
  • accept-floor = 3301 — the floor we still accept inbound peers at, so we never drop a legitimately older crossing peer mid-soak.

Diff is 3 lines across 3 files: src/core/coin_params.hpp (+1 field), src/impl/ltc/node.cpp (advertise the new field), src/impl/ltc/params.hpp (+1 const). Base df9cfb0f.

Evidence

  • BuildID 842ae99b — matches the binary live on the soak.
  • LTC ctest: 7/7 green (Linux x86_64).
  • ASYNC-DEFER string-gate = 1 (event-loop starvation fix present in tree, confirming non-stale build).

Merge note

This is consensus-bearing (proto-version-gate values). Per policy it is NOT auto-merged — integrator surfaces it for a separate explicit operator merge-tap once full CI is green. This PR is for visibility + CI only; it does not touch the running soak (already on the deployed 842ae99b).

send_version advertised minimum_protocol_version (3301), so a crossing
peer (.82) whose accept-floor has ratcheted up at high v36 saturation
rejects us as "peer too old" despite our V36 capability.

Separate a HIGH advertised PROTOCOL_VERSION from a LOW accept floor, as
p2pool does: add coin_params::advertised_protocol_version (LTC 3600 = V36
capability), advertise it in send_version, and keep the accept-floor in
handle_version at minimum_protocol_version (3301) so we still accept v35
(3502) peers for the AutoRatchet crossing. Connectivity floor stays
decoupled from share-version acceptance.
@frstrtr
frstrtr merged commit c69dcca into master Jun 19, 2026
18 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