btc: activate v36 modern layer (AutoRatchet + version-gated donation) - #81
Merged
Conversation
Transition-validation gate, pillars 1 (forward-version-voting) + 4 (donation-migration) for btc's own modern v36 sharechain. btc was present-but-inert; this instantiates the layer. btc-only files — zero ltc/core/other-coin behavior change. - Instantiate btc::AutoRatchet(target_version=36), state under net_dir. - Replace the 3 hardcoded share_version=35 sites with the AutoRatchet -voted version: work_source frozen_ref (via rh_result), ref_hash_fn, and create_local_share. work_source stays coin-agnostic — it consumes rh_result.share_version produced by the btc ref_hash_fn. - create_local_share dispatches on share_version (<=35 v35 path, >=36 v36 path), threading v36_active into generate_share_transaction for locally created shares without touching share_check.hpp. - Version-gate the donation script: pre-v36 P2PK DONATION_SCRIPT, v36+ COMBINED_DONATION_SCRIPT (P2SH 1-of-2) via the existing PoolConfig::get_donation_script(version). Initial + per-PPLNS-refresh. Does NOT touch the share_check.hpp version-transition validation (check()/validate_version_switch) — that is F10, capture-gated. Pillars 2 (DensePPLNSRing) + 3 (anti-hop/whale_departure) remain present-inert; sequenced next.
frstrtr
added a commit
that referenced
this pull request
Jun 12, 2026
…cal 95% punish (F10) - share_check step 2: replace retroactive 95%-obsolescence check with the canonical p2pool check() 60% PPLNS-weighted switch rule (data.py:1396-1414), evaluated only at version boundaries vs the parent. - ShareTracker::get_desired_version_weights: new uint288 PPLNS-weighted variant (weight = ShareIndex::work) for the consensus gate; flat-count get_desired_version_counts retained for AutoRatchet + tail guard (count-based, finding #1 — weighting them would shift activation timing). - Drop should_punish_version (95% obsolescence) and its Phase-4 head-scoring input (share_tracker.hpp:1148); head-scoring now punishes only naughty heads. - Remove dead validate_version_switch (0 callers). Restores #81 zero-divergence parity vs p2pool-merged-v36: no reject/score-down of shares canonical accepts. Linux x86_64 ctest 590/590.
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.
Activates the present-but-inert btc modern layer (pillars 1 forward-version-voting + 4 donation-migration). btc forms its OWN v36 network; not p2pool-parity-bound.
Scope (2 files, btc-only; per-coin isolation invariant held — zero ltc/core/other-coin change):
Out of scope (untouched, per task boundaries): share_check.hpp version-transition VALIDATION (F10, capture-gated behind #81); literal-36 -> version-constant cleanup (cross-cutting ltc/core).
Pillars 2/3 for btc: pillar 2 (DensePPLNSRing) present in src/impl/btc/{node.cpp,share_tracker.hpp}; pillar 3 (anti-hop) not present in src/impl/btc/ — sequence next.
Goal: btc smoke + Linux/macOS/Windows GREEN; btc v36 sharechain forms + votes toward v37. Merge operator-gated.