Fix EIP-3860 initcode size exceeded in FeeQuoter 2.0 deployment#1872
Fix EIP-3860 initcode size exceeded in FeeQuoter 2.0 deployment#1872finleydecker wants to merge 3 commits intomainfrom
Conversation
There was a problem hiding this comment.
Pull request overview
This PR addresses EIP-3860 initcode size limits preventing FeeQuoter v2.0.0 deployments (e.g., Sepolia) by ensuring large configuration blobs are no longer ABI-encoded into the constructor initcode, and are instead applied via existing post-deploy setter operations in the update sequence.
Changes:
- Update FeeQuoter v2.0.0 input creation to populate constructor args with only
StaticConfig, routing PriceUpdaters/DestChainConfigs/TokenTransferFee configs through post-deploy update fields. - Fix
mergeDestChainConfigsto correctly merge when the “base” slice is empty. - Update the sequence input creation test expectations to reflect the new constructor-vs-post-deploy split.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
ccv/chains/evm/deployment/v2_0_0/sequences/sequence_fee_quoter_input_creation_test.go |
Updates expected FeeQuoterUpdate outputs to expect only StaticConfig in constructor args and the rest in post-deploy update fields. |
ccv/chains/evm/deployment/v2_0_0/sequences/fee_quoter.go |
Moves large config payloads out of constructor args into update fields for new deployments and corrects dest-chain config merging when the base is empty. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
| output.AuthorizedCallerUpdates = fqops.AuthorizedCallerArgs{ | ||
| AddedCallers: fqOutput.PriceUpdaters, | ||
| } | ||
| output.TokenTransferFeeConfigUpdates = fqops.ApplyTokenTransferFeeConfigUpdatesArgs{ | ||
| TokenTransferFeeConfigArgs: tokenTransferFeeConfigArgs, | ||
| } | ||
| output.DestChainConfigs = allDestChainConfigs |
There was a problem hiding this comment.
why is this needed? it's already handled in else part
AnieeG
left a comment
There was a problem hiding this comment.
We don't need this change if you mention input.RemoteChainSelectors for selective remote chains, this will work. otherwise the destchain config related call can revert due to huge data as well
Problem
upgrade_to_feequoter_2_0 failed on Ethereum Sepolia with code size 79440 limit 49152. ABI-encoded constructor args (~51KB) alone exceeded EIP-3860's 49,152 byte initcode limit.
Failed durable pipeline run
Fix
For new FQ 2.0.0 deployments, move PriceUpdaters, DestChainConfigArgs, and TokenTransferFeeConfigArgs out of the constructor and into post-deploy setter calls.
SequenceFeeQuoterUpdate already invokes ApplyAuthorizedCallerUpdates, ApplyDestChainConfigUpdates, and ApplyTokenTransferFeeConfigUpdates after deploy. This change routes the data through those existing paths instead.