From 73a608ab8eec04e0cf9246d8f08ca55abe67bc70 Mon Sep 17 00:00:00 2001 From: Kashif Date: Fri, 12 Jul 2024 02:31:12 +0900 Subject: [PATCH 1/2] (SHIP-1481) Increase default LimitDefault for CCIP (#664) LimitDefault of 8M is the most common value used in chains so setting this as the default --------- Co-authored-by: amaechiokolobi <168412367+amaechiokolobi@users.noreply.github.com> Co-authored-by: skudasov Co-authored-by: Simson --- .changeset/README.md | 8 - .changeset/afraid-cameras-laugh.md | 5 - .changeset/beige-tables-visit.md | 5 - .changeset/brown-rings-allow.md | 5 - .changeset/calm-roses-bathe.md | 5 - .changeset/cold-seals-listen.md | 5 - .changeset/config.json | 20 -- .changeset/cool-squids-repair.md | 5 - .changeset/curly-rocks-fold.md | 5 - .changeset/cyan-walls-joke.md | 5 - .changeset/dry-eels-change.md | 5 - .changeset/dry-turtles-sleep.md | 5 - .changeset/eight-crews-dance.md | 5 - .changeset/eleven-planets-smash.md | 5 - .changeset/eleven-singers-march.md | 5 - .changeset/fast-hounds-build.md | 5 - .changeset/few-spies-march.md | 5 - .changeset/few-zoos-hope.md | 5 - .changeset/fifty-ducks-beg.md | 5 - .changeset/flat-eyes-exercise.md | 5 - .changeset/fluffy-geese-act.md | 5 - .changeset/friendly-parents-wonder.md | 5 - .changeset/funny-bananas-vanish.md | 5 - .changeset/funny-walls-yawn.md | 5 - .changeset/gentle-jobs-flow.md | 5 - .changeset/giant-otters-matter.md | 5 - .changeset/giant-wolves-count.md | 5 - .changeset/good-countries-remain.md | 5 - .changeset/gorgeous-meals-kneel.md | 5 - .changeset/green-fishes-fix.md | 5 - .changeset/grumpy-bees-bathe.md | 5 - .changeset/grumpy-guests-joke.md | 5 - .changeset/happy-jokes-reply.md | 5 - .changeset/healthy-years-wave.md | 5 - .changeset/heavy-oranges-smell.md | 5 - .changeset/hip-dingos-shout.md | 5 - .changeset/honest-clouds-march.md | 5 - .changeset/honest-foxes-reflect.md | 5 - .changeset/honest-pens-flash.md | 5 - .changeset/hungry-cougars-float.md | 5 - .changeset/hungry-hounds-search.md | 5 - .changeset/hungry-spiders-beg.md | 5 - .changeset/itchy-cheetahs-return.md | 5 - .changeset/kind-mangos-check.md | 5 - .changeset/kind-months-brush.md | 5 - .changeset/large-bottles-dress.md | 5 - .changeset/large-keys-sniff.md | 5 - .changeset/light-suns-build.md | 5 - .changeset/lovely-feet-share.md | 5 - .changeset/many-pigs-brake.md | 5 - .changeset/mean-jobs-bathe.md | 5 - .changeset/moody-masks-perform.md | 5 - .changeset/neat-birds-smash.md | 5 - .changeset/neat-pandas-glow.md | 5 - .changeset/nice-donuts-yell.md | 5 - .changeset/nice-falcons-sniff.md | 5 - .changeset/nice-pumpkins-itch.md | 5 - .changeset/ninety-rabbits-hear.md | 5 - .changeset/olive-masks-bow.md | 5 - .changeset/perfect-swans-tie.md | 5 - .changeset/pink-fans-run.md | 5 - .changeset/poor-trains-develop.md | 5 - .changeset/pretty-clocks-rhyme.md | 5 - .changeset/proud-glasses-give.md | 5 - .changeset/rotten-colts-speak.md | 5 - .changeset/rotten-dogs-clean.md | 5 - .changeset/rude-jokes-move.md | 5 - .changeset/serious-hounds-hear.md | 5 - .changeset/seven-hats-help.md | 5 - .changeset/sharp-bikes-hunt.md | 5 - .changeset/shiny-peas-look.md | 5 - .changeset/shiny-tips-mate.md | 5 - .changeset/short-cows-study.md | 5 - .changeset/short-tigers-report.md | 5 - .changeset/silly-eels-hunt.md | 5 - .changeset/six-berries-hammer.md | 5 - .changeset/six-tools-laugh.md | 5 - .changeset/six-wolves-relax.md | 5 - .changeset/sixty-spiders-end.md | 5 - .changeset/smooth-turtles-visit.md | 5 - .changeset/soft-numbers-invent.md | 5 - .changeset/sour-owls-brush.md | 5 - .changeset/spicy-comics-listen.md | 5 - .changeset/spotty-ants-bake.md | 5 - .changeset/spotty-timers-play.md | 5 - .changeset/strange-experts-fold.md | 5 - .changeset/swift-crabs-sing.md | 5 - .changeset/tasty-rice-hope.md | 5 - .changeset/ten-adults-try.md | 5 - .changeset/ten-spiders-reflect.md | 5 - .changeset/tender-pants-trade.md | 5 - .changeset/thick-moles-behave.md | 5 - .changeset/thin-elephants-rush.md | 5 - .changeset/thin-needles-grow.md | 5 - .changeset/thin-rats-smash.md | 5 - .changeset/thirty-rockets-nail.md | 5 - .changeset/tidy-hairs-pull.md | 5 - .changeset/tiny-gorillas-destroy.md | 5 - .changeset/twelve-donuts-sell.md | 5 - .changeset/twelve-grapes-hammer.md | 5 - .changeset/violet-pumas-appear.md | 5 - .changeset/warm-doors-march.md | 5 - .changeset/weak-brooms-sing.md | 5 - .changeset/weak-moles-clean.md | 5 - .changeset/weak-months-turn.md | 5 - .changeset/wet-forks-pretend.md | 5 - .changeset/wild-falcons-speak.md | 5 - .changeset/young-camels-return.md | 6 - .changeset/young-hounds-wave.md | 5 - .github/workflows/integration-tests.yml | 1 + core/chains/evm/config/config_test.go | 38 +-- .../evm/config/toml/defaults/fallback.toml | 4 +- core/config/docs/chains-evm.toml | 4 +- core/internal/features/features_test.go | 12 +- .../config-multi-chain-effective.toml | 12 +- .../config-multi-chain-effective.toml | 12 +- docs/CONFIG.md | 244 +++++++++--------- integration-tests/testconfig/default.toml | 2 +- testdata/scripts/keys/eth/help.txtar | 2 +- .../disk-based-logging-disabled.txtar | 4 +- .../validate/disk-based-logging-no-dir.txtar | 4 +- .../node/validate/disk-based-logging.txtar | 4 +- testdata/scripts/node/validate/invalid.txtar | 4 +- testdata/scripts/node/validate/valid.txtar | 4 +- 124 files changed, 176 insertions(+), 739 deletions(-) delete mode 100644 .changeset/README.md delete mode 100644 .changeset/afraid-cameras-laugh.md delete mode 100644 .changeset/beige-tables-visit.md delete mode 100644 .changeset/brown-rings-allow.md delete mode 100644 .changeset/calm-roses-bathe.md delete mode 100644 .changeset/cold-seals-listen.md delete mode 100644 .changeset/config.json delete mode 100644 .changeset/cool-squids-repair.md delete mode 100644 .changeset/curly-rocks-fold.md delete mode 100644 .changeset/cyan-walls-joke.md delete mode 100644 .changeset/dry-eels-change.md delete mode 100644 .changeset/dry-turtles-sleep.md delete mode 100644 .changeset/eight-crews-dance.md delete mode 100644 .changeset/eleven-planets-smash.md delete mode 100644 .changeset/eleven-singers-march.md delete mode 100644 .changeset/fast-hounds-build.md delete mode 100644 .changeset/few-spies-march.md delete mode 100644 .changeset/few-zoos-hope.md delete mode 100644 .changeset/fifty-ducks-beg.md delete mode 100644 .changeset/flat-eyes-exercise.md delete mode 100644 .changeset/fluffy-geese-act.md delete mode 100644 .changeset/friendly-parents-wonder.md delete mode 100644 .changeset/funny-bananas-vanish.md delete mode 100644 .changeset/funny-walls-yawn.md delete mode 100644 .changeset/gentle-jobs-flow.md delete mode 100644 .changeset/giant-otters-matter.md delete mode 100644 .changeset/giant-wolves-count.md delete mode 100644 .changeset/good-countries-remain.md delete mode 100644 .changeset/gorgeous-meals-kneel.md delete mode 100644 .changeset/green-fishes-fix.md delete mode 100644 .changeset/grumpy-bees-bathe.md delete mode 100644 .changeset/grumpy-guests-joke.md delete mode 100644 .changeset/happy-jokes-reply.md delete mode 100644 .changeset/healthy-years-wave.md delete mode 100644 .changeset/heavy-oranges-smell.md delete mode 100644 .changeset/hip-dingos-shout.md delete mode 100644 .changeset/honest-clouds-march.md delete mode 100644 .changeset/honest-foxes-reflect.md delete mode 100644 .changeset/honest-pens-flash.md delete mode 100644 .changeset/hungry-cougars-float.md delete mode 100644 .changeset/hungry-hounds-search.md delete mode 100644 .changeset/hungry-spiders-beg.md delete mode 100644 .changeset/itchy-cheetahs-return.md delete mode 100644 .changeset/kind-mangos-check.md delete mode 100644 .changeset/kind-months-brush.md delete mode 100644 .changeset/large-bottles-dress.md delete mode 100644 .changeset/large-keys-sniff.md delete mode 100644 .changeset/light-suns-build.md delete mode 100644 .changeset/lovely-feet-share.md delete mode 100644 .changeset/many-pigs-brake.md delete mode 100644 .changeset/mean-jobs-bathe.md delete mode 100644 .changeset/moody-masks-perform.md delete mode 100644 .changeset/neat-birds-smash.md delete mode 100644 .changeset/neat-pandas-glow.md delete mode 100644 .changeset/nice-donuts-yell.md delete mode 100644 .changeset/nice-falcons-sniff.md delete mode 100644 .changeset/nice-pumpkins-itch.md delete mode 100644 .changeset/ninety-rabbits-hear.md delete mode 100644 .changeset/olive-masks-bow.md delete mode 100644 .changeset/perfect-swans-tie.md delete mode 100644 .changeset/pink-fans-run.md delete mode 100644 .changeset/poor-trains-develop.md delete mode 100644 .changeset/pretty-clocks-rhyme.md delete mode 100644 .changeset/proud-glasses-give.md delete mode 100644 .changeset/rotten-colts-speak.md delete mode 100644 .changeset/rotten-dogs-clean.md delete mode 100644 .changeset/rude-jokes-move.md delete mode 100644 .changeset/serious-hounds-hear.md delete mode 100644 .changeset/seven-hats-help.md delete mode 100644 .changeset/sharp-bikes-hunt.md delete mode 100644 .changeset/shiny-peas-look.md delete mode 100644 .changeset/shiny-tips-mate.md delete mode 100644 .changeset/short-cows-study.md delete mode 100644 .changeset/short-tigers-report.md delete mode 100644 .changeset/silly-eels-hunt.md delete mode 100644 .changeset/six-berries-hammer.md delete mode 100644 .changeset/six-tools-laugh.md delete mode 100644 .changeset/six-wolves-relax.md delete mode 100644 .changeset/sixty-spiders-end.md delete mode 100644 .changeset/smooth-turtles-visit.md delete mode 100644 .changeset/soft-numbers-invent.md delete mode 100644 .changeset/sour-owls-brush.md delete mode 100644 .changeset/spicy-comics-listen.md delete mode 100644 .changeset/spotty-ants-bake.md delete mode 100644 .changeset/spotty-timers-play.md delete mode 100644 .changeset/strange-experts-fold.md delete mode 100644 .changeset/swift-crabs-sing.md delete mode 100644 .changeset/tasty-rice-hope.md delete mode 100644 .changeset/ten-adults-try.md delete mode 100644 .changeset/ten-spiders-reflect.md delete mode 100644 .changeset/tender-pants-trade.md delete mode 100644 .changeset/thick-moles-behave.md delete mode 100644 .changeset/thin-elephants-rush.md delete mode 100644 .changeset/thin-needles-grow.md delete mode 100644 .changeset/thin-rats-smash.md delete mode 100644 .changeset/thirty-rockets-nail.md delete mode 100644 .changeset/tidy-hairs-pull.md delete mode 100644 .changeset/tiny-gorillas-destroy.md delete mode 100644 .changeset/twelve-donuts-sell.md delete mode 100644 .changeset/twelve-grapes-hammer.md delete mode 100644 .changeset/violet-pumas-appear.md delete mode 100644 .changeset/warm-doors-march.md delete mode 100644 .changeset/weak-brooms-sing.md delete mode 100644 .changeset/weak-moles-clean.md delete mode 100644 .changeset/weak-months-turn.md delete mode 100644 .changeset/wet-forks-pretend.md delete mode 100644 .changeset/wild-falcons-speak.md delete mode 100644 .changeset/young-camels-return.md delete mode 100644 .changeset/young-hounds-wave.md diff --git a/.changeset/README.md b/.changeset/README.md deleted file mode 100644 index e5b6d8d6a6..0000000000 --- a/.changeset/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Changesets - -Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works -with multi-package repos, or single-package repos to help you version and publish your code. You can -find the full documentation for it [in our repository](https://github.com/changesets/changesets) - -We have a quick list of common questions to get you started engaging with this project in -[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) diff --git a/.changeset/afraid-cameras-laugh.md b/.changeset/afraid-cameras-laugh.md deleted file mode 100644 index f727936fff..0000000000 --- a/.changeset/afraid-cameras-laugh.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -This effectively reverts the multi-offramp feature previously added to Commit DON diff --git a/.changeset/beige-tables-visit.md b/.changeset/beige-tables-visit.md deleted file mode 100644 index b778b635cd..0000000000 --- a/.changeset/beige-tables-visit.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Validate bft (f+1) for observed liquidity per chain diff --git a/.changeset/brown-rings-allow.md b/.changeset/brown-rings-allow.md deleted file mode 100644 index 8c1f9ba6ec..0000000000 --- a/.changeset/brown-rings-allow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -remove checking for token pool rate limits diff --git a/.changeset/calm-roses-bathe.md b/.changeset/calm-roses-bathe.md deleted file mode 100644 index 56b1017631..0000000000 --- a/.changeset/calm-roses-bathe.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": minor ---- - -Batched report execution for multi-offramp diff --git a/.changeset/cold-seals-listen.md b/.changeset/cold-seals-listen.md deleted file mode 100644 index efc52933f2..0000000000 --- a/.changeset/cold-seals-listen.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Fetching nonces from chain instead of relying on inflight cache values diff --git a/.changeset/config.json b/.changeset/config.json deleted file mode 100644 index 67c9559cd1..0000000000 --- a/.changeset/config.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "https://unpkg.com/@changesets/config@2.3.1/schema.json", - "changelog": [ - "@changesets/changelog-github", - { - "repo": "smartcontractkit/ccip" - } - ], - "commit": false, - "fixed": [], - "linked": [], - "privatePackages": { - "version": true, - "tag": true - }, - "access": "restricted", - "baseBranch": "ccip-develop", - "updateInternalDependencies": "patch", - "ignore": [] -} diff --git a/.changeset/cool-squids-repair.md b/.changeset/cool-squids-repair.md deleted file mode 100644 index 573672e175..0000000000 --- a/.changeset/cool-squids-repair.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Passing destChainSelector when checking if source RMN is cursed for OnRamp 1.5 diff --git a/.changeset/curly-rocks-fold.md b/.changeset/curly-rocks-fold.md deleted file mode 100644 index f30989dd56..0000000000 --- a/.changeset/curly-rocks-fold.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Parallelize the procedure of liquidity discovery/syncing diff --git a/.changeset/cyan-walls-joke.md b/.changeset/cyan-walls-joke.md deleted file mode 100644 index 6d1acb7fc8..0000000000 --- a/.changeset/cyan-walls-joke.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": minor ---- - -implement multi onramp static configs diff --git a/.changeset/dry-eels-change.md b/.changeset/dry-eels-change.md deleted file mode 100644 index 5063aa7388..0000000000 --- a/.changeset/dry-eels-change.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Converts script for decoding transaction revert reasons to a CLI method diff --git a/.changeset/dry-turtles-sleep.md b/.changeset/dry-turtles-sleep.md deleted file mode 100644 index d2b74f21d1..0000000000 --- a/.changeset/dry-turtles-sleep.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -#updated token price reporting observation threshold to improve safety duringphased rollout diff --git a/.changeset/eight-crews-dance.md b/.changeset/eight-crews-dance.md deleted file mode 100644 index 81fedc236d..0000000000 --- a/.changeset/eight-crews-dance.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -#added liquidity manager jobspec generation utils diff --git a/.changeset/eleven-planets-smash.md b/.changeset/eleven-planets-smash.md deleted file mode 100644 index 9e9d54acac..0000000000 --- a/.changeset/eleven-planets-smash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -(fix): Log line in CCIP commit plugin observePriceUpdates needs key/value diff --git a/.changeset/eleven-singers-march.md b/.changeset/eleven-singers-march.md deleted file mode 100644 index 9953a5ad99..0000000000 --- a/.changeset/eleven-singers-march.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -support parallel execution of batched rpc calls diff --git a/.changeset/fast-hounds-build.md b/.changeset/fast-hounds-build.md deleted file mode 100644 index d982179aac..0000000000 --- a/.changeset/fast-hounds-build.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -#bugfix Use decimals to normalize aggregator prices diff --git a/.changeset/few-spies-march.md b/.changeset/few-spies-march.md deleted file mode 100644 index 0bf059fcfb..0000000000 --- a/.changeset/few-spies-march.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": minor ---- - -#changed Implement hook-based multi-aggregate rate limiter diff --git a/.changeset/few-zoos-hope.md b/.changeset/few-zoos-hope.md deleted file mode 100644 index 29d9c68aae..0000000000 --- a/.changeset/few-zoos-hope.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": minor ---- - -Add multi commit store get wrappers diff --git a/.changeset/fifty-ducks-beg.md b/.changeset/fifty-ducks-beg.md deleted file mode 100644 index cac80f60d2..0000000000 --- a/.changeset/fifty-ducks-beg.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -use deterministic sorting in LM plugin diff --git a/.changeset/flat-eyes-exercise.md b/.changeset/flat-eyes-exercise.md deleted file mode 100644 index 237285085e..0000000000 --- a/.changeset/flat-eyes-exercise.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -ccip: support out of order execution diff --git a/.changeset/fluffy-geese-act.md b/.changeset/fluffy-geese-act.md deleted file mode 100644 index e941d600fd..0000000000 --- a/.changeset/fluffy-geese-act.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Add comment about USDC attestations endpoint. diff --git a/.changeset/friendly-parents-wonder.md b/.changeset/friendly-parents-wonder.md deleted file mode 100644 index 5f96f492ad..0000000000 --- a/.changeset/friendly-parents-wonder.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Bumping chain-selectors to include most recent changes diff --git a/.changeset/funny-bananas-vanish.md b/.changeset/funny-bananas-vanish.md deleted file mode 100644 index dee23b8536..0000000000 --- a/.changeset/funny-bananas-vanish.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": minor ---- - -#added implement multi onramp fee token configs diff --git a/.changeset/funny-walls-yawn.md b/.changeset/funny-walls-yawn.md deleted file mode 100644 index dbebdb7ee9..0000000000 --- a/.changeset/funny-walls-yawn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Extend observation validation to check nil values where we use pointers (e.g. \*ubig.Int) diff --git a/.changeset/gentle-jobs-flow.md b/.changeset/gentle-jobs-flow.md deleted file mode 100644 index 8740d01fff..0000000000 --- a/.changeset/gentle-jobs-flow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Renaming package and internal structs from 'rebalancer' to 'liquidity manager' diff --git a/.changeset/giant-otters-matter.md b/.changeset/giant-otters-matter.md deleted file mode 100644 index b0f79aeb74..0000000000 --- a/.changeset/giant-otters-matter.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -add registry module & fill out token admin registry functions diff --git a/.changeset/giant-wolves-count.md b/.changeset/giant-wolves-count.md deleted file mode 100644 index 88ffd9a896..0000000000 --- a/.changeset/giant-wolves-count.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -use forge fmt in precommit and remove unused import diff --git a/.changeset/good-countries-remain.md b/.changeset/good-countries-remain.md deleted file mode 100644 index 456520d00a..0000000000 --- a/.changeset/good-countries-remain.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": minor ---- - -#added A factory to provide access to the internal HashLeaf functions. diff --git a/.changeset/gorgeous-meals-kneel.md b/.changeset/gorgeous-meals-kneel.md deleted file mode 100644 index 710d706297..0000000000 --- a/.changeset/gorgeous-meals-kneel.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -#updated golangci-lint with custom rules diff --git a/.changeset/green-fishes-fix.md b/.changeset/green-fishes-fix.md deleted file mode 100644 index 1b85e80174..0000000000 --- a/.changeset/green-fishes-fix.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -remove inflight cache from commit plugin diff --git a/.changeset/grumpy-bees-bathe.md b/.changeset/grumpy-bees-bathe.md deleted file mode 100644 index 2a975f3eea..0000000000 --- a/.changeset/grumpy-bees-bathe.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": minor ---- - -#added mode chain config diff --git a/.changeset/grumpy-guests-joke.md b/.changeset/grumpy-guests-joke.md deleted file mode 100644 index 8d2af43ab6..0000000000 --- a/.changeset/grumpy-guests-joke.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -add target balances based rebalancing algorithm diff --git a/.changeset/happy-jokes-reply.md b/.changeset/happy-jokes-reply.md deleted file mode 100644 index 28384f18ae..0000000000 --- a/.changeset/happy-jokes-reply.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Improved fetching CommitRoots that skips already executed ones from the database query diff --git a/.changeset/healthy-years-wave.md b/.changeset/healthy-years-wave.md deleted file mode 100644 index 2892195641..0000000000 --- a/.changeset/healthy-years-wave.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": minor ---- - -Support self serve token pools diff --git a/.changeset/heavy-oranges-smell.md b/.changeset/heavy-oranges-smell.md deleted file mode 100644 index e633364e03..0000000000 --- a/.changeset/heavy-oranges-smell.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": minor ---- - -Convert off-ramp execution states to be per-chain diff --git a/.changeset/hip-dingos-shout.md b/.changeset/hip-dingos-shout.md deleted file mode 100644 index 6eee17c5cb..0000000000 --- a/.changeset/hip-dingos-shout.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": minor ---- - -initialize ccip ocr3 execute plugin diff --git a/.changeset/honest-clouds-march.md b/.changeset/honest-clouds-march.md deleted file mode 100644 index f4f20db3e3..0000000000 --- a/.changeset/honest-clouds-march.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": minor ---- - -Allow hashlib and merklemulti to be used by other repositories. diff --git a/.changeset/honest-foxes-reflect.md b/.changeset/honest-foxes-reflect.md deleted file mode 100644 index 0020c0a0ac..0000000000 --- a/.changeset/honest-foxes-reflect.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -add non-Geth revert msg check to v1.0 PriceRegistry and TokenPool diff --git a/.changeset/honest-pens-flash.md b/.changeset/honest-pens-flash.md deleted file mode 100644 index f1adea4f20..0000000000 --- a/.changeset/honest-pens-flash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -#bugfix Exec NewReportingPlugin retries until it succeeds diff --git a/.changeset/hungry-cougars-float.md b/.changeset/hungry-cougars-float.md deleted file mode 100644 index 622e1348ff..0000000000 --- a/.changeset/hungry-cougars-float.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -initialize ccip ocr3 commit plugin diff --git a/.changeset/hungry-hounds-search.md b/.changeset/hungry-hounds-search.md deleted file mode 100644 index 3b25f3e800..0000000000 --- a/.changeset/hungry-hounds-search.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -#internal fix goimport lint diff --git a/.changeset/hungry-spiders-beg.md b/.changeset/hungry-spiders-beg.md deleted file mode 100644 index 5c15fdc6be..0000000000 --- a/.changeset/hungry-spiders-beg.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -golf compile times of tests diff --git a/.changeset/itchy-cheetahs-return.md b/.changeset/itchy-cheetahs-return.md deleted file mode 100644 index e81bebd6fb..0000000000 --- a/.changeset/itchy-cheetahs-return.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": minor ---- - -Add pre-commit and pre-push hooks diff --git a/.changeset/kind-mangos-check.md b/.changeset/kind-mangos-check.md deleted file mode 100644 index 91d617ac08..0000000000 --- a/.changeset/kind-mangos-check.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -migrating chainlink-common types diff --git a/.changeset/kind-months-brush.md b/.changeset/kind-months-brush.md deleted file mode 100644 index 3cbbf8bac4..0000000000 --- a/.changeset/kind-months-brush.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Support multi-stage finalization in the rebalancer contracts diff --git a/.changeset/large-bottles-dress.md b/.changeset/large-bottles-dress.md deleted file mode 100644 index cb18296963..0000000000 --- a/.changeset/large-bottles-dress.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -make pools backwards compatible proxies diff --git a/.changeset/large-keys-sniff.md b/.changeset/large-keys-sniff.md deleted file mode 100644 index d62d504131..0000000000 --- a/.changeset/large-keys-sniff.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Add ability for leader lane to report all token prices for the lane diff --git a/.changeset/light-suns-build.md b/.changeset/light-suns-build.md deleted file mode 100644 index 4adbc370fc..0000000000 --- a/.changeset/light-suns-build.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Do not read res if http errors diff --git a/.changeset/lovely-feet-share.md b/.changeset/lovely-feet-share.md deleted file mode 100644 index 17a0ec257b..0000000000 --- a/.changeset/lovely-feet-share.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -consensus on follower config state diff --git a/.changeset/many-pigs-brake.md b/.changeset/many-pigs-brake.md deleted file mode 100644 index af471afa65..0000000000 --- a/.changeset/many-pigs-brake.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -fix rebalancing algorithm determinism diff --git a/.changeset/mean-jobs-bathe.md b/.changeset/mean-jobs-bathe.md deleted file mode 100644 index f4dd932f3d..0000000000 --- a/.changeset/mean-jobs-bathe.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -LM comments and OP dispute game factory diff --git a/.changeset/moody-masks-perform.md b/.changeset/moody-masks-perform.md deleted file mode 100644 index c9edd2e826..0000000000 --- a/.changeset/moody-masks-perform.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Fix changeset checker for ccip #bugfix diff --git a/.changeset/neat-birds-smash.md b/.changeset/neat-birds-smash.md deleted file mode 100644 index b881e8a0b1..0000000000 --- a/.changeset/neat-birds-smash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Sync liquidity graph only once on startup and cache the liquidity graphs in the plugin, upon Observation call discoverer to update balances. \ No newline at end of file diff --git a/.changeset/neat-pandas-glow.md b/.changeset/neat-pandas-glow.md deleted file mode 100644 index 446b61e9c9..0000000000 --- a/.changeset/neat-pandas-glow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -#added Add ccip ocr3 offchain workflow for building, linting and testing the code. diff --git a/.changeset/nice-donuts-yell.md b/.changeset/nice-donuts-yell.md deleted file mode 100644 index 84756ebf8c..0000000000 --- a/.changeset/nice-donuts-yell.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Polish liquidity graph, mitigate existing issues and prepare for token multiplexing. diff --git a/.changeset/nice-falcons-sniff.md b/.changeset/nice-falcons-sniff.md deleted file mode 100644 index 17b0c673bf..0000000000 --- a/.changeset/nice-falcons-sniff.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Fix reports count calculation method diff --git a/.changeset/nice-pumpkins-itch.md b/.changeset/nice-pumpkins-itch.md deleted file mode 100644 index ce30b1d37e..0000000000 --- a/.changeset/nice-pumpkins-itch.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Detailed tracking of sequence number processed by Commit/Exec plugins diff --git a/.changeset/ninety-rabbits-hear.md b/.changeset/ninety-rabbits-hear.md deleted file mode 100644 index 81d43d05d6..0000000000 --- a/.changeset/ninety-rabbits-hear.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Ramps check RMN curse status by lane diff --git a/.changeset/olive-masks-bow.md b/.changeset/olive-masks-bow.md deleted file mode 100644 index 17ca4fbaf8..0000000000 --- a/.changeset/olive-masks-bow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Adding more debug details to exec batch building diff --git a/.changeset/perfect-swans-tie.md b/.changeset/perfect-swans-tie.md deleted file mode 100644 index 63609316b0..0000000000 --- a/.changeset/perfect-swans-tie.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Get liquidity managers token in bridge constructor and save for reuse, upon calls to GetTransfer() use the address to compare with remoteToken and localToken. diff --git a/.changeset/pink-fans-run.md b/.changeset/pink-fans-run.md deleted file mode 100644 index d299e55b59..0000000000 --- a/.changeset/pink-fans-run.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": minor ---- - -#added Integrate multi-commitstore to multi-offramp diff --git a/.changeset/poor-trains-develop.md b/.changeset/poor-trains-develop.md deleted file mode 100644 index 3395521a6f..0000000000 --- a/.changeset/poor-trains-develop.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": minor ---- - -Per-chain configs for MultiOffRamp diff --git a/.changeset/pretty-clocks-rhyme.md b/.changeset/pretty-clocks-rhyme.md deleted file mode 100644 index a653e0b946..0000000000 --- a/.changeset/pretty-clocks-rhyme.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -#added a new info log for inspecting onchain commit store seq num diff --git a/.changeset/proud-glasses-give.md b/.changeset/proud-glasses-give.md deleted file mode 100644 index 87012bb63f..0000000000 --- a/.changeset/proud-glasses-give.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -#changed add maxTokenTransferGas to offRamp dynamic config diff --git a/.changeset/rotten-colts-speak.md b/.changeset/rotten-colts-speak.md deleted file mode 100644 index 014094eded..0000000000 --- a/.changeset/rotten-colts-speak.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -#updated types to be imported from chainlink-common repository diff --git a/.changeset/rotten-dogs-clean.md b/.changeset/rotten-dogs-clean.md deleted file mode 100644 index 4a09d7294e..0000000000 --- a/.changeset/rotten-dogs-clean.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": minor ---- - -#added Multi-plugin OCR3 Base contract diff --git a/.changeset/rude-jokes-move.md b/.changeset/rude-jokes-move.md deleted file mode 100644 index b4a51b04eb..0000000000 --- a/.changeset/rude-jokes-move.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Alignment of the deduplication logic that is being done as part of Observation validation in Liquidity Manager. diff --git a/.changeset/serious-hounds-hear.md b/.changeset/serious-hounds-hear.md deleted file mode 100644 index 39568d6cd2..0000000000 --- a/.changeset/serious-hounds-hear.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -#updated dependencies to their latest version diff --git a/.changeset/seven-hats-help.md b/.changeset/seven-hats-help.md deleted file mode 100644 index 8822592185..0000000000 --- a/.changeset/seven-hats-help.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -#internal Remove unnecessary marshall/unmarshall of CommitObservation diff --git a/.changeset/sharp-bikes-hunt.md b/.changeset/sharp-bikes-hunt.md deleted file mode 100644 index 3701c11eb0..0000000000 --- a/.changeset/sharp-bikes-hunt.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -bump solidity to 0.8.24 diff --git a/.changeset/shiny-peas-look.md b/.changeset/shiny-peas-look.md deleted file mode 100644 index 47fc185332..0000000000 --- a/.changeset/shiny-peas-look.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": minor ---- - -Price data feed fallback usage for PriceRegistry diff --git a/.changeset/shiny-tips-mate.md b/.changeset/shiny-tips-mate.md deleted file mode 100644 index ef9aa2144d..0000000000 --- a/.changeset/shiny-tips-mate.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": minor ---- - -Handle multi-offramp upgradability diff --git a/.changeset/short-cows-study.md b/.changeset/short-cows-study.md deleted file mode 100644 index 32c2e41b52..0000000000 --- a/.changeset/short-cows-study.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -generic token pool io diff --git a/.changeset/short-tigers-report.md b/.changeset/short-tigers-report.md deleted file mode 100644 index b2c949ed4d..0000000000 --- a/.changeset/short-tigers-report.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -#internal minor checks fixed in pools and token registry diff --git a/.changeset/silly-eels-hunt.md b/.changeset/silly-eels-hunt.md deleted file mode 100644 index 671ee5bcda..0000000000 --- a/.changeset/silly-eels-hunt.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -return destination denominated token amounts from pool diff --git a/.changeset/six-berries-hammer.md b/.changeset/six-berries-hammer.md deleted file mode 100644 index c3732b9a08..0000000000 --- a/.changeset/six-berries-hammer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -#bugfix #updated Optimize OnRamp.IsSourceCursed by caching RMN contract and StaticConfig - 30x faster diff --git a/.changeset/six-tools-laugh.md b/.changeset/six-tools-laugh.md deleted file mode 100644 index 7f2e8549f4..0000000000 --- a/.changeset/six-tools-laugh.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Modify OCR3 config tracker of liquidity manager to replay multiple chains concurrently. diff --git a/.changeset/six-wolves-relax.md b/.changeset/six-wolves-relax.md deleted file mode 100644 index b4e841e31c..0000000000 --- a/.changeset/six-wolves-relax.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Queue CCIP transactions per destination chain instead of per lane diff --git a/.changeset/sixty-spiders-end.md b/.changeset/sixty-spiders-end.md deleted file mode 100644 index 743ff9d745..0000000000 --- a/.changeset/sixty-spiders-end.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -#updated Optimizing ABIEncode and ABIDecode by caching abiStr diff --git a/.changeset/smooth-turtles-visit.md b/.changeset/smooth-turtles-visit.md deleted file mode 100644 index f369713916..0000000000 --- a/.changeset/smooth-turtles-visit.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": minor ---- - -Support optional AggregateRateLimiter diff --git a/.changeset/soft-numbers-invent.md b/.changeset/soft-numbers-invent.md deleted file mode 100644 index 7ba88a6a30..0000000000 --- a/.changeset/soft-numbers-invent.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": minor ---- - -implement multi onramp dynamic configs diff --git a/.changeset/sour-owls-brush.md b/.changeset/sour-owls-brush.md deleted file mode 100644 index f7a3945eda..0000000000 --- a/.changeset/sour-owls-brush.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -#removed PriceReportingDisabled flag use in plugin diff --git a/.changeset/spicy-comics-listen.md b/.changeset/spicy-comics-listen.md deleted file mode 100644 index afde78b63c..0000000000 --- a/.changeset/spicy-comics-listen.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Update chain-selectors to v1.0.16 diff --git a/.changeset/spotty-ants-bake.md b/.changeset/spotty-ants-bake.md deleted file mode 100644 index 00328eaa67..0000000000 --- a/.changeset/spotty-ants-bake.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -support more than one usdc token transfer in a single msg diff --git a/.changeset/spotty-timers-play.md b/.changeset/spotty-timers-play.md deleted file mode 100644 index 328784c836..0000000000 --- a/.changeset/spotty-timers-play.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": minor ---- - -#added gas prices to commit plugin diff --git a/.changeset/strange-experts-fold.md b/.changeset/strange-experts-fold.md deleted file mode 100644 index 941a974c52..0000000000 --- a/.changeset/strange-experts-fold.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -don't call receivers when no gas and no data is supplied diff --git a/.changeset/swift-crabs-sing.md b/.changeset/swift-crabs-sing.md deleted file mode 100644 index 5e6679ae96..0000000000 --- a/.changeset/swift-crabs-sing.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -#added GetAllGasPriceUpdatesCreatedAfter to PriceRegistry diff --git a/.changeset/tasty-rice-hope.md b/.changeset/tasty-rice-hope.md deleted file mode 100644 index 7258394f72..0000000000 --- a/.changeset/tasty-rice-hope.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -#updated CommitDON Report to not reject entire observation if observed token prices do not match expected chain tokens diff --git a/.changeset/ten-adults-try.md b/.changeset/ten-adults-try.md deleted file mode 100644 index 290a31ed04..0000000000 --- a/.changeset/ten-adults-try.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Extending observation validation to include deduplication validation, in order to avoid from observation manipulation diff --git a/.changeset/ten-spiders-reflect.md b/.changeset/ten-spiders-reflect.md deleted file mode 100644 index 514d383c4f..0000000000 --- a/.changeset/ten-spiders-reflect.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -#internal Fix unit tests in ocr3 exec plugin diff --git a/.changeset/tender-pants-trade.md b/.changeset/tender-pants-trade.md deleted file mode 100644 index e56928f918..0000000000 --- a/.changeset/tender-pants-trade.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Fix merge issue raised from #855 #856 diff --git a/.changeset/thick-moles-behave.md b/.changeset/thick-moles-behave.md deleted file mode 100644 index eac79ddb9e..0000000000 --- a/.changeset/thick-moles-behave.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -chore: bump chain-selectors package to v1.0.12 diff --git a/.changeset/thin-elephants-rush.md b/.changeset/thin-elephants-rush.md deleted file mode 100644 index b526bea7a1..0000000000 --- a/.changeset/thin-elephants-rush.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -set default allowed pool return data to 1 slot diff --git a/.changeset/thin-needles-grow.md b/.changeset/thin-needles-grow.md deleted file mode 100644 index 451b8b0cb2..0000000000 --- a/.changeset/thin-needles-grow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -add default pricing for unpriced tokens diff --git a/.changeset/thin-rats-smash.md b/.changeset/thin-rats-smash.md deleted file mode 100644 index c5b1751701..0000000000 --- a/.changeset/thin-rats-smash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Remove calls to panic in multiple locations. diff --git a/.changeset/thirty-rockets-nail.md b/.changeset/thirty-rockets-nail.md deleted file mode 100644 index 424e1fb76a..0000000000 --- a/.changeset/thirty-rockets-nail.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -#added E2E commit plugin unit tests using ocr3runner diff --git a/.changeset/tidy-hairs-pull.md b/.changeset/tidy-hairs-pull.md deleted file mode 100644 index 20d1ad35d1..0000000000 --- a/.changeset/tidy-hairs-pull.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -skip on success state in offramp diff --git a/.changeset/tiny-gorillas-destroy.md b/.changeset/tiny-gorillas-destroy.md deleted file mode 100644 index 0f39b3c6b9..0000000000 --- a/.changeset/tiny-gorillas-destroy.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -remove need to populate source to dest mapping from offramp. Exec won't error on empty mapping diff --git a/.changeset/twelve-donuts-sell.md b/.changeset/twelve-donuts-sell.md deleted file mode 100644 index cf332260dc..0000000000 --- a/.changeset/twelve-donuts-sell.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": minor ---- - -Proactive rate limiting for USDC attestation API. diff --git a/.changeset/twelve-grapes-hammer.md b/.changeset/twelve-grapes-hammer.md deleted file mode 100644 index 06f7740785..0000000000 --- a/.changeset/twelve-grapes-hammer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -#internal Add metrics registerer to CCIP OracleArgs diff --git a/.changeset/violet-pumas-appear.md b/.changeset/violet-pumas-appear.md deleted file mode 100644 index c996f0e18f..0000000000 --- a/.changeset/violet-pumas-appear.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -#changed added extra token pool validation diff --git a/.changeset/warm-doors-march.md b/.changeset/warm-doors-march.md deleted file mode 100644 index 3956999fe3..0000000000 --- a/.changeset/warm-doors-march.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -new CI step that checks compatibility with latest stable versions of EVM nodes diff --git a/.changeset/weak-brooms-sing.md b/.changeset/weak-brooms-sing.md deleted file mode 100644 index 367580bbf6..0000000000 --- a/.changeset/weak-brooms-sing.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -#internal observation logic for ccip ocr3 execute plugin diff --git a/.changeset/weak-moles-clean.md b/.changeset/weak-moles-clean.md deleted file mode 100644 index 00e868e097..0000000000 --- a/.changeset/weak-moles-clean.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -updated chain-selector to v1.0.15 diff --git a/.changeset/weak-months-turn.md b/.changeset/weak-months-turn.md deleted file mode 100644 index 9d10b9d9c9..0000000000 --- a/.changeset/weak-months-turn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": minor ---- - -Filter out destination chain bridgeable tokens that are not configured on pricegetter diff --git a/.changeset/wet-forks-pretend.md b/.changeset/wet-forks-pretend.md deleted file mode 100644 index f2dccf3a18..0000000000 --- a/.changeset/wet-forks-pretend.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -minor log change diff --git a/.changeset/wild-falcons-speak.md b/.changeset/wild-falcons-speak.md deleted file mode 100644 index c11556fc85..0000000000 --- a/.changeset/wild-falcons-speak.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -add isChainSupported to admin registry, reduce permissions of admin diff --git a/.changeset/young-camels-return.md b/.changeset/young-camels-return.md deleted file mode 100644 index 602265902c..0000000000 --- a/.changeset/young-camels-return.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"ccip": patch ---- - -#added logs to track graph building process -#added support for test network 2337 diff --git a/.changeset/young-hounds-wave.md b/.changeset/young-hounds-wave.md deleted file mode 100644 index db05b08f8b..0000000000 --- a/.changeset/young-hounds-wave.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"ccip": patch ---- - -Add OffRamp address log during Commit plugin init diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index 15d7512627..b8bd49fa53 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -589,6 +589,7 @@ jobs: env: BASE64_CCIP_CONFIG_OVERRIDE: ${{ steps.set_override_config.outputs.base_64_override }} TEST_BASE64_CCIP_CONFIG_OVERRIDE: ${{ steps.set_override_config.outputs.base_64_override }} + DEBUG_RESTY: false with: test_command_to_run: cd ./integration-tests && go test -timeout 30m -count=1 -json -test.parallel=${{ matrix.product.nodes }} ${{ steps.build-go-test-command.outputs.run_command }} 2>&1 | tee /tmp/gotest.log | gotestloghelper -ci -singlepackage -hidepassingtests=false -hidepassinglogs test_download_vendor_packages_command: cd ./integration-tests && go mod download diff --git a/core/chains/evm/config/config_test.go b/core/chains/evm/config/config_test.go index ba362bda98..617a1605d8 100644 --- a/core/chains/evm/config/config_test.go +++ b/core/chains/evm/config/config_test.go @@ -232,8 +232,8 @@ func TestChainScopedConfig_GasEstimator(t *testing.T) { assert.Equal(t, assets.GWei(20), ge.PriceDefault()) assert.Equal(t, assets.GWei(500), ge.PriceMax()) assert.Equal(t, assets.GWei(1), ge.PriceMin()) - assert.Equal(t, uint64(500000), ge.LimitDefault()) - assert.Equal(t, uint64(500000), ge.LimitMax()) + assert.Equal(t, uint64(8_000_000), ge.LimitDefault()) + assert.Equal(t, uint64(8_000_000), ge.LimitMax()) assert.Equal(t, float32(1), ge.LimitMultiplier()) assert.Equal(t, uint64(21000), ge.LimitTransfer()) assert.Equal(t, assets.GWei(5), ge.BumpMin()) @@ -267,23 +267,23 @@ func TestChainScopedConfig_Profiles(t *testing.T) { expectedGasLimitDefault uint64 expectedMinimumContractPayment string }{ - {"default", 0, 500000, "0.00001"}, - {"mainnet", 1, 500000, "0.1"}, - {"kovan", 42, 500000, "0.1"}, - - {"optimism", 10, 500000, "0.00001"}, - {"optimism", 69, 500000, "0.00001"}, - {"optimism", 420, 500000, "0.00001"}, - - {"bscMainnet", 56, 500000, "0.00001"}, - {"hecoMainnet", 128, 500000, "0.00001"}, - {"fantomMainnet", 250, 500000, "0.00001"}, - {"fantomTestnet", 4002, 500000, "0.00001"}, - {"polygonMatic", 800001, 500000, "0.00001"}, - {"harmonyMainnet", 1666600000, 500000, "0.00001"}, - {"harmonyTestnet", 1666700000, 500000, "0.00001"}, - - {"gnosisMainnet", 100, 500000, "0.00001"}, + {"default", 0, 8_000_000, "0.00001"}, + {"mainnet", 1, 8_000_000, "0.1"}, + {"kovan", 42, 8_000_000, "0.1"}, + + {"optimism", 10, 8_000_000, "0.00001"}, + {"optimism", 69, 8_000_000, "0.00001"}, + {"optimism", 420, 8_000_000, "0.00001"}, + + {"bscMainnet", 56, 8_000_000, "0.00001"}, + {"hecoMainnet", 128, 8_000_000, "0.00001"}, + {"fantomMainnet", 250, 8_000_000, "0.00001"}, + {"fantomTestnet", 4002, 8_000_000, "0.00001"}, + {"polygonMatic", 800001, 8_000_000, "0.00001"}, + {"harmonyMainnet", 1666600000, 8_000_000, "0.00001"}, + {"harmonyTestnet", 1666700000, 8_000_000, "0.00001"}, + + {"gnosisMainnet", 100, 8_000_000, "0.00001"}, } for _, test := range tests { tt := test diff --git a/core/chains/evm/config/toml/defaults/fallback.toml b/core/chains/evm/config/toml/defaults/fallback.toml index 2fe6edd54c..8bf3392210 100644 --- a/core/chains/evm/config/toml/defaults/fallback.toml +++ b/core/chains/evm/config/toml/defaults/fallback.toml @@ -36,8 +36,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500_000 -LimitMax = 500_000 +LimitDefault = 8_000_000 +LimitMax = 8_000_000 LimitMultiplier = '1' LimitTransfer = 21_000 BumpMin = '5 gwei' diff --git a/core/config/docs/chains-evm.toml b/core/config/docs/chains-evm.toml index acd1cf3d31..f053be9fa6 100644 --- a/core/config/docs/chains-evm.toml +++ b/core/config/docs/chains-evm.toml @@ -180,9 +180,9 @@ PriceMax = '115792089237316195423570985008687907853269984665.6405640394575840079 PriceMin = '1 gwei' # Default # LimitDefault sets default gas limit for outgoing transactions. This should not need to be changed in most cases. # Some job types, such as Keeper jobs, might set their own gas limit unrelated to this value. -LimitDefault = 500_000 # Default +LimitDefault = 8_000_000 # Default # LimitMax sets a maximum for _estimated_ gas limits. This currently only applies to `Arbitrum` `GasEstimatorMode`. -LimitMax = 500_000 # Default +LimitMax = 8_000_000 # Default # LimitMultiplier is the factor by which a transaction's GasLimit is multiplied before transmission. So if the value is 1.1, and the GasLimit for a transaction is 10, 10% will be added before transmission. # # This factor is always applied, so includes L2 transactions which uses a default gas limit of 1 and is also applied to `LimitDefault`. diff --git a/core/internal/features/features_test.go b/core/internal/features/features_test.go index 046f21b7f7..1135c5a4eb 100644 --- a/core/internal/features/features_test.go +++ b/core/internal/features/features_test.go @@ -300,7 +300,7 @@ type OperatorContracts struct { func setupOperatorContracts(t *testing.T) OperatorContracts { user := testutils.MustNewSimTransactor(t) genesisData := core.GenesisAlloc{ - user.From: {Balance: assets.Ether(1000).ToInt()}, + user.From: {Balance: assets.Ether(10000).ToInt()}, } gasLimit := uint32(ethconfig.Defaults.Miner.GasCeil * 2) b := cltest.NewSimulatedBackend(t, genesisData, gasLimit) @@ -385,7 +385,7 @@ func TestIntegration_DirectRequest(t *testing.T) { // Fund node account with ETH. n, err := b.NonceAt(testutils.Context(t), operatorContracts.user.From, nil) require.NoError(t, err) - tx = cltest.NewLegacyTransaction(n, sendingKeys[0].Address, assets.Ether(100).ToInt(), 21000, big.NewInt(1000000000), nil) + tx = cltest.NewLegacyTransaction(n, sendingKeys[0].Address, assets.Ether(1000).ToInt(), 21000, big.NewInt(1000000000), nil) signedTx, err := operatorContracts.user.Signer(operatorContracts.user.From, tx) require.NoError(t, err) err = b.SendTransaction(testutils.Context(t), signedTx) @@ -484,7 +484,7 @@ func setupAppForEthTx(t *testing.T, operatorContracts OperatorContracts) (app *c // Fund node account with ETH. n, err := b.NonceAt(testutils.Context(t), operatorContracts.user.From, nil) require.NoError(t, err) - tx := cltest.NewLegacyTransaction(n, sendingKeys[0].Address, assets.Ether(100).ToInt(), 21000, big.NewInt(1000000000), nil) + tx := cltest.NewLegacyTransaction(n, sendingKeys[0].Address, assets.Ether(1000).ToInt(), 21000, big.NewInt(1000000000), nil) signedTx, err := operatorContracts.user.Signer(operatorContracts.user.From, tx) require.NoError(t, err) err = b.SendTransaction(testutils.Context(t), signedTx) @@ -631,7 +631,7 @@ observationSource = """ output := outputs[0] receipt := output.(map[string]interface{}) assert.Equal(t, "0x11", receipt["blockNumber"]) - assert.Equal(t, "0x7a120", receipt["gasUsed"]) + assert.Equal(t, "0x7a1200", receipt["gasUsed"]) assert.Equal(t, "0x0", receipt["status"]) }) } @@ -715,7 +715,7 @@ func setupNode(t *testing.T, owner *bind.TransactOpts, portV2 int, n, err := b.NonceAt(testutils.Context(t), owner.From, nil) require.NoError(t, err) - tx := cltest.NewLegacyTransaction(n, transmitter, assets.Ether(100).ToInt(), 21000, big.NewInt(1000000000), nil) + tx := cltest.NewLegacyTransaction(n, transmitter, assets.Ether(1000).ToInt(), 21000, big.NewInt(1000000000), nil) signedTx, err := owner.Signer(owner.From, tx) require.NoError(t, err) err = b.SendTransaction(testutils.Context(t), signedTx) @@ -758,7 +758,7 @@ func setupForwarderEnabledNode(t *testing.T, owner *bind.TransactOpts, portV2 in n, err := b.NonceAt(testutils.Context(t), owner.From, nil) require.NoError(t, err) - tx := cltest.NewLegacyTransaction(n, transmitter, assets.Ether(100).ToInt(), 21000, big.NewInt(1000000000), nil) + tx := cltest.NewLegacyTransaction(n, transmitter, assets.Ether(1000).ToInt(), 21000, big.NewInt(1000000000), nil) signedTx, err := owner.Signer(owner.From, tx) require.NoError(t, err) err = b.SendTransaction(testutils.Context(t), signedTx) diff --git a/core/services/chainlink/testdata/config-multi-chain-effective.toml b/core/services/chainlink/testdata/config-multi-chain-effective.toml index 0990aa5027..ba3c3c04d2 100644 --- a/core/services/chainlink/testdata/config-multi-chain-effective.toml +++ b/core/services/chainlink/testdata/config-multi-chain-effective.toml @@ -296,8 +296,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -395,8 +395,8 @@ Mode = 'BlockHistory' PriceDefault = '9.223372036854775807 ether' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -488,8 +488,8 @@ Mode = 'FixedPrice' PriceDefault = '30 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '30 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '20 gwei' diff --git a/core/web/resolver/testdata/config-multi-chain-effective.toml b/core/web/resolver/testdata/config-multi-chain-effective.toml index 5d783fb23a..aca7a96661 100644 --- a/core/web/resolver/testdata/config-multi-chain-effective.toml +++ b/core/web/resolver/testdata/config-multi-chain-effective.toml @@ -296,8 +296,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -395,8 +395,8 @@ Mode = 'BlockHistory' PriceDefault = '9.223372036854775807 ether' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -488,8 +488,8 @@ Mode = 'FixedPrice' PriceDefault = '30 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '30 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '20 gwei' diff --git a/docs/CONFIG.md b/docs/CONFIG.md index e38fbdd6de..03af3e44e6 100644 --- a/docs/CONFIG.md +++ b/docs/CONFIG.md @@ -1804,8 +1804,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -1897,8 +1897,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -1990,8 +1990,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -2083,8 +2083,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -2177,8 +2177,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 wei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '100 wei' @@ -2270,8 +2270,8 @@ Mode = 'BlockHistory' PriceDefault = '50 mwei' PriceMax = '50 gwei' PriceMin = '0' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -2363,8 +2363,8 @@ Mode = 'BlockHistory' PriceDefault = '50 mwei' PriceMax = '50 gwei' PriceMin = '0' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -2457,8 +2457,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -2550,8 +2550,8 @@ Mode = 'BlockHistory' PriceDefault = '5 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -2642,8 +2642,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -2734,8 +2734,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -2827,8 +2827,8 @@ Mode = 'BlockHistory' PriceDefault = '5 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -2921,8 +2921,8 @@ Mode = 'BlockHistory' PriceDefault = '1 gwei' PriceMax = '500 gwei' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -3014,8 +3014,8 @@ Mode = 'BlockHistory' PriceDefault = '5 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -3107,8 +3107,8 @@ Mode = 'BlockHistory' PriceDefault = '30 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '30 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '20 gwei' @@ -3200,8 +3200,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 mwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '20 mwei' @@ -3293,8 +3293,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '100 mwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '100 mwei' @@ -3386,8 +3386,8 @@ Mode = 'SuggestedPrice' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -3479,8 +3479,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 wei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '100 wei' @@ -3573,7 +3573,7 @@ PriceDefault = '20 gwei' PriceMax = '18.446744073709551615 ether' PriceMin = '0' LimitDefault = 100000000 -LimitMax = 500000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -3666,7 +3666,7 @@ PriceDefault = '20 gwei' PriceMax = '18.446744073709551615 ether' PriceMin = '0' LimitDefault = 100000000 -LimitMax = 500000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -3759,7 +3759,7 @@ PriceDefault = '20 gwei' PriceMax = '18.446744073709551615 ether' PriceMin = '0' LimitDefault = 100000000 -LimitMax = 500000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -3852,8 +3852,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 wei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '100 wei' @@ -3945,8 +3945,8 @@ Mode = 'SuggestedPrice' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '0' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -4039,7 +4039,7 @@ PriceDefault = '20 gwei' PriceMax = '120 gwei' PriceMin = '1 gwei' LimitDefault = 8000000 -LimitMax = 500000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '100 wei' @@ -4131,8 +4131,8 @@ Mode = 'SuggestedPrice' PriceDefault = '750 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -4224,8 +4224,8 @@ Mode = 'SuggestedPrice' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '0' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -4317,8 +4317,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '100 mwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '100 mwei' @@ -4410,8 +4410,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -4503,8 +4503,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -4595,8 +4595,8 @@ Mode = 'FixedPrice' PriceDefault = '20 gwei' PriceMax = '100 micro' PriceMin = '0' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -4688,8 +4688,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '50 mwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '20 mwei' @@ -4781,8 +4781,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 wei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '100 wei' @@ -4874,8 +4874,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 mwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '20 mwei' @@ -4967,8 +4967,8 @@ Mode = 'SuggestedPrice' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -5061,7 +5061,7 @@ PriceDefault = '20 gwei' PriceMax = '200 gwei' PriceMin = '1 gwei' LimitDefault = 100000000 -LimitMax = 500000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -5153,8 +5153,8 @@ Mode = 'SuggestedPrice' PriceDefault = '750 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -5246,8 +5246,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 wei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '100 wei' @@ -5339,8 +5339,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '500 gwei' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -5433,7 +5433,7 @@ PriceDefault = '20 gwei' PriceMax = '120 gwei' PriceMin = '1 gwei' LimitDefault = 8000000 -LimitMax = 500000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '100 wei' @@ -5527,7 +5527,7 @@ Mode = 'Arbitrum' PriceDefault = '100 mwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '0' -LimitDefault = 500000 +LimitDefault = 8000000 LimitMax = 1000000000 LimitMultiplier = '1' LimitTransfer = 21000 @@ -5620,8 +5620,8 @@ Mode = 'BlockHistory' PriceDefault = '5 gwei' PriceMax = '500 gwei' PriceMin = '5 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '2 gwei' @@ -5713,8 +5713,8 @@ Mode = 'BlockHistory' PriceDefault = '25 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '25 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -5806,8 +5806,8 @@ Mode = 'BlockHistory' PriceDefault = '25 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '25 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -5899,8 +5899,8 @@ Mode = 'BlockHistory' PriceDefault = '5 gwei' PriceMax = '500 gwei' PriceMin = '5 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '2 gwei' @@ -5991,8 +5991,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -6083,8 +6083,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 wei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -6175,8 +6175,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '400 mwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -6268,8 +6268,8 @@ Mode = 'SuggestedPrice' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '0' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -6361,8 +6361,8 @@ Mode = 'BlockHistory' PriceDefault = '25 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '25 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -6454,8 +6454,8 @@ Mode = 'BlockHistory' PriceDefault = '1 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '20 gwei' @@ -6546,8 +6546,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '20 gwei' @@ -6640,7 +6640,7 @@ PriceDefault = '20 gwei' PriceMax = '120 gwei' PriceMin = '1 gwei' LimitDefault = 8000000 -LimitMax = 500000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '100 wei' @@ -6733,8 +6733,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 wei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '100 wei' @@ -6827,8 +6827,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 wei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '100 wei' @@ -6921,7 +6921,7 @@ Mode = 'Arbitrum' PriceDefault = '100 mwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '0' -LimitDefault = 500000 +LimitDefault = 8000000 LimitMax = 1000000000 LimitMultiplier = '1' LimitTransfer = 21000 @@ -7015,7 +7015,7 @@ Mode = 'Arbitrum' PriceDefault = '100 mwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '0' -LimitDefault = 500000 +LimitDefault = 8000000 LimitMax = 1000000000 LimitMultiplier = '1' LimitTransfer = 21000 @@ -7109,7 +7109,7 @@ Mode = 'Arbitrum' PriceDefault = '100 mwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '0' -LimitDefault = 500000 +LimitDefault = 8000000 LimitMax = 1000000000 LimitMultiplier = '1' LimitTransfer = 21000 @@ -7202,8 +7202,8 @@ Mode = 'SuggestedPrice' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '0' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -7295,8 +7295,8 @@ Mode = 'SuggestedPrice' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '0' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -7388,8 +7388,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -7481,8 +7481,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 wei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '100 wei' @@ -7575,7 +7575,7 @@ PriceDefault = '20 gwei' PriceMax = '120 gwei' PriceMin = '1 gwei' LimitDefault = 8000000 -LimitMax = 500000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '100 wei' @@ -7668,8 +7668,8 @@ Mode = 'BlockHistory' PriceDefault = '5 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -7761,8 +7761,8 @@ Mode = 'BlockHistory' PriceDefault = '5 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' @@ -8114,8 +8114,8 @@ Mode = 'BlockHistory' # Default PriceDefault = '20 gwei' # Default PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' # Default PriceMin = '1 gwei' # Default -LimitDefault = 500_000 # Default -LimitMax = 500_000 # Default +LimitDefault = 8_000_000 # Default +LimitMax = 8_000_000 # Default LimitMultiplier = '1.0' # Default LimitTransfer = 21_000 # Default BumpMin = '5 gwei' # Default @@ -8187,14 +8187,14 @@ Mode = 'FixedPrice' ### LimitDefault ```toml -LimitDefault = 500_000 # Default +LimitDefault = 8_000_000 # Default ``` LimitDefault sets default gas limit for outgoing transactions. This should not need to be changed in most cases. Some job types, such as Keeper jobs, might set their own gas limit unrelated to this value. ### LimitMax ```toml -LimitMax = 500_000 # Default +LimitMax = 8_000_000 # Default ``` LimitMax sets a maximum for _estimated_ gas limits. This currently only applies to `Arbitrum` `GasEstimatorMode`. diff --git a/integration-tests/testconfig/default.toml b/integration-tests/testconfig/default.toml index f75304b5e1..e1c3080255 100644 --- a/integration-tests/testconfig/default.toml +++ b/integration-tests/testconfig/default.toml @@ -12,7 +12,7 @@ image = "public.ecr.aws/chainlink/chainlink" version = "2.12.0" [Common] -chainlink_node_funding = 0.5 +chainlink_node_funding = 4 [Network] selected_networks = ["simulated"] diff --git a/testdata/scripts/keys/eth/help.txtar b/testdata/scripts/keys/eth/help.txtar index 76db7cd5ae..19d7f13d05 100644 --- a/testdata/scripts/keys/eth/help.txtar +++ b/testdata/scripts/keys/eth/help.txtar @@ -18,4 +18,4 @@ COMMANDS: OPTIONS: --help, -h show help - + \ No newline at end of file diff --git a/testdata/scripts/node/validate/disk-based-logging-disabled.txtar b/testdata/scripts/node/validate/disk-based-logging-disabled.txtar index 295ffdb183..a5a50415ca 100644 --- a/testdata/scripts/node/validate/disk-based-logging-disabled.txtar +++ b/testdata/scripts/node/validate/disk-based-logging-disabled.txtar @@ -352,8 +352,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' diff --git a/testdata/scripts/node/validate/disk-based-logging-no-dir.txtar b/testdata/scripts/node/validate/disk-based-logging-no-dir.txtar index 4fce8e5a68..133e04e4fe 100644 --- a/testdata/scripts/node/validate/disk-based-logging-no-dir.txtar +++ b/testdata/scripts/node/validate/disk-based-logging-no-dir.txtar @@ -352,8 +352,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' diff --git a/testdata/scripts/node/validate/disk-based-logging.txtar b/testdata/scripts/node/validate/disk-based-logging.txtar index e25573c88c..d26e793f30 100644 --- a/testdata/scripts/node/validate/disk-based-logging.txtar +++ b/testdata/scripts/node/validate/disk-based-logging.txtar @@ -352,8 +352,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' diff --git a/testdata/scripts/node/validate/invalid.txtar b/testdata/scripts/node/validate/invalid.txtar index 641d81a115..8756936a62 100644 --- a/testdata/scripts/node/validate/invalid.txtar +++ b/testdata/scripts/node/validate/invalid.txtar @@ -342,8 +342,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' diff --git a/testdata/scripts/node/validate/valid.txtar b/testdata/scripts/node/validate/valid.txtar index 5d8b3446e4..96d9a8a6e9 100644 --- a/testdata/scripts/node/validate/valid.txtar +++ b/testdata/scripts/node/validate/valid.txtar @@ -349,8 +349,8 @@ Mode = 'BlockHistory' PriceDefault = '20 gwei' PriceMax = '115792089237316195423570985008687907853269984665.640564039457584007913129639935 tether' PriceMin = '1 gwei' -LimitDefault = 500000 -LimitMax = 500000 +LimitDefault = 8000000 +LimitMax = 8000000 LimitMultiplier = '1' LimitTransfer = 21000 BumpMin = '5 gwei' From 78531daeee375dff1a187c03eba117d3ebbed92e Mon Sep 17 00:00:00 2001 From: "Abdelrahman Soliman (Boda)" <2677789+asoliman92@users.noreply.github.com> Date: Thu, 11 Jul 2024 21:46:36 +0400 Subject: [PATCH 2/2] CCIP Integration tests - wiring contracts [CCIP-2698] (#1148) This is first phase of setting up full integration tests for the new setup. Test is setting up 3 chains (let's call them A, B, C), each chain deploys and starts 2 ping pong contracts for the other 2. A ---deploy+start---> (pingPongB, pingPongC) B ---deploy+start---> (pingPongA, pingPongC) C ---deploy+start---> (pingPongA, pingPongB) and then checks that each ping pong contract emitted `CCIPSendRequested` event from the expected source to destination. Test fails if any wiring between contracts is not correct. Note: This setup is missing token pools to simplify it a little bit. It will be added in future PR when we start testing sending tokens. https://smartcontract-it.atlassian.net/browse/CCIP-2698 --------- Co-authored-by: Will Winder --- .../scripts/native_solc_compile_all_ccip | 1 + .../generated/nonce_manager/nonce_manager.go | 264 +++++++-- ...rapper-dependency-versions-do-not-edit.txt | 2 +- core/gethwrappers/ccip/go_generate.go | 1 + .../plugins/ccip_integration_tests/helpers.go | 518 ++++++++++++++++++ .../ccip_integration_tests/ping_pong_test.go | 95 ++++ 6 files changed, 833 insertions(+), 48 deletions(-) create mode 100644 core/services/ocr3/plugins/ccip_integration_tests/helpers.go create mode 100644 core/services/ocr3/plugins/ccip_integration_tests/ping_pong_test.go diff --git a/contracts/scripts/native_solc_compile_all_ccip b/contracts/scripts/native_solc_compile_all_ccip index 3cfecbc056..51102b33a1 100755 --- a/contracts/scripts/native_solc_compile_all_ccip +++ b/contracts/scripts/native_solc_compile_all_ccip @@ -77,6 +77,7 @@ compileContract ccip/tokenAdminRegistry/TokenAdminRegistry.sol compileContract ccip/tokenAdminRegistry/RegistryModuleOwnerCustom.sol compileContract ccip/capability/CCIPConfig.sol compileContract ccip/capability/interfaces/IOCR3ConfigEncoder.sol +compileContract ccip/NonceManager.sol # Test helpers compileContract ccip/test/helpers/BurnMintERC677Helper.sol diff --git a/core/gethwrappers/ccip/generated/nonce_manager/nonce_manager.go b/core/gethwrappers/ccip/generated/nonce_manager/nonce_manager.go index 717aeb336d..14979b4fe3 100644 --- a/core/gethwrappers/ccip/generated/nonce_manager/nonce_manager.go +++ b/core/gethwrappers/ccip/generated/nonce_manager/nonce_manager.go @@ -36,17 +36,18 @@ type AuthorizedCallersAuthorizedCallerArgs struct { } type NonceManagerPreviousRamps struct { - PrevOnRamp common.Address + PrevOnRamp common.Address + PrevOffRamp common.Address } type NonceManagerPreviousRampsArgs struct { - RemotChainSelector uint64 - PrevRamps NonceManagerPreviousRamps + RemoteChainSelector uint64 + PrevRamps NonceManagerPreviousRamps } var NonceManagerMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"authorizedCallers\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"PreviousRampAlreadySet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"UnauthorizedCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"AuthorizedCallerAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"AuthorizedCallerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prevOnRamp\",\"type\":\"address\"}],\"name\":\"PreviousOnRampUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"addedCallers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"removedCallers\",\"type\":\"address[]\"}],\"internalType\":\"structAuthorizedCallers.AuthorizedCallerArgs\",\"name\":\"authorizedCallerArgs\",\"type\":\"tuple\"}],\"name\":\"applyAuthorizedCallerUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"remotChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"prevOnRamp\",\"type\":\"address\"}],\"internalType\":\"structNonceManager.PreviousRamps\",\"name\":\"prevRamps\",\"type\":\"tuple\"}],\"internalType\":\"structNonceManager.PreviousRampsArgs[]\",\"name\":\"previousRampsArgs\",\"type\":\"tuple[]\"}],\"name\":\"applyPreviousRampsUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllAuthorizedCallers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"name\":\"getIncrementedOutboundNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"name\":\"getOutboundNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"getPreviousRamps\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"prevOnRamp\",\"type\":\"address\"}],\"internalType\":\"structNonceManager.PreviousRamps\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60806040523480156200001157600080fd5b5060405162001659380380620016598339810160408190526200003491620004b0565b8033806000816200008c5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000bf57620000bf81620000f6565b5050604080518082018252838152815160008152602080820190935291810191909152620000ee9150620001a1565b5050620005d0565b336001600160a01b03821603620001505760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000083565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b602081015160005b815181101562000231576000828281518110620001ca57620001ca62000582565b60209081029190910101519050620001e4600282620002f0565b1562000227576040516001600160a01b03821681527fc3803387881faad271c47728894e3e36fac830ffc8602ca6fc07733cbda775809060200160405180910390a15b50600101620001a9565b50815160005b8151811015620002ea57600082828151811062000258576200025862000582565b6020026020010151905060006001600160a01b0316816001600160a01b03160362000296576040516342bcdf7f60e11b815260040160405180910390fd5b620002a360028262000310565b506040516001600160a01b03821681527feb1b9b92e50b7f88f9ff25d56765095ac6e91540eee214906f4036a908ffbdef9060200160405180910390a15060010162000237565b50505050565b600062000307836001600160a01b03841662000327565b90505b92915050565b600062000307836001600160a01b0384166200042b565b60008181526001830160205260408120548015620004205760006200034e60018362000598565b8554909150600090620003649060019062000598565b9050818114620003d057600086600001828154811062000388576200038862000582565b9060005260206000200154905080876000018481548110620003ae57620003ae62000582565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080620003e457620003e4620005ba565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506200030a565b60009150506200030a565b600081815260018301602052604081205462000474575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200030a565b5060006200030a565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b0381168114620004ab57600080fd5b919050565b60006020808385031215620004c457600080fd5b82516001600160401b0380821115620004dc57600080fd5b818501915085601f830112620004f157600080fd5b8151818111156200050657620005066200047d565b8060051b604051601f19603f830116810181811085821117156200052e576200052e6200047d565b6040529182528482019250838101850191888311156200054d57600080fd5b938501935b828510156200057657620005668562000493565b8452938501939285019262000552565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b818103818111156200030a57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b61107980620005e06000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c806379ba50971161007657806391a2749a1161005b57806391a2749a146101b5578063d18be31b146101c8578063f2fde38b146101db57600080fd5b806379ba5097146101855780638da5cb5b1461018d57600080fd5b80631ce2b142146100a85780632451a627146100bd578063294b5630146100db57806331b89ff314610159575b600080fd5b6100bb6100b6366004610c1d565b6101ee565b005b6100c5610363565b6040516100d29190610c92565b60405180910390f35b6101346100e9366004610d02565b604080516020808201835260009182905267ffffffffffffffff9390931681526004835281902081519283019091525473ffffffffffffffffffffffffffffffffffffffff16815290565b604051905173ffffffffffffffffffffffffffffffffffffffff1681526020016100d2565b61016c610167366004610d1f565b610374565b60405167ffffffffffffffff90911681526020016100d2565b6100bb61038b565b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100d2565b6100bb6101c3366004610eba565b61048d565b61016c6101d6366004610d1f565b6104a1565b6100bb6101e9366004610f61565b610543565b6101f6610554565b60005b8181101561035e573683838381811061021457610214610f7e565b604002919091019150600090506004816102316020850185610d02565b67ffffffffffffffff1681526020810191909152604001600020805490915073ffffffffffffffffffffffffffffffffffffffff161561029d576040517fc6117ae200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102ad6040830160208401610f61565b81547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff919091161781556102fa6020830183610d02565b815460405173ffffffffffffffffffffffffffffffffffffffff909116815267ffffffffffffffff91909116907f89d2355e2829b1e15855fec87fb400638aebc9f03728949d702d3b5d4ea999549060200160405180910390a250506001016101f9565b505050565b606061036f60026105d7565b905090565b60006103818484846105e4565b90505b9392505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610411576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b610495610554565b61049e81610732565b50565b60006104ab6108c4565b60006104b88585856105e4565b6104c3906001610fdc565b67ffffffffffffffff861660009081526005602052604090819020905191925082916104f29087908790610ffd565b908152604051908190036020019020805467ffffffffffffffff929092167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090921691909117905590509392505050565b61054b610554565b61049e81610907565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610408565b565b60606000610384836109fc565b67ffffffffffffffff831660009081526005602052604080822090518291906106109086908690610ffd565b9081526040519081900360200190205467ffffffffffffffff16905060008190036103815767ffffffffffffffff851660009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1680156107295773ffffffffffffffffffffffffffffffffffffffff811663856c824761069386880188610f61565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa1580156106fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610720919061100d565b92505050610384565b50949350505050565b602081015160005b81518110156107cd57600082828151811061075757610757610f7e565b60200260200101519050610775816002610a5890919063ffffffff16565b156107c45760405173ffffffffffffffffffffffffffffffffffffffff821681527fc3803387881faad271c47728894e3e36fac830ffc8602ca6fc07733cbda775809060200160405180910390a15b5060010161073a565b50815160005b81518110156108be5760008282815181106107f0576107f0610f7e565b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610860576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61086b600282610a83565b5060405173ffffffffffffffffffffffffffffffffffffffff821681527feb1b9b92e50b7f88f9ff25d56765095ac6e91540eee214906f4036a908ffbdef9060200160405180910390a1506001016107d3565b50505050565b6108cf600233610aa5565b6105d5576040517fd86ad9cf000000000000000000000000000000000000000000000000000000008152336004820152602401610408565b3373ffffffffffffffffffffffffffffffffffffffff821603610986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610408565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b606081600001805480602002602001604051908101604052809291908181526020018280548015610a4c57602002820191906000526020600020905b815481526020019060010190808311610a38575b50505050509050919050565b6000610a7a8373ffffffffffffffffffffffffffffffffffffffff8416610ad4565b90505b92915050565b6000610a7a8373ffffffffffffffffffffffffffffffffffffffff8416610bce565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001830160205260408120541515610a7a565b60008181526001830160205260408120548015610bbd576000610af860018361102a565b8554909150600090610b0c9060019061102a565b9050818114610b71576000866000018281548110610b2c57610b2c610f7e565b9060005260206000200154905080876000018481548110610b4f57610b4f610f7e565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080610b8257610b8261103d565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a7d565b6000915050610a7d565b5092915050565b6000818152600183016020526040812054610c1557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a7d565b506000610a7d565b60008060208385031215610c3057600080fd5b823567ffffffffffffffff80821115610c4857600080fd5b818501915085601f830112610c5c57600080fd5b813581811115610c6b57600080fd5b8660208260061b8501011115610c8057600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b81811015610ce057835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610cae565b50909695505050505050565b67ffffffffffffffff8116811461049e57600080fd5b600060208284031215610d1457600080fd5b813561038481610cec565b600080600060408486031215610d3457600080fd5b8335610d3f81610cec565b9250602084013567ffffffffffffffff80821115610d5c57600080fd5b818601915086601f830112610d7057600080fd5b813581811115610d7f57600080fd5b876020828501011115610d9157600080fd5b6020830194508093505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461049e57600080fd5b600082601f830112610e0657600080fd5b8135602067ffffffffffffffff80831115610e2357610e23610da4565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108482111715610e6657610e66610da4565b6040529384526020818701810194908101925087851115610e8657600080fd5b6020870191505b84821015610eaf578135610ea081610dd3565b83529183019190830190610e8d565b979650505050505050565b600060208284031215610ecc57600080fd5b813567ffffffffffffffff80821115610ee457600080fd5b9083019060408286031215610ef857600080fd5b604051604081018181108382111715610f1357610f13610da4565b604052823582811115610f2557600080fd5b610f3187828601610df5565b825250602083013582811115610f4657600080fd5b610f5287828601610df5565b60208301525095945050505050565b600060208284031215610f7357600080fd5b813561038481610dd3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b67ffffffffffffffff818116838216019080821115610bc757610bc7610fad565b8183823760009101908152919050565b60006020828403121561101f57600080fd5b815161038481610cec565b81810381811115610a7d57610a7d610fad565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea164736f6c6343000818000a", + ABI: "[{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"authorizedCallers\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"PreviousRampAlreadySet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"UnauthorizedCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"AuthorizedCallerAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"AuthorizedCallerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"prevOnRamp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"prevOffRamp\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"structNonceManager.PreviousRamps\",\"name\":\"prevRamp\",\"type\":\"tuple\"}],\"name\":\"PreviousRampsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"name\":\"SkippedIncorrectNonce\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"addedCallers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"removedCallers\",\"type\":\"address[]\"}],\"internalType\":\"structAuthorizedCallers.AuthorizedCallerArgs\",\"name\":\"authorizedCallerArgs\",\"type\":\"tuple\"}],\"name\":\"applyAuthorizedCallerUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"prevOnRamp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"prevOffRamp\",\"type\":\"address\"}],\"internalType\":\"structNonceManager.PreviousRamps\",\"name\":\"prevRamps\",\"type\":\"tuple\"}],\"internalType\":\"structNonceManager.PreviousRampsArgs[]\",\"name\":\"previousRampsArgs\",\"type\":\"tuple[]\"}],\"name\":\"applyPreviousRampsUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllAuthorizedCallers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"name\":\"getInboundNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"getIncrementedOutboundNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"getOutboundNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"getPreviousRamps\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"prevOnRamp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"prevOffRamp\",\"type\":\"address\"}],\"internalType\":\"structNonceManager.PreviousRamps\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expectedNonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"name\":\"incrementInboundNonce\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60806040523480156200001157600080fd5b5060405162001ad538038062001ad58339810160408190526200003491620004b0565b8033806000816200008c5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000bf57620000bf81620000f6565b5050604080518082018252838152815160008152602080820190935291810191909152620000ee9150620001a1565b5050620005d0565b336001600160a01b03821603620001505760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000083565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b602081015160005b815181101562000231576000828281518110620001ca57620001ca62000582565b60209081029190910101519050620001e4600282620002f0565b1562000227576040516001600160a01b03821681527fc3803387881faad271c47728894e3e36fac830ffc8602ca6fc07733cbda775809060200160405180910390a15b50600101620001a9565b50815160005b8151811015620002ea57600082828151811062000258576200025862000582565b6020026020010151905060006001600160a01b0316816001600160a01b03160362000296576040516342bcdf7f60e11b815260040160405180910390fd5b620002a360028262000310565b506040516001600160a01b03821681527feb1b9b92e50b7f88f9ff25d56765095ac6e91540eee214906f4036a908ffbdef9060200160405180910390a15060010162000237565b50505050565b600062000307836001600160a01b03841662000327565b90505b92915050565b600062000307836001600160a01b0384166200042b565b60008181526001830160205260408120548015620004205760006200034e60018362000598565b8554909150600090620003649060019062000598565b9050818114620003d057600086600001828154811062000388576200038862000582565b9060005260206000200154905080876000018481548110620003ae57620003ae62000582565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080620003e457620003e4620005ba565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506200030a565b60009150506200030a565b600081815260018301602052604081205462000474575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200030a565b5060006200030a565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b0381168114620004ab57600080fd5b919050565b60006020808385031215620004c457600080fd5b82516001600160401b0380821115620004dc57600080fd5b818501915085601f830112620004f157600080fd5b8151818111156200050657620005066200047d565b8060051b604051601f19603f830116810181811085821117156200052e576200052e6200047d565b6040529182528482019250838101850191888311156200054d57600080fd5b938501935b828510156200057657620005668562000493565b8452938501939285019262000552565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b818103818111156200030a57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b6114f580620005e06000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806391a2749a11610081578063e0e03cae1161005b578063e0e03cae14610228578063ea458c0c1461024b578063f2fde38b1461025e57600080fd5b806391a2749a146101d6578063bf18402a146101e9578063c92236251461021557600080fd5b806379ba5097116100b257806379ba50971461019157806384d8acf71461019b5780638da5cb5b146101ae57600080fd5b80632451a627146100ce578063294b5630146100ec575b600080fd5b6100d6610271565b6040516100e39190610f2e565b60405180910390f35b61015d6100fa366004610f9e565b60408051808201909152600080825260208201525067ffffffffffffffff166000908152600460209081526040918290208251808401909352805473ffffffffffffffffffffffffffffffffffffffff9081168452600190910154169082015290565b60408051825173ffffffffffffffffffffffffffffffffffffffff90811682526020938401511692810192909252016100e3565b610199610282565b005b6101996101a9366004610fbb565b610384565b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100e3565b6101996101e4366004611146565b610560565b6101fc6101f73660046111ed565b610574565b60405167ffffffffffffffff90911681526020016100e3565b6101fc61022336600461126f565b610589565b61023b6102363660046112c4565b6105a0565b60405190151581526020016100e3565b6101fc6102593660046111ed565b6106a9565b61019961026c366004611329565b61073d565b606061027d600261074e565b905090565b60015473ffffffffffffffffffffffffffffffffffffffff163314610308576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b61038c61075b565b60005b8181101561055b57368383838181106103aa576103aa611346565b606002919091019150600090506004816103c76020850185610f9e565b67ffffffffffffffff1681526020810191909152604001600020805490915073ffffffffffffffffffffffffffffffffffffffff161515806104225750600181015473ffffffffffffffffffffffffffffffffffffffff1615155b15610459576040517fc6117ae200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104696040830160208401611329565b81547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff919091161781556104b96060830160408401611329565b6001820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905561050d6020830183610f9e565b67ffffffffffffffff167fa2e43edcbc4fd175ae4bebbe3fd6139871ed1f1783cd4a1ace59b90d302c3319836020016040516105499190611375565b60405180910390a2505060010161038f565b505050565b61056861075b565b610571816107de565b50565b60006105808383610970565b90505b92915050565b6000610596848484610a8d565b90505b9392505050565b60006105aa610bde565b60006105b7868585610a8d565b6105c29060016113ec565b90508467ffffffffffffffff168167ffffffffffffffff1614610626577f606ff8179e5e3c059b82df931acc496b7b6053e8879042f8267f930e0595f69f86868686604051610614949392919061140d565b60405180910390a160009150506106a1565b67ffffffffffffffff86166000908152600660205260409081902090518291906106539087908790611479565b908152604051908190036020019020805467ffffffffffffffff929092167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090921691909117905550600190505b949350505050565b60006106b3610bde565b60006106bf8484610970565b6106ca9060016113ec565b67ffffffffffffffff808616600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff89168452909152902080549183167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090921691909117905591505092915050565b61074561075b565b61057181610c21565b6060600061059983610d16565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e65720000000000000000000060448201526064016102ff565b565b602081015160005b815181101561087957600082828151811061080357610803611346565b60200260200101519050610821816002610d7290919063ffffffff16565b156108705760405173ffffffffffffffffffffffffffffffffffffffff821681527fc3803387881faad271c47728894e3e36fac830ffc8602ca6fc07733cbda775809060200160405180910390a15b506001016107e6565b50815160005b815181101561096a57600082828151811061089c5761089c611346565b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361090c576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610917600282610d94565b5060405173ffffffffffffffffffffffffffffffffffffffff821681527feb1b9b92e50b7f88f9ff25d56765095ac6e91540eee214906f4036a908ffbdef9060200160405180910390a15060010161087f565b50505050565b67ffffffffffffffff808316600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120549091168082036105805767ffffffffffffffff841660009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff168015610a85576040517f856c824700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015282169063856c824790602401602060405180830381865afa158015610a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7c9190611489565b92505050610583565b509392505050565b67ffffffffffffffff83166000908152600660205260408082209051829190610ab99086908690611479565b9081526040519081900360200190205467ffffffffffffffff16905060008190036105965767ffffffffffffffff851660009081526004602052604090206001015473ffffffffffffffffffffffffffffffffffffffff168015610bd55773ffffffffffffffffffffffffffffffffffffffff811663856c8247610b3f86880188611329565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015610ba8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcc9190611489565b92505050610599565b50949350505050565b610be9600233610db6565b6107dc576040517fd86ad9cf0000000000000000000000000000000000000000000000000000000081523360048201526024016102ff565b3373ffffffffffffffffffffffffffffffffffffffff821603610ca0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016102ff565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b606081600001805480602002602001604051908101604052809291908181526020018280548015610d6657602002820191906000526020600020905b815481526020019060010190808311610d52575b50505050509050919050565b60006105808373ffffffffffffffffffffffffffffffffffffffff8416610de5565b60006105808373ffffffffffffffffffffffffffffffffffffffff8416610edf565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001830160205260408120541515610580565b60008181526001830160205260408120548015610ece576000610e096001836114a6565b8554909150600090610e1d906001906114a6565b9050818114610e82576000866000018281548110610e3d57610e3d611346565b9060005260206000200154905080876000018481548110610e6057610e60611346565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080610e9357610e936114b9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610583565b6000915050610583565b5092915050565b6000818152600183016020526040812054610f2657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610583565b506000610583565b6020808252825182820181905260009190848201906040850190845b81811015610f7c57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610f4a565b50909695505050505050565b67ffffffffffffffff8116811461057157600080fd5b600060208284031215610fb057600080fd5b813561058081610f88565b60008060208385031215610fce57600080fd5b823567ffffffffffffffff80821115610fe657600080fd5b818501915085601f830112610ffa57600080fd5b81358181111561100957600080fd5b86602060608302850101111561101e57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461057157600080fd5b600082601f83011261109257600080fd5b8135602067ffffffffffffffff808311156110af576110af611030565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811084821117156110f2576110f2611030565b604052938452602081870181019490810192508785111561111257600080fd5b6020870191505b8482101561113b57813561112c8161105f565b83529183019190830190611119565b979650505050505050565b60006020828403121561115857600080fd5b813567ffffffffffffffff8082111561117057600080fd5b908301906040828603121561118457600080fd5b60405160408101818110838211171561119f5761119f611030565b6040528235828111156111b157600080fd5b6111bd87828601611081565b8252506020830135828111156111d257600080fd5b6111de87828601611081565b60208301525095945050505050565b6000806040838503121561120057600080fd5b823561120b81610f88565b9150602083013561121b8161105f565b809150509250929050565b60008083601f84011261123857600080fd5b50813567ffffffffffffffff81111561125057600080fd5b60208301915083602082850101111561126857600080fd5b9250929050565b60008060006040848603121561128457600080fd5b833561128f81610f88565b9250602084013567ffffffffffffffff8111156112ab57600080fd5b6112b786828701611226565b9497909650939450505050565b600080600080606085870312156112da57600080fd5b84356112e581610f88565b935060208501356112f581610f88565b9250604085013567ffffffffffffffff81111561131157600080fd5b61131d87828801611226565b95989497509550505050565b60006020828403121561133b57600080fd5b81356105808161105f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6040810182356113848161105f565b73ffffffffffffffffffffffffffffffffffffffff90811683526020840135906113ad8261105f565b8082166020850152505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b67ffffffffffffffff818116838216019080821115610ed857610ed86113bd565b600067ffffffffffffffff8087168352808616602084015250606060408301528260608301528284608084013760006080848401015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116830101905095945050505050565b8183823760009101908152919050565b60006020828403121561149b57600080fd5b815161058081610f88565b81810381811115610583576105836113bd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea164736f6c6343000818000a", } var NonceManagerABI = NonceManagerMetaData.ABI @@ -207,7 +208,29 @@ func (_NonceManager *NonceManagerCallerSession) GetAllAuthorizedCallers() ([]com return _NonceManager.Contract.GetAllAuthorizedCallers(&_NonceManager.CallOpts) } -func (_NonceManager *NonceManagerCaller) GetOutboundNonce(opts *bind.CallOpts, destChainSelector uint64, sender []byte) (uint64, error) { +func (_NonceManager *NonceManagerCaller) GetInboundNonce(opts *bind.CallOpts, sourceChainSelector uint64, sender []byte) (uint64, error) { + var out []interface{} + err := _NonceManager.contract.Call(opts, &out, "getInboundNonce", sourceChainSelector, sender) + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +func (_NonceManager *NonceManagerSession) GetInboundNonce(sourceChainSelector uint64, sender []byte) (uint64, error) { + return _NonceManager.Contract.GetInboundNonce(&_NonceManager.CallOpts, sourceChainSelector, sender) +} + +func (_NonceManager *NonceManagerCallerSession) GetInboundNonce(sourceChainSelector uint64, sender []byte) (uint64, error) { + return _NonceManager.Contract.GetInboundNonce(&_NonceManager.CallOpts, sourceChainSelector, sender) +} + +func (_NonceManager *NonceManagerCaller) GetOutboundNonce(opts *bind.CallOpts, destChainSelector uint64, sender common.Address) (uint64, error) { var out []interface{} err := _NonceManager.contract.Call(opts, &out, "getOutboundNonce", destChainSelector, sender) @@ -221,11 +244,11 @@ func (_NonceManager *NonceManagerCaller) GetOutboundNonce(opts *bind.CallOpts, d } -func (_NonceManager *NonceManagerSession) GetOutboundNonce(destChainSelector uint64, sender []byte) (uint64, error) { +func (_NonceManager *NonceManagerSession) GetOutboundNonce(destChainSelector uint64, sender common.Address) (uint64, error) { return _NonceManager.Contract.GetOutboundNonce(&_NonceManager.CallOpts, destChainSelector, sender) } -func (_NonceManager *NonceManagerCallerSession) GetOutboundNonce(destChainSelector uint64, sender []byte) (uint64, error) { +func (_NonceManager *NonceManagerCallerSession) GetOutboundNonce(destChainSelector uint64, sender common.Address) (uint64, error) { return _NonceManager.Contract.GetOutboundNonce(&_NonceManager.CallOpts, destChainSelector, sender) } @@ -309,18 +332,30 @@ func (_NonceManager *NonceManagerTransactorSession) ApplyPreviousRampsUpdates(pr return _NonceManager.Contract.ApplyPreviousRampsUpdates(&_NonceManager.TransactOpts, previousRampsArgs) } -func (_NonceManager *NonceManagerTransactor) GetIncrementedOutboundNonce(opts *bind.TransactOpts, destChainSelector uint64, sender []byte) (*types.Transaction, error) { +func (_NonceManager *NonceManagerTransactor) GetIncrementedOutboundNonce(opts *bind.TransactOpts, destChainSelector uint64, sender common.Address) (*types.Transaction, error) { return _NonceManager.contract.Transact(opts, "getIncrementedOutboundNonce", destChainSelector, sender) } -func (_NonceManager *NonceManagerSession) GetIncrementedOutboundNonce(destChainSelector uint64, sender []byte) (*types.Transaction, error) { +func (_NonceManager *NonceManagerSession) GetIncrementedOutboundNonce(destChainSelector uint64, sender common.Address) (*types.Transaction, error) { return _NonceManager.Contract.GetIncrementedOutboundNonce(&_NonceManager.TransactOpts, destChainSelector, sender) } -func (_NonceManager *NonceManagerTransactorSession) GetIncrementedOutboundNonce(destChainSelector uint64, sender []byte) (*types.Transaction, error) { +func (_NonceManager *NonceManagerTransactorSession) GetIncrementedOutboundNonce(destChainSelector uint64, sender common.Address) (*types.Transaction, error) { return _NonceManager.Contract.GetIncrementedOutboundNonce(&_NonceManager.TransactOpts, destChainSelector, sender) } +func (_NonceManager *NonceManagerTransactor) IncrementInboundNonce(opts *bind.TransactOpts, sourceChainSelector uint64, expectedNonce uint64, sender []byte) (*types.Transaction, error) { + return _NonceManager.contract.Transact(opts, "incrementInboundNonce", sourceChainSelector, expectedNonce, sender) +} + +func (_NonceManager *NonceManagerSession) IncrementInboundNonce(sourceChainSelector uint64, expectedNonce uint64, sender []byte) (*types.Transaction, error) { + return _NonceManager.Contract.IncrementInboundNonce(&_NonceManager.TransactOpts, sourceChainSelector, expectedNonce, sender) +} + +func (_NonceManager *NonceManagerTransactorSession) IncrementInboundNonce(sourceChainSelector uint64, expectedNonce uint64, sender []byte) (*types.Transaction, error) { + return _NonceManager.Contract.IncrementInboundNonce(&_NonceManager.TransactOpts, sourceChainSelector, expectedNonce, sender) +} + func (_NonceManager *NonceManagerTransactor) TransferOwnership(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) { return _NonceManager.contract.Transact(opts, "transferOwnership", to) } @@ -839,8 +874,8 @@ func (_NonceManager *NonceManagerFilterer) ParseOwnershipTransferred(log types.L return event, nil } -type NonceManagerPreviousOnRampUpdatedIterator struct { - Event *NonceManagerPreviousOnRampUpdated +type NonceManagerPreviousRampsUpdatedIterator struct { + Event *NonceManagerPreviousRampsUpdated contract *bind.BoundContract event string @@ -851,7 +886,7 @@ type NonceManagerPreviousOnRampUpdatedIterator struct { fail error } -func (it *NonceManagerPreviousOnRampUpdatedIterator) Next() bool { +func (it *NonceManagerPreviousRampsUpdatedIterator) Next() bool { if it.fail != nil { return false @@ -860,7 +895,7 @@ func (it *NonceManagerPreviousOnRampUpdatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(NonceManagerPreviousOnRampUpdated) + it.Event = new(NonceManagerPreviousRampsUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -875,7 +910,7 @@ func (it *NonceManagerPreviousOnRampUpdatedIterator) Next() bool { select { case log := <-it.logs: - it.Event = new(NonceManagerPreviousOnRampUpdated) + it.Event = new(NonceManagerPreviousRampsUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -890,43 +925,162 @@ func (it *NonceManagerPreviousOnRampUpdatedIterator) Next() bool { } } -func (it *NonceManagerPreviousOnRampUpdatedIterator) Error() error { +func (it *NonceManagerPreviousRampsUpdatedIterator) Error() error { return it.fail } -func (it *NonceManagerPreviousOnRampUpdatedIterator) Close() error { +func (it *NonceManagerPreviousRampsUpdatedIterator) Close() error { it.sub.Unsubscribe() return nil } -type NonceManagerPreviousOnRampUpdated struct { - DestChainSelector uint64 - PrevOnRamp common.Address - Raw types.Log +type NonceManagerPreviousRampsUpdated struct { + RemoteChainSelector uint64 + PrevRamp NonceManagerPreviousRamps + Raw types.Log +} + +func (_NonceManager *NonceManagerFilterer) FilterPreviousRampsUpdated(opts *bind.FilterOpts, remoteChainSelector []uint64) (*NonceManagerPreviousRampsUpdatedIterator, error) { + + var remoteChainSelectorRule []interface{} + for _, remoteChainSelectorItem := range remoteChainSelector { + remoteChainSelectorRule = append(remoteChainSelectorRule, remoteChainSelectorItem) + } + + logs, sub, err := _NonceManager.contract.FilterLogs(opts, "PreviousRampsUpdated", remoteChainSelectorRule) + if err != nil { + return nil, err + } + return &NonceManagerPreviousRampsUpdatedIterator{contract: _NonceManager.contract, event: "PreviousRampsUpdated", logs: logs, sub: sub}, nil } -func (_NonceManager *NonceManagerFilterer) FilterPreviousOnRampUpdated(opts *bind.FilterOpts, destChainSelector []uint64) (*NonceManagerPreviousOnRampUpdatedIterator, error) { +func (_NonceManager *NonceManagerFilterer) WatchPreviousRampsUpdated(opts *bind.WatchOpts, sink chan<- *NonceManagerPreviousRampsUpdated, remoteChainSelector []uint64) (event.Subscription, error) { - var destChainSelectorRule []interface{} - for _, destChainSelectorItem := range destChainSelector { - destChainSelectorRule = append(destChainSelectorRule, destChainSelectorItem) + var remoteChainSelectorRule []interface{} + for _, remoteChainSelectorItem := range remoteChainSelector { + remoteChainSelectorRule = append(remoteChainSelectorRule, remoteChainSelectorItem) } - logs, sub, err := _NonceManager.contract.FilterLogs(opts, "PreviousOnRampUpdated", destChainSelectorRule) + logs, sub, err := _NonceManager.contract.WatchLogs(opts, "PreviousRampsUpdated", remoteChainSelectorRule) if err != nil { return nil, err } - return &NonceManagerPreviousOnRampUpdatedIterator{contract: _NonceManager.contract, event: "PreviousOnRampUpdated", logs: logs, sub: sub}, nil + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + + event := new(NonceManagerPreviousRampsUpdated) + if err := _NonceManager.contract.UnpackLog(event, "PreviousRampsUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +func (_NonceManager *NonceManagerFilterer) ParsePreviousRampsUpdated(log types.Log) (*NonceManagerPreviousRampsUpdated, error) { + event := new(NonceManagerPreviousRampsUpdated) + if err := _NonceManager.contract.UnpackLog(event, "PreviousRampsUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +type NonceManagerSkippedIncorrectNonceIterator struct { + Event *NonceManagerSkippedIncorrectNonce + + contract *bind.BoundContract + event string + + logs chan types.Log + sub ethereum.Subscription + done bool + fail error +} + +func (it *NonceManagerSkippedIncorrectNonceIterator) Next() bool { + + if it.fail != nil { + return false + } + + if it.done { + select { + case log := <-it.logs: + it.Event = new(NonceManagerSkippedIncorrectNonce) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + + select { + case log := <-it.logs: + it.Event = new(NonceManagerSkippedIncorrectNonce) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -func (_NonceManager *NonceManagerFilterer) WatchPreviousOnRampUpdated(opts *bind.WatchOpts, sink chan<- *NonceManagerPreviousOnRampUpdated, destChainSelector []uint64) (event.Subscription, error) { +func (it *NonceManagerSkippedIncorrectNonceIterator) Error() error { + return it.fail +} - var destChainSelectorRule []interface{} - for _, destChainSelectorItem := range destChainSelector { - destChainSelectorRule = append(destChainSelectorRule, destChainSelectorItem) +func (it *NonceManagerSkippedIncorrectNonceIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +type NonceManagerSkippedIncorrectNonce struct { + SourceChainSelector uint64 + Nonce uint64 + Sender []byte + Raw types.Log +} + +func (_NonceManager *NonceManagerFilterer) FilterSkippedIncorrectNonce(opts *bind.FilterOpts) (*NonceManagerSkippedIncorrectNonceIterator, error) { + + logs, sub, err := _NonceManager.contract.FilterLogs(opts, "SkippedIncorrectNonce") + if err != nil { + return nil, err } + return &NonceManagerSkippedIncorrectNonceIterator{contract: _NonceManager.contract, event: "SkippedIncorrectNonce", logs: logs, sub: sub}, nil +} + +func (_NonceManager *NonceManagerFilterer) WatchSkippedIncorrectNonce(opts *bind.WatchOpts, sink chan<- *NonceManagerSkippedIncorrectNonce) (event.Subscription, error) { - logs, sub, err := _NonceManager.contract.WatchLogs(opts, "PreviousOnRampUpdated", destChainSelectorRule) + logs, sub, err := _NonceManager.contract.WatchLogs(opts, "SkippedIncorrectNonce") if err != nil { return nil, err } @@ -936,8 +1090,8 @@ func (_NonceManager *NonceManagerFilterer) WatchPreviousOnRampUpdated(opts *bind select { case log := <-logs: - event := new(NonceManagerPreviousOnRampUpdated) - if err := _NonceManager.contract.UnpackLog(event, "PreviousOnRampUpdated", log); err != nil { + event := new(NonceManagerSkippedIncorrectNonce) + if err := _NonceManager.contract.UnpackLog(event, "SkippedIncorrectNonce", log); err != nil { return err } event.Raw = log @@ -958,9 +1112,9 @@ func (_NonceManager *NonceManagerFilterer) WatchPreviousOnRampUpdated(opts *bind }), nil } -func (_NonceManager *NonceManagerFilterer) ParsePreviousOnRampUpdated(log types.Log) (*NonceManagerPreviousOnRampUpdated, error) { - event := new(NonceManagerPreviousOnRampUpdated) - if err := _NonceManager.contract.UnpackLog(event, "PreviousOnRampUpdated", log); err != nil { +func (_NonceManager *NonceManagerFilterer) ParseSkippedIncorrectNonce(log types.Log) (*NonceManagerSkippedIncorrectNonce, error) { + event := new(NonceManagerSkippedIncorrectNonce) + if err := _NonceManager.contract.UnpackLog(event, "SkippedIncorrectNonce", log); err != nil { return nil, err } event.Raw = log @@ -977,8 +1131,10 @@ func (_NonceManager *NonceManager) ParseLog(log types.Log) (generated.AbigenLog, return _NonceManager.ParseOwnershipTransferRequested(log) case _NonceManager.abi.Events["OwnershipTransferred"].ID: return _NonceManager.ParseOwnershipTransferred(log) - case _NonceManager.abi.Events["PreviousOnRampUpdated"].ID: - return _NonceManager.ParsePreviousOnRampUpdated(log) + case _NonceManager.abi.Events["PreviousRampsUpdated"].ID: + return _NonceManager.ParsePreviousRampsUpdated(log) + case _NonceManager.abi.Events["SkippedIncorrectNonce"].ID: + return _NonceManager.ParseSkippedIncorrectNonce(log) default: return nil, fmt.Errorf("abigen wrapper received unknown log topic: %v", log.Topics[0]) @@ -1001,8 +1157,12 @@ func (NonceManagerOwnershipTransferred) Topic() common.Hash { return common.HexToHash("0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0") } -func (NonceManagerPreviousOnRampUpdated) Topic() common.Hash { - return common.HexToHash("0x89d2355e2829b1e15855fec87fb400638aebc9f03728949d702d3b5d4ea99954") +func (NonceManagerPreviousRampsUpdated) Topic() common.Hash { + return common.HexToHash("0xa2e43edcbc4fd175ae4bebbe3fd6139871ed1f1783cd4a1ace59b90d302c3319") +} + +func (NonceManagerSkippedIncorrectNonce) Topic() common.Hash { + return common.HexToHash("0x606ff8179e5e3c059b82df931acc496b7b6053e8879042f8267f930e0595f69f") } func (_NonceManager *NonceManager) Address() common.Address { @@ -1012,7 +1172,9 @@ func (_NonceManager *NonceManager) Address() common.Address { type NonceManagerInterface interface { GetAllAuthorizedCallers(opts *bind.CallOpts) ([]common.Address, error) - GetOutboundNonce(opts *bind.CallOpts, destChainSelector uint64, sender []byte) (uint64, error) + GetInboundNonce(opts *bind.CallOpts, sourceChainSelector uint64, sender []byte) (uint64, error) + + GetOutboundNonce(opts *bind.CallOpts, destChainSelector uint64, sender common.Address) (uint64, error) GetPreviousRamps(opts *bind.CallOpts, chainSelector uint64) (NonceManagerPreviousRamps, error) @@ -1024,7 +1186,9 @@ type NonceManagerInterface interface { ApplyPreviousRampsUpdates(opts *bind.TransactOpts, previousRampsArgs []NonceManagerPreviousRampsArgs) (*types.Transaction, error) - GetIncrementedOutboundNonce(opts *bind.TransactOpts, destChainSelector uint64, sender []byte) (*types.Transaction, error) + GetIncrementedOutboundNonce(opts *bind.TransactOpts, destChainSelector uint64, sender common.Address) (*types.Transaction, error) + + IncrementInboundNonce(opts *bind.TransactOpts, sourceChainSelector uint64, expectedNonce uint64, sender []byte) (*types.Transaction, error) TransferOwnership(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) @@ -1052,11 +1216,17 @@ type NonceManagerInterface interface { ParseOwnershipTransferred(log types.Log) (*NonceManagerOwnershipTransferred, error) - FilterPreviousOnRampUpdated(opts *bind.FilterOpts, destChainSelector []uint64) (*NonceManagerPreviousOnRampUpdatedIterator, error) + FilterPreviousRampsUpdated(opts *bind.FilterOpts, remoteChainSelector []uint64) (*NonceManagerPreviousRampsUpdatedIterator, error) + + WatchPreviousRampsUpdated(opts *bind.WatchOpts, sink chan<- *NonceManagerPreviousRampsUpdated, remoteChainSelector []uint64) (event.Subscription, error) + + ParsePreviousRampsUpdated(log types.Log) (*NonceManagerPreviousRampsUpdated, error) + + FilterSkippedIncorrectNonce(opts *bind.FilterOpts) (*NonceManagerSkippedIncorrectNonceIterator, error) - WatchPreviousOnRampUpdated(opts *bind.WatchOpts, sink chan<- *NonceManagerPreviousOnRampUpdated, destChainSelector []uint64) (event.Subscription, error) + WatchSkippedIncorrectNonce(opts *bind.WatchOpts, sink chan<- *NonceManagerSkippedIncorrectNonce) (event.Subscription, error) - ParsePreviousOnRampUpdated(log types.Log) (*NonceManagerPreviousOnRampUpdated, error) + ParseSkippedIncorrectNonce(log types.Log) (*NonceManagerSkippedIncorrectNonce, error) ParseLog(log types.Log) (generated.AbigenLog, error) diff --git a/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt b/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt index 26c576c9c9..aa162a70ec 100644 --- a/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt +++ b/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt @@ -22,7 +22,7 @@ mock_usdc_token_messenger: ../../../contracts/solc/v0.8.24/MockE2EUSDCTokenMesse mock_usdc_token_transmitter: ../../../contracts/solc/v0.8.24/MockE2EUSDCTransmitter/MockE2EUSDCTransmitter.abi ../../../contracts/solc/v0.8.24/MockE2EUSDCTransmitter/MockE2EUSDCTransmitter.bin 33bdad70822e889de7c720ed20085cf9cd3f8eba8b68f26bd6535197749595fe mock_v3_aggregator_contract: ../../../contracts/solc/v0.8.24/MockV3Aggregator/MockV3Aggregator.abi ../../../contracts/solc/v0.8.24/MockV3Aggregator/MockV3Aggregator.bin 518e19efa2ff52b0fefd8e597b05765317ee7638189bfe34ca43de2f6599faf4 multi_aggregate_rate_limiter: ../../../contracts/solc/v0.8.24/MultiAggregateRateLimiter/MultiAggregateRateLimiter.abi ../../../contracts/solc/v0.8.24/MultiAggregateRateLimiter/MultiAggregateRateLimiter.bin abb0ecb1ed8621f26e43b39f5fa25f3d0b6d6c184fa37c404c4389605ecb74e7 -nonce_manager: ../../../contracts/solc/v0.8.24/NonceManager/NonceManager.abi ../../../contracts/solc/v0.8.24/NonceManager/NonceManager.bin cdc11c1ab4c1c3fd77f30215e9c579404a6e60eb9adc213d73ca0773c3bb5784 +nonce_manager: ../../../contracts/solc/v0.8.24/NonceManager/NonceManager.abi ../../../contracts/solc/v0.8.24/NonceManager/NonceManager.bin 78b58f4f192db7496e2b6de805d6a2c918b98d4fa62f3c7ed145ef3b5657a40d ocr3_config_encoder: ../../../contracts/solc/v0.8.24/IOCR3ConfigEncoder/IOCR3ConfigEncoder.abi ../../../contracts/solc/v0.8.24/IOCR3ConfigEncoder/IOCR3ConfigEncoder.bin e21180898e1ad54a045ee20add85a2793c681425ea06f66d1a9e5cab128b6487 ping_pong_demo: ../../../contracts/solc/v0.8.24/PingPongDemo/PingPongDemo.abi ../../../contracts/solc/v0.8.24/PingPongDemo/PingPongDemo.bin 1588313bb5e781d181a825247d30828f59007700f36b4b9b00391592b06ff4b4 price_registry: ../../../contracts/solc/v0.8.24/PriceRegistry/PriceRegistry.abi ../../../contracts/solc/v0.8.24/PriceRegistry/PriceRegistry.bin 0b3e253684d7085aa11f9179b71453b9db9d11cabea41605d5b4ac4128f85bfb diff --git a/core/gethwrappers/ccip/go_generate.go b/core/gethwrappers/ccip/go_generate.go index a5eaa37523..948fb7a5f7 100644 --- a/core/gethwrappers/ccip/go_generate.go +++ b/core/gethwrappers/ccip/go_generate.go @@ -30,6 +30,7 @@ package ccip //go:generate go run ../generation/generate/wrap.go ../../../contracts/solc/v0.8.24/PriceRegistry/PriceRegistry.abi ../../../contracts/solc/v0.8.24/PriceRegistry/PriceRegistry.bin PriceRegistry price_registry //go:generate go run ../generation/generate/wrap.go ../../../contracts/solc/v0.8.24/CCIPConfig/CCIPConfig.abi ../../../contracts/solc/v0.8.24/CCIPConfig/CCIPConfig.bin CCIPConfig ccip_config //go:generate go run ../generation/generate/wrap.go ../../../contracts/solc/v0.8.24/IOCR3ConfigEncoder/IOCR3ConfigEncoder.abi ../../../contracts/solc/v0.8.24/IOCR3ConfigEncoder/IOCR3ConfigEncoder.bin IOCR3ConfigEncoder ocr3_config_encoder +//go:generate go run ../generation/generate/wrap.go ../../../contracts/solc/v0.8.24/NonceManager/NonceManager.abi ../../../contracts/solc/v0.8.24/NonceManager/NonceManager.bin NonceManager nonce_manager //go:generate go run ../generation/generate/wrap.go ../../../contracts/solc/v0.8.24/MaybeRevertMessageReceiver/MaybeRevertMessageReceiver.abi ../../../contracts/solc/v0.8.24/MaybeRevertMessageReceiver/MaybeRevertMessageReceiver.bin MaybeRevertMessageReceiver maybe_revert_message_receiver //go:generate go run ../generation/generate/wrap.go ../../../contracts/solc/v0.8.24/PingPongDemo/PingPongDemo.abi ../../../contracts/solc/v0.8.24/PingPongDemo/PingPongDemo.bin PingPongDemo ping_pong_demo diff --git a/core/services/ocr3/plugins/ccip_integration_tests/helpers.go b/core/services/ocr3/plugins/ccip_integration_tests/helpers.go new file mode 100644 index 0000000000..2a4e85560c --- /dev/null +++ b/core/services/ocr3/plugins/ccip_integration_tests/helpers.go @@ -0,0 +1,518 @@ +package ccip_integration_tests + +import ( + "encoding/hex" + "math/big" + "testing" + + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/accounts/abi/bind/backends" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core" + + "github.com/smartcontractkit/chainlink/v2/core/chains/evm/assets" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/ccip_config" + + chainsel "github.com/smartcontractkit/chain-selectors" + + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/arm_proxy_contract" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_multi_offramp" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_multi_onramp" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/mock_arm_contract" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/nonce_manager" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/price_registry" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/router" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/token_admin_registry" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/weth9" + kcr "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/keystone/generated/capabilities_registry" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/shared/generated/link_token" + "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" + + "github.com/stretchr/testify/require" +) + +var ( + homeChainID = chainsel.GETH_TESTNET.EvmChainID +) + +const ( + CapabilityLabelledName = "ccip" + CapabilityVersion = "v1.0.0" +) + +func e18Mult(amount uint64) *big.Int { + return new(big.Int).Mul(uintBigInt(amount), uintBigInt(1e18)) +} + +func uintBigInt(i uint64) *big.Int { + return new(big.Int).SetUint64(i) +} + +type homeChain struct { + backend *backends.SimulatedBackend + owner *bind.TransactOpts + chainID uint64 + capabilityRegistry *kcr.CapabilitiesRegistry + ccipConfigContract common.Address +} + +type onchainUniverse struct { + backend *backends.SimulatedBackend + owner *bind.TransactOpts + chainID uint64 + linkToken *link_token.LinkToken + weth *weth9.WETH9 + router *router.Router + rmnProxy *arm_proxy_contract.ARMProxyContract + rmn *mock_arm_contract.MockARMContract + onramp *evm_2_evm_multi_onramp.EVM2EVMMultiOnRamp + offramp *evm_2_evm_multi_offramp.EVM2EVMMultiOffRamp + priceRegistry *price_registry.PriceRegistry + tokenAdminRegistry *token_admin_registry.TokenAdminRegistry + nonceManager *nonce_manager.NonceManager +} + +type chainBase struct { + backend *backends.SimulatedBackend + owner *bind.TransactOpts +} + +// createUniverses does the following: +// 1. Creates 1 home chain and `numChains`-1 non-home chains +// 2. Sets up home chain with the capability registry and the CCIP config contract +// 2. Deploys the CCIP contracts to all chains. +// 3. Sets up the initial configurations for the contracts on all chains. +// 4. Wires the chains together. +func createUniverses( + t *testing.T, + numUniverses int, +) (homeChainUni homeChain, universes map[uint64]onchainUniverse) { + chains := createChains(t, numUniverses) + + homeChainBase, ok := chains[homeChainID] + require.True(t, ok, "home chain backend not available") + // Set up home chain first + homeChainUniverse := setupHomeChain(t, homeChainBase.owner, homeChainBase.backend) + + // deploy the ccip contracts on all chains + universes = make(map[uint64]onchainUniverse) + for chainID, base := range chains { + owner := base.owner + backend := base.backend + // deploy the CCIP contracts + linkToken := deployLinkToken(t, owner, backend, chainID) + rmn := deployMockARMContract(t, owner, backend, chainID) + rmnProxy := deployARMProxyContract(t, owner, backend, rmn.Address(), chainID) + weth := deployWETHContract(t, owner, backend, chainID) + rout := deployRouter(t, owner, backend, weth.Address(), rmnProxy.Address(), chainID) + priceRegistry := deployPriceRegistry(t, owner, backend, linkToken.Address(), weth.Address(), chainID) + tokenAdminRegistry := deployTokenAdminRegistry(t, owner, backend, chainID) + nonceManager := deployNonceManager(t, owner, backend, chainID) + + //====================================================================== + // OnRamp + //====================================================================== + onRampAddr, _, _, err := evm_2_evm_multi_onramp.DeployEVM2EVMMultiOnRamp( + owner, + backend, + evm_2_evm_multi_onramp.EVM2EVMMultiOnRampStaticConfig{ + LinkToken: linkToken.Address(), + ChainSelector: chainID, + RmnProxy: rmnProxy.Address(), + MaxFeeJuelsPerMsg: big.NewInt(1e18), + NonceManager: nonceManager.Address(), + TokenAdminRegistry: tokenAdminRegistry.Address(), + }, + evm_2_evm_multi_onramp.EVM2EVMMultiOnRampDynamicConfig{ + Router: rout.Address(), + PriceRegistry: priceRegistry.Address(), + //`withdrawFeeTokens` onRamp function is not part of the message flow + // so we can set this to any address + FeeAggregator: testutils.NewAddress(), + }, + // Destination chain configs will be set up later once we have all chains + []evm_2_evm_multi_onramp.EVM2EVMMultiOnRampDestChainConfigArgs{}, + // PremiumMultiplier is always needed if the onramp is enabled + []evm_2_evm_multi_onramp.EVM2EVMMultiOnRampPremiumMultiplierWeiPerEthArgs{ + { + PremiumMultiplierWeiPerEth: 9e17, //0.9 ETH + Token: linkToken.Address(), + }, + { + PremiumMultiplierWeiPerEth: 1e18, + Token: weth.Address(), + }, + }, + //TODO: We'll need to have TransferFeeConfigArgs when we start testing with sending tokens + []evm_2_evm_multi_onramp.EVM2EVMMultiOnRampTokenTransferFeeConfigArgs{}, + ) + require.NoErrorf(t, err, "failed to deploy onramp on chain id %d", chainID) + backend.Commit() + onramp, err := evm_2_evm_multi_onramp.NewEVM2EVMMultiOnRamp(onRampAddr, backend) + require.NoError(t, err) + + //====================================================================== + // OffRamp + //====================================================================== + offrampAddr, _, _, err := evm_2_evm_multi_offramp.DeployEVM2EVMMultiOffRamp( + owner, + backend, + evm_2_evm_multi_offramp.EVM2EVMMultiOffRampStaticConfig{ + ChainSelector: chainID, + RmnProxy: rmnProxy.Address(), + TokenAdminRegistry: tokenAdminRegistry.Address(), + NonceManager: nonceManager.Address(), + }, + // Source chain configs will be set up later once we have all chains + []evm_2_evm_multi_offramp.EVM2EVMMultiOffRampSourceChainConfigArgs{}, + ) + require.NoErrorf(t, err, "failed to deploy offramp on chain id %d", chainID) + backend.Commit() + offramp, err := evm_2_evm_multi_offramp.NewEVM2EVMMultiOffRamp(offrampAddr, backend) + require.NoError(t, err) + + universe := onchainUniverse{ + backend: backend, + owner: owner, + chainID: chainID, + linkToken: linkToken, + weth: weth, + router: rout, + rmnProxy: rmnProxy, + rmn: rmn, + onramp: onramp, + offramp: offramp, + priceRegistry: priceRegistry, + tokenAdminRegistry: tokenAdminRegistry, + nonceManager: nonceManager, + } + // Set up the initial configurations for the contracts + setupUniverseBasics(t, universe) + + universes[chainID] = universe + } + + // Once we have all chains created and contracts deployed, we can set up the initial configurations and wire chains together + connectUniverses(t, universes) + + return homeChainUniverse, universes +} + +// Creates 1 home chain and `numChains`-1 non-home chains +func createChains(t *testing.T, numChains int) map[uint64]chainBase { + chains := make(map[uint64]chainBase) + + homeChainOwner := testutils.MustNewSimTransactor(t) + chains[homeChainID] = chainBase{ + owner: homeChainOwner, + backend: backends.NewSimulatedBackend(core.GenesisAlloc{ + homeChainOwner.From: core.GenesisAccount{ + Balance: assets.Ether(10_000).ToInt(), + }, + }, 30e6), + } + + for chainID := chainsel.TEST_90000001.EvmChainID; len(chains) < numChains && chainID < chainsel.TEST_90000020.EvmChainID; chainID++ { + owner := testutils.MustNewSimTransactor(t) + chains[chainID] = chainBase{ + owner: owner, + backend: backends.NewSimulatedBackend(core.GenesisAlloc{ + owner.From: core.GenesisAccount{ + Balance: assets.Ether(10_000).ToInt(), + }, + }, 30e6), + } + } + + return chains +} + +func setupHomeChain(t *testing.T, owner *bind.TransactOpts, backend *backends.SimulatedBackend) homeChain { + // deploy the capability registry on the home chain + crAddress, _, _, err := kcr.DeployCapabilitiesRegistry(owner, backend) + require.NoError(t, err, "failed to deploy capability registry on home chain") + backend.Commit() + + capabilityRegistry, err := kcr.NewCapabilitiesRegistry(crAddress, backend) + require.NoError(t, err) + + ccAddress, _, _, err := ccip_config.DeployCCIPConfig(owner, backend, crAddress) + require.NoError(t, err) + backend.Commit() + + capabilityConfig, err := ccip_config.NewCCIPConfig(ccAddress, backend) + require.NoError(t, err) + + _, err = capabilityRegistry.AddCapabilities(owner, []kcr.CapabilitiesRegistryCapability{ + { + LabelledName: CapabilityLabelledName, + Version: CapabilityVersion, + CapabilityType: 2, // consensus. not used (?) + ResponseType: 0, // report. not used (?) + ConfigurationContract: ccAddress, + }, + }) + require.NoError(t, err, "failed to add capabilities to the capability registry") + backend.Commit() + + return homeChain{ + backend: backend, + owner: owner, + chainID: homeChainID, + capabilityRegistry: capabilityRegistry, + ccipConfigContract: capabilityConfig.Address(), + } +} + +func connectUniverses( + t *testing.T, + universes map[uint64]onchainUniverse, +) { + for _, uni := range universes { + wireRouter(t, uni, universes) + wireOnRamp(t, uni, universes) + wireOffRamp(t, uni, universes) + initRemoteChainsGasPrices(t, uni, universes) + } +} + +// setupUniverseBasics sets up the initial configurations for the CCIP contracts on a single chain. +// 1. Mint 1000 LINK to the owner +// 2. Set the price registry with local token prices +// 3. Authorize the onRamp and offRamp on the nonce manager +func setupUniverseBasics(t *testing.T, uni onchainUniverse) { + //============================================================================= + // Universe specific updates/configs + // These updates are specific to each universe and are set up here + // These updates don't depend on other chains + //============================================================================= + owner := uni.owner + //============================================================================= + // Mint 1000 LINK to owner + //============================================================================= + _, err := uni.linkToken.GrantMintRole(owner, owner.From) + require.NoError(t, err) + _, err = uni.linkToken.Mint(owner, owner.From, e18Mult(1000)) + require.NoError(t, err) + uni.backend.Commit() + + //============================================================================= + // Price updates for tokens + // These are the prices of the fee tokens of local chain in USD + //============================================================================= + tokenPriceUpdates := []price_registry.InternalTokenPriceUpdate{ + { + SourceToken: uni.linkToken.Address(), + UsdPerToken: e18Mult(20), + }, + { + SourceToken: uni.weth.Address(), + UsdPerToken: e18Mult(4000), + }, + } + _, err = uni.priceRegistry.UpdatePrices(owner, price_registry.InternalPriceUpdates{ + TokenPriceUpdates: tokenPriceUpdates, + }) + require.NoErrorf(t, err, "failed to apply price registry updates on chain id %d", uni.chainID) + uni.backend.Commit() + + //============================================================================= + // Authorize OnRamp & OffRamp on NonceManager + // Otherwise the onramp will not be able to call the nonceManager to get next Nonce + //============================================================================= + authorizedCallersAuthorizedCallerArgs := nonce_manager.AuthorizedCallersAuthorizedCallerArgs{ + AddedCallers: []common.Address{ + uni.onramp.Address(), + uni.offramp.Address(), + }, + } + _, err = uni.nonceManager.ApplyAuthorizedCallerUpdates(owner, authorizedCallersAuthorizedCallerArgs) + require.NoError(t, err) + uni.backend.Commit() +} + +// As we can't change router contract. The contract was expecting onRamp and offRamp per lane and not per chain +// In the new architecture we have only one onRamp and one offRamp per chain. +// hence we add the mapping for all remote chains to the onRamp/offRamp contract of the local chain +func wireRouter(t *testing.T, uni onchainUniverse, universes map[uint64]onchainUniverse) { + owner := uni.owner + var ( + routerOnrampUpdates []router.RouterOnRamp + routerOfframpUpdates []router.RouterOffRamp + ) + for remoteChainID := range universes { + if remoteChainID == uni.chainID { + continue + } + routerOnrampUpdates = append(routerOnrampUpdates, router.RouterOnRamp{ + DestChainSelector: remoteChainID, + OnRamp: uni.onramp.Address(), + }) + routerOfframpUpdates = append(routerOfframpUpdates, router.RouterOffRamp{ + SourceChainSelector: remoteChainID, + OffRamp: uni.offramp.Address(), + }) + } + _, err := uni.router.ApplyRampUpdates(owner, routerOnrampUpdates, []router.RouterOffRamp{}, routerOfframpUpdates) + require.NoErrorf(t, err, "failed to apply ramp updates on router on chain id %d", uni.chainID) + uni.backend.Commit() +} + +// Setting OnRampDestChainConfigs +func wireOnRamp(t *testing.T, uni onchainUniverse, universes map[uint64]onchainUniverse) { + owner := uni.owner + var onrampDestChainConfigArgs []evm_2_evm_multi_onramp.EVM2EVMMultiOnRampDestChainConfigArgs + for remoteChainID := range universes { + if remoteChainID == uni.chainID { + continue + } + onrampDestChainConfigArgs = append(onrampDestChainConfigArgs, evm_2_evm_multi_onramp.EVM2EVMMultiOnRampDestChainConfigArgs{ + DestChainSelector: remoteChainID, + DynamicConfig: defaultOnRampDynamicConfig(t), + }) + } + _, err := uni.onramp.ApplyDestChainConfigUpdates(owner, onrampDestChainConfigArgs) + require.NoErrorf(t, err, "failed to apply dest chain config updates on onramp on chain id %d", uni.chainID) + uni.backend.Commit() +} + +// Setting OffRampSourceChainConfigs +func wireOffRamp(t *testing.T, uni onchainUniverse, universes map[uint64]onchainUniverse) { + owner := uni.owner + var offrampSourceChainConfigArgs []evm_2_evm_multi_offramp.EVM2EVMMultiOffRampSourceChainConfigArgs + for remoteChainID, remoteUniverse := range universes { + if remoteChainID == uni.chainID { + continue + } + offrampSourceChainConfigArgs = append(offrampSourceChainConfigArgs, evm_2_evm_multi_offramp.EVM2EVMMultiOffRampSourceChainConfigArgs{ + SourceChainSelector: remoteChainID, // for each destination chain, add a source chain config + IsEnabled: true, + OnRamp: remoteUniverse.onramp.Address().Bytes(), + }) + } + _, err := uni.offramp.ApplySourceChainConfigUpdates(owner, offrampSourceChainConfigArgs) + require.NoErrorf(t, err, "failed to apply source chain config updates on offramp on chain id %d", uni.chainID) + uni.backend.Commit() +} + +// initRemoteChainsGasPrices sets the gas prices for all chains except the local chain in the local price registry +func initRemoteChainsGasPrices(t *testing.T, uni onchainUniverse, universes map[uint64]onchainUniverse) { + var gasPriceUpdates []price_registry.InternalGasPriceUpdate + for remoteChainID := range universes { + if remoteChainID == uni.chainID { + continue + } + gasPriceUpdates = append(gasPriceUpdates, + price_registry.InternalGasPriceUpdate{ + DestChainSelector: remoteChainID, + UsdPerUnitGas: big.NewInt(2e12), + }, + ) + } + _, err := uni.priceRegistry.UpdatePrices(uni.owner, price_registry.InternalPriceUpdates{ + GasPriceUpdates: gasPriceUpdates, + }) + require.NoError(t, err) +} + +func defaultOnRampDynamicConfig(t *testing.T) evm_2_evm_multi_onramp.EVM2EVMMultiOnRampDestChainDynamicConfig { + // https://github.com/smartcontractkit/ccip/blob/c4856b64bd766f1ddbaf5d13b42d3c4b12efde3a/contracts/src/v0.8/ccip/libraries/Internal.sol#L337-L337 + /* + ```Solidity + // bytes4(keccak256("CCIP ChainFamilySelector EVM")) + bytes4 public constant CHAIN_FAMILY_SELECTOR_EVM = 0x2812d52c; + ``` + */ + evmFamilySelector, err := hex.DecodeString("2812d52c") + require.NoError(t, err) + return evm_2_evm_multi_onramp.EVM2EVMMultiOnRampDestChainDynamicConfig{ + IsEnabled: true, + MaxNumberOfTokensPerMsg: 10, + MaxDataBytes: 256, + MaxPerMsgGasLimit: 3_000_000, + DestGasOverhead: 50_000, + DefaultTokenFeeUSDCents: 1, + DestGasPerPayloadByte: 10, + DestDataAvailabilityOverheadGas: 0, + DestGasPerDataAvailabilityByte: 100, + DestDataAvailabilityMultiplierBps: 1, + DefaultTokenDestGasOverhead: 50_000, + DefaultTokenDestBytesOverhead: 32, + DefaultTxGasLimit: 200_000, + GasMultiplierWeiPerEth: 1, + NetworkFeeUSDCents: 1, + ChainFamilySelector: [4]byte(evmFamilySelector), + } +} + +func deployLinkToken(t *testing.T, owner *bind.TransactOpts, backend *backends.SimulatedBackend, chainID uint64) *link_token.LinkToken { + linkAddr, _, _, err := link_token.DeployLinkToken(owner, backend) + require.NoErrorf(t, err, "failed to deploy link token on chain id %d", chainID) + backend.Commit() + linkToken, err := link_token.NewLinkToken(linkAddr, backend) + require.NoError(t, err) + return linkToken +} + +func deployMockARMContract(t *testing.T, owner *bind.TransactOpts, backend *backends.SimulatedBackend, chainID uint64) *mock_arm_contract.MockARMContract { + rmnAddr, _, _, err := mock_arm_contract.DeployMockARMContract(owner, backend) + require.NoErrorf(t, err, "failed to deploy mock arm on chain id %d", chainID) + backend.Commit() + rmn, err := mock_arm_contract.NewMockARMContract(rmnAddr, backend) + require.NoError(t, err) + return rmn +} + +func deployARMProxyContract(t *testing.T, owner *bind.TransactOpts, backend *backends.SimulatedBackend, rmnAddr common.Address, chainID uint64) *arm_proxy_contract.ARMProxyContract { + rmnProxyAddr, _, _, err := arm_proxy_contract.DeployARMProxyContract(owner, backend, rmnAddr) + require.NoErrorf(t, err, "failed to deploy arm proxy on chain id %d", chainID) + backend.Commit() + rmnProxy, err := arm_proxy_contract.NewARMProxyContract(rmnProxyAddr, backend) + require.NoError(t, err) + return rmnProxy +} + +func deployWETHContract(t *testing.T, owner *bind.TransactOpts, backend *backends.SimulatedBackend, chainID uint64) *weth9.WETH9 { + wethAddr, _, _, err := weth9.DeployWETH9(owner, backend) + require.NoErrorf(t, err, "failed to deploy weth contract on chain id %d", chainID) + backend.Commit() + weth, err := weth9.NewWETH9(wethAddr, backend) + require.NoError(t, err) + return weth +} + +func deployRouter(t *testing.T, owner *bind.TransactOpts, backend *backends.SimulatedBackend, wethAddr, rmnProxyAddr common.Address, chainID uint64) *router.Router { + routerAddr, _, _, err := router.DeployRouter(owner, backend, wethAddr, rmnProxyAddr) + require.NoErrorf(t, err, "failed to deploy router on chain id %d", chainID) + backend.Commit() + rout, err := router.NewRouter(routerAddr, backend) + require.NoError(t, err) + return rout +} + +func deployPriceRegistry(t *testing.T, owner *bind.TransactOpts, backend *backends.SimulatedBackend, linkAddr, wethAddr common.Address, chainID uint64) *price_registry.PriceRegistry { + priceRegistryAddr, _, _, err := price_registry.DeployPriceRegistry(owner, backend, []common.Address{}, []common.Address{linkAddr, wethAddr}, 24*60*60, []price_registry.PriceRegistryTokenPriceFeedUpdate{}) + require.NoErrorf(t, err, "failed to deploy price registry on chain id %d", chainID) + backend.Commit() + priceRegistry, err := price_registry.NewPriceRegistry(priceRegistryAddr, backend) + require.NoError(t, err) + return priceRegistry +} + +func deployTokenAdminRegistry(t *testing.T, owner *bind.TransactOpts, backend *backends.SimulatedBackend, chainID uint64) *token_admin_registry.TokenAdminRegistry { + tarAddr, _, _, err := token_admin_registry.DeployTokenAdminRegistry(owner, backend) + require.NoErrorf(t, err, "failed to deploy token admin registry on chain id %d", chainID) + backend.Commit() + tokenAdminRegistry, err := token_admin_registry.NewTokenAdminRegistry(tarAddr, backend) + require.NoError(t, err) + return tokenAdminRegistry +} + +func deployNonceManager(t *testing.T, owner *bind.TransactOpts, backend *backends.SimulatedBackend, chainID uint64) *nonce_manager.NonceManager { + nonceManagerAddr, _, _, err := nonce_manager.DeployNonceManager(owner, backend, []common.Address{owner.From}) + require.NoErrorf(t, err, "failed to deploy nonce_manager on chain id %d", chainID) + backend.Commit() + nonceManager, err := nonce_manager.NewNonceManager(nonceManagerAddr, backend) + require.NoError(t, err) + return nonceManager +} diff --git a/core/services/ocr3/plugins/ccip_integration_tests/ping_pong_test.go b/core/services/ocr3/plugins/ccip_integration_tests/ping_pong_test.go new file mode 100644 index 0000000000..1b1e96693a --- /dev/null +++ b/core/services/ocr3/plugins/ccip_integration_tests/ping_pong_test.go @@ -0,0 +1,95 @@ +package ccip_integration_tests + +import ( + "testing" + + "github.com/ethereum/go-ethereum/accounts/abi/bind" + gethcommon "github.com/ethereum/go-ethereum/common" + + "github.com/stretchr/testify/require" + + "golang.org/x/exp/maps" + + pp "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/ping_pong_demo" +) + +/* +* Test is setting up 3 chains (let's call them A, B, C), each chain deploys and starts 2 ping pong contracts for the other 2. +* A ---deploy+start---> (pingPongB, pingPongC) +* B ---deploy+start---> (pingPongA, pingPongC) +* C ---deploy+start---> (pingPongA, pingPongB) +* and then checks that each ping pong contract emitted `CCIPSendRequested` event from the expected source to destination. +* Test fails if any wiring between contracts is not correct. + */ +func TestPingPong(t *testing.T) { + _, universes := createUniverses(t, 3) + pingPongs := initializePingPongContracts(t, universes) + for chainID, universe := range universes { + for otherChain, pingPong := range pingPongs[chainID] { + t.Log("PingPong From: ", chainID, " To: ", otherChain) + _, err := pingPong.StartPingPong(universe.owner) + require.NoError(t, err) + universe.backend.Commit() + + logIter, err := universe.onramp.FilterCCIPSendRequested(&bind.FilterOpts{Start: 0}, nil) + require.NoError(t, err) + // Iterate until latest event + for logIter.Next() { + } + log := logIter.Event + require.Equal(t, otherChain, log.DestChainSelector) + require.Equal(t, pingPong.Address(), log.Message.Sender) + chainPingPongAddr := pingPongs[otherChain][chainID].Address().Bytes() + // With chain agnostic addresses we need to pad the address to the correct length if the receiver is zero prefixed + paddedAddr := gethcommon.LeftPadBytes(chainPingPongAddr, len(log.Message.Receiver)) + require.Equal(t, paddedAddr, log.Message.Receiver) + } + } +} + +// InitializeContracts initializes ping pong contracts on all chains and +// connects them all to each other. +func initializePingPongContracts( + t *testing.T, + chainUniverses map[uint64]onchainUniverse, +) map[uint64]map[uint64]*pp.PingPongDemo { + pingPongs := make(map[uint64]map[uint64]*pp.PingPongDemo) + chainIDs := maps.Keys(chainUniverses) + // For each chain initialize N ping pong contracts, where N is the (number of chains - 1) + for chainID, universe := range chainUniverses { + pingPongs[chainID] = make(map[uint64]*pp.PingPongDemo) + for _, chainToConnect := range chainIDs { + if chainToConnect == chainID { + continue // don't connect chain to itself + } + backend := universe.backend + owner := universe.owner + pingPongAddr, _, _, err := pp.DeployPingPongDemo(owner, backend, universe.router.Address(), universe.linkToken.Address()) + require.NoError(t, err) + backend.Commit() + pingPong, err := pp.NewPingPongDemo(pingPongAddr, backend) + require.NoError(t, err) + backend.Commit() + // Fund the ping pong contract with LINK + _, err = universe.linkToken.Transfer(owner, pingPong.Address(), e18Mult(10)) + backend.Commit() + require.NoError(t, err) + pingPongs[chainID][chainToConnect] = pingPong + } + } + + // Set up each ping pong contract to its counterpart on the other chain + for chainID, universe := range chainUniverses { + for chainToConnect, pingPong := range pingPongs[chainID] { + _, err := pingPong.SetCounterpart( + universe.owner, + chainUniverses[chainToConnect].chainID, + // This is the address of the ping pong contract on the other chain + pingPongs[chainToConnect][chainID].Address(), + ) + require.NoError(t, err) + universe.backend.Commit() + } + } + return pingPongs +}