feat(execute): skip deterministic factory deploy when it can't be bootstrapped#2944
Open
nerolation wants to merge 2 commits into
Open
feat(execute): skip deterministic factory deploy when it can't be bootstrapped#2944nerolation wants to merge 2 commits into
nerolation wants to merge 2 commits into
Conversation
…ests) when it can't be bootstrapped The deterministic deployment proxy is bootstrapped in an autouse session fixture via a keyless transaction with a fixed gas limit. On chains where the contract-creation intrinsic gas exceeds that limit (so the keyless tx can never be mined), the deploy aborted the entire execute session, blocking even tests that never use the factory. - Pre-flight the deploy with `eth_estimateGas`: if the network requires more gas for the creation than the keyless tx's fixed gas limit, raise instead of attempting it (no funding tx, no doomed send, no inclusion wait). - Make the session fixture best-effort: warn instead of raising, so tests that don't need the factory still run. - Skip a test that requests a deterministic deployment when the factory is unavailable. - Add `EthRPC.estimate_gas` for the pre-flight.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## forks/amsterdam #2944 +/- ##
===================================================
+ Coverage 90.43% 90.49% +0.06%
===================================================
Files 535 535
Lines 32430 32430
Branches 3012 3012
===================================================
+ Hits 29329 29349 +20
+ Misses 2573 2563 -10
+ Partials 528 518 -10
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
LouisTsai-Csie
approved these changes
Jun 1, 2026
Collaborator
LouisTsai-Csie
left a comment
There was a problem hiding this comment.
LGTM, this issue should be resolved after eip-7997 activate.
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.
🗒️ Description
The deterministic deployment proxy is deployed by an autouse session fixture (
execute_required_contracts) using a keyless transaction with a fixed gas limit. On chains where contract creation requires more gas than that limit (e.g. current Glamsterdam devnets), the deployment always fails and aborts the entireexecutesession, even for tests that never use the factory.This PR makes that behavior graceful:
eth_estimateGas. If deployment would require more gas than the keyless transaction allows, skip the attempt and raiseDeterministicFactoryNotDeployableError.EthRPC.estimate_gas.Validated against a Glamsterdam devnet. The deployment is skipped after ~10s with a clear error (
network requires 324236 gas ... exceeding ... 100000), the test session continues, and deterministic deployment tests are skipped instead of failing the entire run.🔗 Related Issues or PRs
N/A.
✅ Checklist
All: Ran fast static checks to avoid unnecessary CI failures:
just staticAll: PR title follows the repo standard (
type(scope):) and can be used as the squash commit message.All: Considered updating the online docs in
./docs/.All: Set appropriate labels for the changes (maintainers only).
Cute Animal Picture