Repository navigation
feat(spec-specs,test-forks,tests): implement EIP-8198 quick slots - #3703
spencer-tb merged 7 commits into
Conversation
af38814 to
011ee1d
Compare
1ad96e5 to
53ec7a8
Compare
…gota Lower the maximum per-block base fee change to 5/48, as the rational BASE_FEE_MAX_CHANGE_NUMERATOR / BASE_FEE_MAX_CHANGE_DENOMINATOR with the multiplication before the division, and set the provisional blob schedule (target 12, maximum 18, update fraction 12018519). The gas limit adjustment rule is unchanged.
… mixin Add `base_fee_max_change_numerator()` (1 from London) and use it in the EIP-1559 base fee calculators. Add the EIP-8198 mixin to Bogota with the 5/48 maximum base fee change and the provisional blob schedule.
…ax change The state-to-blockchain conversion assumed a maximum base fee change of 1/8 when backing out the genesis base fee. Use the genesis fork's numerator and denominator instead; the result is unchanged for forks using 1/8.
Cover the base fee update at its maximum, at target and at small values, the base fee rule and the unchanged gas limit adjustment across the fork, and blob limits, excess blob gas and blob base fee before, at and after the fork.
011ee1d to
de5b55c
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## eips/bogota/eip-8198 #3703 +/- ##
========================================================
+ Coverage 94.91% 94.93% +0.02%
========================================================
Files 672 672
Lines 40846 40849 +3
Branches 3775 3775
========================================================
+ Hits 38767 38779 +12
+ Misses 1445 1440 -5
+ Partials 634 630 -4
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
spencer-tb
left a comment
There was a problem hiding this comment.
Added some commits, rebased on forks/bogota, and changed the base branch to eips/bogota/eip-8198 == forks/bogota :)
Happy to merge to eips/bogota/eip-8198 when you see fit.. once the EIPs repo PR is merged. If this gets included in focil-devnet-1 we can later PR to devnets/focil/1 and get a wider review from the team!
|
Thank you for the review and edits @spencer-tb ! I'm happy to merge anytime, not sure if we should block on the EIP PR itself getting merged. |
Description
Implements the execution-layer side of EIP-8198: Quick Slots (12s → 10s slots) in the Bogota fork. The EL never consumes the slot duration; its diff is two fork-activated parameter changes:
BASE_FEE_MAX_CHANGE_NUMERATOR / BASE_FEE_MAX_CHANGE_DENOMINATOR = 5/48, multiplying before dividing (target_fee_gas_delta * 5 // 48). This matches the per-second reaction rate of 1/8 at 12s to first order; at the extremes the base fee rises ~1.0% faster and falls ~1.1% slower per second.BLOB_BASE_FEE_UPDATE_FRACTION12018519. These keep the fastest rise and fall of the blob base fee per second and the 1.5 max/target ratio; blob throughput per second is +2.9% at both target and maximum. Final values are pending a joint decision with the CL (the CLBLOB_SCHEDULEneeds a matching entry).Test framework:
base_fee_max_change_numerator()(1 from London) and uses it in the EIP-1559 calculators, plus anEIP8198mixin for Bogota.* 8 // 7); it now uses the genesis fork's fraction. Output is unchanged for 1/8 forks.Tests in
tests/bogota/eip8198_quick_slots/cover base fee updates at max, target and small values (including the 1-wei increase floor), the base fee rule and gas limit rule on each side of the fork, and blob limits, excess blob gas and blob base fee before, at and after the fork. The ref-spec pin is the blob of the EIP text with the proposed EL values filled in (to be proposed on ethereum/EIPs#12217).Depends on #3665 (Bogota fork module). Until it lands and this is rebased, the diff includes that module; please review only the last four commits.
Related Issues or PRs
Depends on #3665. EIP: ethereum/EIPs#12217. CL: ethereum/consensus-specs#5592. Tracker: #3664.
Checklist
just static<type>(<area>): <title>, where<type>and<area>come from an appropriateC-<type>, respectivelyA-<area>, label. The title should match the target squash commit message.