Skip to content

Commit 9af1abf

Browse files
committed
Merge branch 'main' of github.com:smartcontractkit/chainlink-ccip
2 parents cfd87b7 + 48c0e2b commit 9af1abf

File tree

4 files changed

+47
-13
lines changed

4 files changed

+47
-13
lines changed

chains/evm/deployment/v2_0_0/adapters/feequoterupdater.go

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,18 +29,23 @@ func (fqu FeeQuoterUpdater[FeeQUpdateArgs]) SequenceFeeQuoterInputCreation() *cl
2929
if !ok {
3030
return zero, fmt.Errorf("chain with selector %d not found in environment", input.ChainSelector)
3131
}
32-
// get the FeeQuoterUpdateOutput from both v1.6.0 and v1.5.0 sequences and combine them to create the input for the fee quoter update sequence
33-
report, err := cldf_ops.ExecuteSequence(b, fqseq.CreateFeeQuoterUpdateInputFromV16x, chain, input)
34-
if err != nil {
35-
return zero, fmt.Errorf("failed to create FeeQuoterUpdateInput from v1.6.0: %w", err)
36-
}
37-
output16 := report.Output
38-
39-
report15, err := cldf_ops.ExecuteSequence(b, fqseq.CreateFeeQuoterUpdateInputFromV150, chain, input)
40-
if err != nil {
41-
return zero, fmt.Errorf("failed to create FeeQuoterUpdateInput from v1.5.0: %w", err)
32+
var output16, output15 fqseq.FeeQuoterUpdate
33+
for _, version := range input.PreviousVersions {
34+
switch version.String() {
35+
case "1.6.0":
36+
report, err := cldf_ops.ExecuteSequence(b, fqseq.CreateFeeQuoterUpdateInputFromV16x, chain, input)
37+
if err != nil {
38+
return zero, fmt.Errorf("failed to create FeeQuoterUpdateInput from v1.6.0: %w", err)
39+
}
40+
output16 = report.Output
41+
case "1.5.0":
42+
report15, err := cldf_ops.ExecuteSequence(b, fqseq.CreateFeeQuoterUpdateInputFromV150, chain, input)
43+
if err != nil {
44+
return zero, fmt.Errorf("failed to create FeeQuoterUpdateInput from v1.5.0: %w", err)
45+
}
46+
output15 = report15.Output
47+
}
4248
}
43-
output15 := report15.Output
4449
// combine the outputs from both sequences to create the input for the fee quoter update sequence
4550
out, err := fqseq.MergeFeeQuoterUpdateOutputs(output16, output15)
4651
if err != nil {

chains/evm/deployment/v2_0_0/sequences/fee_quoter.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -519,7 +519,27 @@ var (
519519
// output16 takes precedence and output15 fills in only missing entries.
520520
func MergeFeeQuoterUpdateOutputs(output16, output15 FeeQuoterUpdate) (FeeQuoterUpdate, error) {
521521
result := output16
522+
empty16, err := output16.IsEmpty()
523+
if err != nil {
524+
return FeeQuoterUpdate{}, fmt.Errorf("failed to check if output16 is empty: %w", err)
525+
}
526+
empty15, err := output15.IsEmpty()
527+
if err != nil {
528+
return FeeQuoterUpdate{}, fmt.Errorf("failed to check if output15 is empty: %w", err)
529+
}
522530

531+
if empty16 && empty15 {
532+
return FeeQuoterUpdate{}, nil
533+
}
534+
535+
// if output16 is empty, we can just return output15
536+
if empty16 {
537+
return output15, nil
538+
}
539+
// if output15 is empty, we can just return output16
540+
if empty15 {
541+
return output16, nil
542+
}
523543
// ConstructorArgs: use output15 if output16 is empty
524544
if IsConstructorArgsEmpty(result.ConstructorArgs) {
525545
result.ConstructorArgs = output15.ConstructorArgs

chains/evm/deployment/v2_0_0/sequences/sequence_fee_quoter_input_creation_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -821,6 +821,10 @@ func TestSequenceFeeQuoterInputCreation(t *testing.T) {
821821
if chainSelector == 5009297550715157269 {
822822
input.RemoteChainSelectors = []uint64{15971525489660198786}
823823
}
824+
input.PreviousVersions = []*semver.Version{
825+
semver.MustParse("1.5.0"),
826+
semver.MustParse("1.6.0"),
827+
}
824828
// Execute the sequence
825829
report, err := cldf_ops.ExecuteSequence(
826830
e.OperationsBundle,

deployment/deploy/feequoterupdater.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,12 @@ type AdditionalFeeQuoterConfig struct {
4444
}
4545

4646
type FeeQuoterUpdateInput struct {
47-
ChainSelector uint64
48-
ExistingAddresses []datastore.AddressRef
47+
ChainSelector uint64
48+
ExistingAddresses []datastore.AddressRef
49+
// PreviousVersions lists the supported config-importer / lane versions that
50+
// should be consulted when deriving the FeeQuoter configuration for this chain.
51+
// It does NOT refer to previous FeeQuoter contract deployment versions.
52+
PreviousVersions []*semver.Version
4953
RemoteChainSelectors []uint64
5054
AdditionalConfig *AdditionalFeeQuoterConfig
5155
ContractMeta []datastore.ContractMetadata
@@ -330,6 +334,7 @@ func updateFeeQuoterApply() func(cldf.Environment, UpdateFeeQuoterInput) (cldf.C
330334
RemoteChainSelectors: perChainInput.RemoteChainSelectors,
331335
TimelockAddress: timelockAddr,
332336
AdditionalConfig: perChainInput.FeeQuoterConfig,
337+
PreviousVersions: configImporterVersions,
333338
})
334339
if err != nil {
335340
return cldf.ChangesetOutput{}, fmt.Errorf("failed to create FeeQuoterUpdateInput for chain %d: %w", chainSel, err)

0 commit comments

Comments
 (0)