Repository navigation
AZIP-33: Raise the GSE Proof-of-Possession Gas Cap to 300k - #79
Merged
koenmtb1 merged 2 commits intoOct 9, 2026
Merged
Conversation
koenmtb1
approved these changes
Oct 9, 2026
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
This AZIP proposes raising the GSE proof-of-possession gas cap (
proofOfPossessionGasLimit) from 250,000 to 300,000 with one governance action, included in the v6 upgrade payload. The GSE verifies each new validator's BLS proof of possession when the entry queue is flushed, inside a call capped at this value. If a valid key's verification does not fit, the deposit is refunded and the validator is not admitted.Motivation
The cost of verification varies by key.
BN254Lib.hashToPointis a rejection-sampling loop, and each attempt that lands below the field modulus takes a square root with the modexp precompile. The fixed part (about 131k gas, mostly the 113k pairing) did not change with Osaka, but EIP-7883 repriced each square-root call in this loop from 1,338 to 4,016 gas. The 250k cap was sized before Osaka and was not revisited when Osaka activated, so the share of honestly generated keys that no longer fit rose about 150 times.Example: public test key
sk = 57193(95 attempts, 18 sqrt calls) uses 214,891 gas under Prague pricing and 263,095 under Osaka pricing. It registered fine before Osaka and is rejected at 250k today.Before and after
Share of honest keys whose minimum stipend exceeds the cap, summed over the exact joint distribution of attempts and sqrt calls (P(x < p) = 0.189030554816 per attempt, sqrt success 1/2), using the fitted conservative cost model:
Why 300k
300k cuts honest over-cap keys about 87-fold, back to the same order as before Osaka. The only cost is that a deposit whose verification genuinely fails can use up to 50k more gas in the flush transaction. 500k (9.6e-15) or 1M (5.1e-33) lower the rate further, but double or quadruple that per-entry worst case for negligible benefit. The loop is unbounded, so no cap fits every key; key tooling screens keys before registration.
Governance action
GSE.setProofOfPossessionGasLimit(300_000)on the mainnet GSE0xa92ecFD0E70c9cd5E5cd76c50Af0F7Da93567a4f. The GSE is shared, so the new cap applies to all rollup instances that use it from execution onward. No contract code changes.Implementation
What reviewers should check