Raise PoWAveragingWindow to 51 at NU7 activation#21
Draft
evan-forbes wants to merge 7 commits into
Draft
Conversation
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).
Refresh verification benchmark numbers
evan-forbes
force-pushed
the
evan/averaging-window
branch
3 times, most recently
from
May 15, 2026 05:11
8e98c66 to
c451adf
Compare
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
force-pushed
the
evan/averaging-window
branch
from
May 15, 2026 05:19
c451adf to
829c899
Compare
ValarDragon
force-pushed
the
dev/blocktime_reduction_updates
branch
from
May 24, 2026 04:17
e29ab38 to
6455e79
Compare
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.
Summary
Adds the difficulty-averaging-window change to the blocktime-reduction ZIP. At NU7 activation,
PoWAveragingWindowswitches from 17 to 51, preserving the 1,275-second wall-clock smoothing window when target spacing drops from 75 s to 25 s.PostNU7PoWAveragingWindow := 51and makesPoWAveragingWindowa height-dependent function (17 pre-NU7, 51 post-NU7). Mirrors the height-dependent pattern already used forPoWTargetSpacing.PoWAveragingWindow), Zebra-simulator recovery thresholds, the Blossombenchmark_hash_rate_shock_daa_configurationsandsimulate_three_x_target_spacing_reductionin the Zebra benchmark branch.Draft for internal review on the valargroup fork before opening upstream against
zcash/zips:main.Test plan
make all-zipsvia the CI render docker image succeeds (exit 0).[Difficulty averaging window](#difficulty-averaging-window)and[Averaging window](#averaging-window)resolve to the rendered anchor IDs (explicit MMD labels on those headings).~render as literal tildes (escaped to\~so MMD does not interpret them as<sub>markers).[^daa-recovery-benchmark]renders with both function-level GitHub line anchors.