Skip to content

Raise PoWAveragingWindow to 51 at NU7 activation#21

Draft
evan-forbes wants to merge 7 commits into
dev/blocktime_reduction_updatesfrom
evan/averaging-window
Draft

Raise PoWAveragingWindow to 51 at NU7 activation#21
evan-forbes wants to merge 7 commits into
dev/blocktime_reduction_updatesfrom
evan/averaging-window

Conversation

@evan-forbes

Copy link
Copy Markdown

Summary

Adds the difficulty-averaging-window change to the blocktime-reduction ZIP. At NU7 activation, PoWAveragingWindow switches from 17 to 51, preserving the 1,275-second wall-clock smoothing window when target spacing drops from 75 s to 25 s.

  • Consensus change: introduces PostNU7PoWAveragingWindow := 51 and makes PoWAveragingWindow a height-dependent function (17 pre-NU7, 51 post-NU7). Mirrors the height-dependent pattern already used for PoWTargetSpacing.
  • Effect on difficulty adjustment: updated inline to describe the change ($17 \times 75 = 1{,}275$ s → $17 \times 25 = 425$ s contraction without the bump, vs. $51 \times 25 = 1{,}275$ s preserved with it).
  • Rationale — Difficulty averaging window: new section with a Scope note (51 is chosen to preserve the status quo, not to claim it is the optimal value of PoWAveragingWindow), Zebra-simulator recovery thresholds, the Blossom $2{,}550 \to 1{,}275$ s precedent, and a devnet stddev measurement.
  • Footnote: points at benchmark_hash_rate_shock_daa_configurations and simulate_three_x_target_spacing_reduction in the Zebra benchmark branch.

Draft for internal review on the valargroup fork before opening upstream against zcash/zips:main.

Test plan

  • make all-zips via the CI render docker image succeeds (exit 0).
  • In-document cross-refs [Difficulty averaging window](#difficulty-averaging-window) and [Averaging window](#averaging-window) resolve to the rendered anchor IDs (explicit MMD labels on those headings).
  • Recovery table cells with ~ render as literal tildes (escaped to \~ so MMD does not interpret them as <sub> markers).
  • Footnote [^daa-recovery-benchmark] renders with both function-level GitHub line anchors.
  • Reviewer to confirm wording / scope framing reads correctly.

ValarDragon and others added 5 commits May 15, 2026 01:09
Replace ambiguous '4 physical-core benchmark machine' wording with
'modern AMD laptop CPU with 4 pinned threads' in both the Security
and Measured timing sections.
Today's Orchard worst case is ~436 actions / 556.53 ± 9.81 ms (was
~616 / 769.85 ± 16.18). Updates the derived ratio in the proposed
worst-case prose accordingly (a little over half -> about three quarters).
@evan-forbes
evan-forbes force-pushed the evan/averaging-window branch 3 times, most recently from 8e98c66 to c451adf Compare May 15, 2026 05:11
Specify PostNU7PoWAveragingWindow := 51 and redefine
PoWAveragingWindow as a height-dependent function (17 pre-NU7, 51
post-NU7), preserving the 1,275-second wall-clock smoothing window
across the target-spacing reduction. Add a Difficulty averaging
window rationale section covering motivation, simulator recovery,
Blossom as a real-world reference point, and devnet variance
measurements. Trim the duplicated rationale from the Effect on
difficulty adjustment section.

Also restore the dense-Orchard worst-case row to the earlier
~616-action / 769.85 ms figure pending verification of the re-run
benchmark.
The reference is today's global worst case = Sapling at 3,174.90 ms.

- New Orchard worst case: 432.11 / 3,174.90 ≈ 14%
- New Sapling worst case: 271.51 / 3,174.90 ≈ 8.6% ("less than one tenth")

This also makes the sentence internally consistent. The previous
wording compared new-Orchard to today's-Orchard (432/770 ≈ 56%,
"a little over half") but compared new-Sapling to today's-Sapling
(272/3175 ≈ 8.6%, "less than one tenth") — two different denominators.
With "14%", both halves now reference the same denominator (today's
overall worst case).
@evan-forbes
evan-forbes force-pushed the evan/averaging-window branch from c451adf to 829c899 Compare May 15, 2026 05:19
@ValarDragon
ValarDragon force-pushed the dev/blocktime_reduction_updates branch from e29ab38 to 6455e79 Compare May 24, 2026 04:17
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.

2 participants