1.6 UpdateLanes Changeset to include FQ2.0 Updates#21499
1.6 UpdateLanes Changeset to include FQ2.0 Updates#21499
Conversation
|
👋 simsonraj, thanks for creating this pull request! To help reviewers, please consider creating future PRs as drafts first. This allows you to self-review and make any final changes before notifying the team. Once you're ready, you can mark it as "Ready for review" to request feedback. Thanks! |
|
✅ No conflicts with other open PRs targeting |
There was a problem hiding this comment.
Pull request overview
Risk Rating: HIGH (changeset logic now conditionally routes FeeQuoter updates across major versions and affects MCMS proposal composition)
This PR updates the CCIP v1.6 lane update changeset to support FeeQuoter v2.0 (FQ2.0) chains by resolving the correct FeeQuoter target per chain, splitting v1 vs v2 update execution, and aggregating resulting MCMS operations into a single proposal.
Changes:
- Resolve FeeQuoter address+version per chain from the address book/datastore and route updates to v1 or v2 sequences accordingly.
- Convert v1.6 FeeQuoter dest/price updates into v2.0 update inputs and execute the v2 FeeQuoter update sequence per chain.
- Aggregate v1 and v2 batch operations into a single MCMS timelock proposal (when MCMS is enabled).
| DefaultTokenDestGasOverhead: cfg.DestChainConfig.DefaultTokenDestGasOverhead, | ||
| DefaultTxGasLimit: cfg.DestChainConfig.DefaultTxGasLimit, | ||
| NetworkFeeUSDCents: uint16(cfg.DestChainConfig.NetworkFeeUSDCents), | ||
| LinkFeeMultiplierPercent: fqv2seq.LinkFeeMultiplierPercent, | ||
| }, |
There was a problem hiding this comment.
NetworkFeeUSDCents is being narrowed to uint16. If the source value exceeds math.MaxUint16, this will overflow and produce an incorrect fee in the v2 FeeQuoter update. Add an explicit range check (and fail fast) before converting, or adjust the v2 struct field/type if it should support larger values.
CORA - Pending Reviewers
Legend: ✅ Approved | ❌ Changes Requested | 💬 Commented | 🚫 Dismissed | ⏳ Pending | ❓ Unknown For more details, see the full review summary. |
|
I see you updated files related to
|
| e.BlockChains, | ||
| fqUpdate, | ||
| ) | ||
| output.Reports = append(output.Reports, v2Report.ExecutionReports...) |
There was a problem hiding this comment.
v2Report is used before checking the err
|
|
||
| // Execute v2 FeeQuoter update sequences and append their batch ops | ||
| var v2BatchOps []mcmstypes.BatchOperation | ||
| for chainSel := range v2FeeQuoterChains { |
There was a problem hiding this comment.
Maps are not ordered so this yields different outcomes every time you run it, should the outcome not be deterministic?
There was a problem hiding this comment.
reports/batches are generated perchain & added to the proposal batch independently per chain, I don't think the ordering is checked in the proposal execution or the tests
|




This updates FQ updates to include 2.0 Updates. when 1.5 - > 1.6 migration already has 2.0 FQ deployed