From 6505cb206dfd077bf5369f9892ab5937badba6ca Mon Sep 17 00:00:00 2001 From: Mateusz Sekara Date: Tue, 14 Jan 2025 11:51:37 +0100 Subject: [PATCH] CCIP-4420 Merging integration tests and scripts (#15902) * Merging integration tests and scripts * Fixing build, adding missing e2e tests * Fixing linter * Bump * Bump * Update integration-tests/ccip-tests/testconfig/README.md Co-authored-by: Balamurali Gopalswami <167726375+b-gopalswami@users.noreply.github.com> --------- Co-authored-by: Balamurali Gopalswami <167726375+b-gopalswami@users.noreply.github.com> --- .github/e2e-tests.yml | 28 + core/scripts/ccip/.example.env | 9 + core/scripts/ccip/ccip-revert-reason/main.go | 71 + .../ccip/ccip-revert-reason/main_test.go | 20 + core/scripts/ccip/debugreceiver/main.go | 120 ++ .../manual-execution/batch_runner/README.md | 22 + .../manual-execution/batch_runner/batchrun.py | 55 + .../scripts/ccip/manual-execution/config.json | 12 + core/scripts/ccip/manual-execution/go.mod | 33 + core/scripts/ccip/manual-execution/go.sum | 107 ++ .../helpers/contractmodels.go | 85 ++ .../helpers/contractwrappers.go | 189 +++ .../manual-execution/helpers/execReport.go | 325 +++++ .../ccip/manual-execution/helpers/utils.go | 47 + core/scripts/ccip/manual-execution/main.go | 451 ++++++ core/scripts/ccip/revert-reason/Makefile | 3 + core/scripts/ccip/revert-reason/README.md | 41 + .../revert-reason/command/revert_reason.go | 42 + .../ccip/revert-reason/command/root.go | 35 + .../ccip/revert-reason/config/config.go | 42 + .../ccip/revert-reason/handler/handler.go | 17 + .../ccip/revert-reason/handler/reason.go | 208 +++ .../ccip/revert-reason/handler/reason_test.go | 68 + core/scripts/ccip/revert-reason/main.go | 9 + core/scripts/ccip/secrets/secrets.go | 16 + core/scripts/ccip/shared/helpers.go | 52 + core/scripts/go.mod | 2 +- .../ccip-load-test-view/component.go | 1 + .../environment/nodeclient/chainlink.go | 5 + integration-tests/.gitignore | 4 + integration-tests/actions/actions.go | 64 + integration-tests/ccip-tests/Makefile | 13 +- integration-tests/ccip-tests/README.md | 11 + .../ccip-tests/actions/ccip_helpers.go | 190 ++- .../ccip-tests/contracts/contract_deployer.go | 118 +- .../ccip-tests/contracts/contract_models.go | 3 + .../ccip-tests/load/ccip_loadgen.go | 21 +- .../ccip-tests/load/ccip_multicall_loadgen.go | 2 +- integration-tests/ccip-tests/load/helper.go | 11 +- .../ccip-tests/smoke/ccip_test.go | 143 +- .../ccip-tests/testconfig/README.md | 29 +- .../ccip-tests/testconfig/ccip.go | 99 +- .../testconfig/override/mainnet.toml | 991 +++++++------- ...net_1.5_B4_native_dataonly_testrouter.toml | 1214 +++++++++++++++++ .../testnet-beta-workinglane.toml | 173 +-- .../testnet-beta-workinglane_native.toml | 191 +-- .../testconfig/tomls/ccip-default.toml | 9 +- .../tomls/ccip1.4-stress/baseline.toml | 35 +- ...btc_mock_deployment_with_32bytes_data.toml | 11 + ..._mock_deployment_with_non32bytes_data.toml | 11 + .../tomls/prod-testnet/load-prod-testnet.toml | 909 ++---------- .../smoke-release-testing_native.toml | 566 ++++---- ...release-testing_token_transfer_native.toml | 490 ++++--- ...g_token_transfer_with_native_feetoken.toml | 540 ++++---- .../ccip-tests/testsetups/ccip.go | 13 +- .../ccip-tests/testsetups/test_env.go | 2 + .../docker/test_env/cl_node_cluster.go | 4 +- integration-tests/docker/test_env/test_env.go | 3 +- integration-tests/testconfig/default.toml | 1 + integration-tests/testconfig/testconfig.go | 11 + .../types/config/node/defaults/ccip.toml | 23 + integration-tests/types/testconfigs.go | 1 - 62 files changed, 5536 insertions(+), 2485 deletions(-) create mode 100644 core/scripts/ccip/.example.env create mode 100644 core/scripts/ccip/ccip-revert-reason/main.go create mode 100644 core/scripts/ccip/ccip-revert-reason/main_test.go create mode 100644 core/scripts/ccip/debugreceiver/main.go create mode 100644 core/scripts/ccip/manual-execution/batch_runner/README.md create mode 100755 core/scripts/ccip/manual-execution/batch_runner/batchrun.py create mode 100644 core/scripts/ccip/manual-execution/config.json create mode 100644 core/scripts/ccip/manual-execution/go.mod create mode 100644 core/scripts/ccip/manual-execution/go.sum create mode 100644 core/scripts/ccip/manual-execution/helpers/contractmodels.go create mode 100644 core/scripts/ccip/manual-execution/helpers/contractwrappers.go create mode 100644 core/scripts/ccip/manual-execution/helpers/execReport.go create mode 100644 core/scripts/ccip/manual-execution/helpers/utils.go create mode 100644 core/scripts/ccip/manual-execution/main.go create mode 100644 core/scripts/ccip/revert-reason/Makefile create mode 100644 core/scripts/ccip/revert-reason/README.md create mode 100644 core/scripts/ccip/revert-reason/command/revert_reason.go create mode 100644 core/scripts/ccip/revert-reason/command/root.go create mode 100644 core/scripts/ccip/revert-reason/config/config.go create mode 100644 core/scripts/ccip/revert-reason/handler/handler.go create mode 100644 core/scripts/ccip/revert-reason/handler/reason.go create mode 100644 core/scripts/ccip/revert-reason/handler/reason_test.go create mode 100644 core/scripts/ccip/revert-reason/main.go create mode 100644 core/scripts/ccip/secrets/secrets.go create mode 100644 core/scripts/ccip/shared/helpers.go create mode 100644 integration-tests/.gitignore create mode 100644 integration-tests/ccip-tests/testconfig/override/mainnet_1.5_B4_native_dataonly_testrouter.toml create mode 100644 integration-tests/ccip-tests/testconfig/tomls/lbtc_mock_deployment_with_32bytes_data.toml create mode 100644 integration-tests/ccip-tests/testconfig/tomls/lbtc_mock_deployment_with_non32bytes_data.toml create mode 100644 integration-tests/types/config/node/defaults/ccip.toml diff --git a/.github/e2e-tests.yml b/.github/e2e-tests.yml index 142c7733533..e5c8b8505f3 100644 --- a/.github/e2e-tests.yml +++ b/.github/e2e-tests.yml @@ -1124,6 +1124,34 @@ runner-test-matrix: CHAINLINK_USER_TEAM: CCIP test_config_override_path: integration-tests/ccip-tests/testconfig/tomls/usdc_mock_deployment.toml + - id: ccip-smoke-lbtc-32bytes-destination-pool-data + path: integration-tests/ccip-tests/smoke/ccip_test.go + test_env_type: docker + runs_on: ubuntu-latest + triggers: + - PR E2E CCIP Tests + - Merge Queue E2E CCIP Tests + - Nightly E2E Tests + test_cmd: cd integration-tests/ccip-tests/smoke && go test ccip_test.go -test.run ^TestSmokeCCIPForBidirectionalLane$ -timeout 30m -count=1 -test.parallel=1 -json + test_env_vars: + E2E_TEST_SELECTED_NETWORK: SIMULATED_1,SIMULATED_2 + CHAINLINK_USER_TEAM: CCIP + test_config_override_path: integration-tests/ccip-tests/testconfig/tomls/lbtc_mock_deployment_with_32bytes_data.toml + + - id: ccip-smoke-lbtc-non32bytes-destination-pool-data + path: integration-tests/ccip-tests/smoke/ccip_test.go + test_env_type: docker + runs_on: ubuntu-latest + triggers: + - PR E2E CCIP Tests + - Merge Queue E2E CCIP Tests + - Nightly E2E Tests + test_cmd: cd integration-tests/ccip-tests/smoke && go test ccip_test.go -test.run ^TestSmokeCCIPForBidirectionalLane$ -timeout 30m -count=1 -test.parallel=1 -json + test_env_vars: + E2E_TEST_SELECTED_NETWORK: SIMULATED_1,SIMULATED_2 + CHAINLINK_USER_TEAM: CCIP + test_config_override_path: integration-tests/ccip-tests/testconfig/tomls/lbtc_mock_deployment_with_non32bytes_data.toml + - id: ccip-smoke-db-compatibility path: integration-tests/ccip-tests/smoke/ccip_test.go test_env_type: docker diff --git a/core/scripts/ccip/.example.env b/core/scripts/ccip/.example.env new file mode 100644 index 00000000000..72918dcc3e6 --- /dev/null +++ b/core/scripts/ccip/.example.env @@ -0,0 +1,9 @@ +## DO NOT EDIT THIS FILE. PLEASE COPY TO .env AND EDIT THAT FILE INSTEAD +OWNER_KEY=DEF + +RPC_5=wss://rpc.com +RPC_43113=wss://rpc.com +RPC_420=wss://rpc.com +RPC_11155111=wss://rpc.com +RPC_421613=wss://rpc.com +RPC_80001=wss://rpc.com \ No newline at end of file diff --git a/core/scripts/ccip/ccip-revert-reason/main.go b/core/scripts/ccip/ccip-revert-reason/main.go new file mode 100644 index 00000000000..e357086306e --- /dev/null +++ b/core/scripts/ccip/ccip-revert-reason/main.go @@ -0,0 +1,71 @@ +package main + +import ( + "flag" + "fmt" + + "github.com/ethereum/go-ethereum/ethclient" + + "github.com/smartcontractkit/chainlink/core/scripts/ccip/revert-reason/handler" + "github.com/smartcontractkit/chainlink/core/scripts/ccip/secrets" +) + +var ( + errorCodeString = flag.String("errorCode", "", "Error code string (e.g. 0x08c379a0)") + + chainID = flag.Uint64("chainId", 0, "Chain ID for the transaction (e.g. 420)") + txHash = flag.String("txHash", "", "Transaction hash (e.g. 0x97be8559164442595aba46b5f849c23257905b78e72ee43d9b998b28eee78b84)") + txRequester = flag.String("txRequester", "", "Transaction requester address (e.g. 0xe88ff73814fb891bb0e149f5578796fa41f20242)") + rpcURL = flag.String("rpcURL", "", "RPC URL for the chain (can also be set in env var RPC_)") +) + +func main() { + flag.Usage = func() { + fmt.Println("Usage: go run . [flags]") + fmt.Println("You must provide either an error code string or the transaction details and an RPC URL to decode the error") + flag.PrintDefaults() + } + + flag.Parse() + + if *errorCodeString == "" && (*chainID == 0 || *txHash == "" || *txRequester == "") { + flag.Usage() + return + } + + errorString, err := getErrorString() + if err != nil { + fmt.Printf("Error getting error string: %v\n", err) + return + } + decodedError, err := handler.DecodeErrorStringFromABI(errorString) + if err != nil { + fmt.Printf("Error decoding error string: %v\n", err) + return + } + + fmt.Println(decodedError) +} + +func getErrorString() (string, error) { + if *errorCodeString != "" { + return *errorCodeString, nil + } + + if *rpcURL == "" { + fmt.Printf("RPC URL not provided, looking for RPC_%d env var\n", *chainID) + envRPC := secrets.GetRPC(*chainID) + rpcURL = &envRPC + } + + ec, err := ethclient.Dial(*rpcURL) + if err != nil { + return "", err + } + errString, err := handler.GetErrorForTx(ec, *txHash, *txRequester) + if err != nil { + return "", err + } + + return errString, nil +} diff --git a/core/scripts/ccip/ccip-revert-reason/main_test.go b/core/scripts/ccip/ccip-revert-reason/main_test.go new file mode 100644 index 00000000000..a73a1f7a3ba --- /dev/null +++ b/core/scripts/ccip/ccip-revert-reason/main_test.go @@ -0,0 +1,20 @@ +package main + +import ( + "fmt" + "testing" + + "github.com/smartcontractkit/chainlink/core/scripts/ccip/revert-reason/handler" +) + +func TestRevertReason(t *testing.T) { + errorCodeString := "e1cd55090000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000008408c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002645524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + + decodedError, err := handler.DecodeErrorStringFromABI(errorCodeString) + if err != nil { + fmt.Printf("Error decoding error string: %v\n", err) + return + } + + fmt.Println(decodedError) +} diff --git a/core/scripts/ccip/debugreceiver/main.go b/core/scripts/ccip/debugreceiver/main.go new file mode 100644 index 00000000000..db742ed126a --- /dev/null +++ b/core/scripts/ccip/debugreceiver/main.go @@ -0,0 +1,120 @@ +package main + +import ( + "bytes" + "context" + "fmt" + "math/big" + "strings" + + "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/ethclient" +) + +type ccipAny struct { + SourceChainID *big.Int + Sender []byte + Data []byte + Tokens []common.Address + Amounts []*big.Int +} + +func panicErr(err error) { + if err != nil { + panic(err) + } +} + +// ABIEncode is the equivalent of abi.encode. +// See a full set of examples https://github.com/ethereum/go-ethereum/blob/420b78659bef661a83c5c442121b13f13288c09f/accounts/abi/packing_test.go#L31 +func ABIEncode(abiStr string, values ...interface{}) ([]byte, error) { + // Create a dummy method with arguments + inDef := fmt.Sprintf(`[{ "name" : "method", "type": "function", "inputs": %s}]`, abiStr) + inAbi, err := abi.JSON(strings.NewReader(inDef)) + if err != nil { + return nil, err + } + res, err := inAbi.Pack("method", values...) + if err != nil { + return nil, err + } + return res[4:], nil +} + +// ABIDecode is the equivalent of abi.decode. +// See a full set of examples https://github.com/ethereum/go-ethereum/blob/420b78659bef661a83c5c442121b13f13288c09f/accounts/abi/packing_test.go#L31 +func ABIDecode(abiStr string, data []byte) ([]interface{}, error) { + inDef := fmt.Sprintf(`[{ "name" : "method", "type": "function", "outputs": %s}]`, abiStr) + inAbi, err := abi.JSON(strings.NewReader(inDef)) + if err != nil { + return nil, err + } + return inAbi.Unpack("method", data) +} + +func main() { + // User inputs + source, err := ethclient.Dial("TODO goerli URL") + panicErr(err) + dest, err := ethclient.Dial("TODO optimism URL") + panicErr(err) + var ( + requestBlock = int64(7916078) + receiveBlock = int64(2518035) + ccipReceiver = common.HexToAddress("0x9fE056F44510F970d724adA16903ba5D75CC4742") + ) + + log, err := source.FilterLogs(context.Background(), ethereum.FilterQuery{ + FromBlock: big.NewInt(requestBlock), + ToBlock: big.NewInt(requestBlock), + Topics: [][]common.Hash{{common.HexToHash("0x73dfb9df8214728e699dbaaf6ba97aa125afaaba83a5d0de7903062e7c5b3139")}}, // CCIPSendRequested + }) + panicErr(err) + encodedMsg, err := ABIDecode(`[{"components":[ +{"internalType":"uint256","name":"sourceChainId","type":"uint256"}, +{"internalType":"uint64","name":"sequenceNumber","type":"uint64"}, +{"internalType":"address","name":"sender","type":"address"}, +{"internalType":"address","name":"receiver","type":"address"}, +{"internalType":"uint64","name":"nonce","type":"uint64"}, +{"internalType":"bytes","name":"data","type":"bytes"}, +{"internalType":"address[]","name":"tokens","type":"address[]"}, +{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}, +{"internalType":"uint256","name":"gasLimit","type":"uint256"}], +"internalType":"structCCIP.EVM2EVMSubscriptionMessage","name":"message","type":"tuple"}]`, + log[0].Data) + panicErr(err) + send := encodedMsg[0].(struct { + SourceChainID *big.Int `json:"sourceChainId"` + SequenceNumber uint64 `json:"sequenceNumber"` + Sender common.Address `json:"sender"` + Receiver common.Address `json:"receiver"` + Nonce uint64 `json:"nonce"` + Data []uint8 `json:"data"` + Tokens []common.Address `json:"tokens"` + Amounts []*big.Int `json:"amounts"` + GasLimit *big.Int `json:"gasLimit"` + }) + sender, err := ABIEncode(`[{"type":"bytes", "name":"sender"}]`, send.Sender.Bytes()) + panicErr(err) + any2evm, err := ABIEncode(`[{"components":[ +{"internalType":"uint256","name":"sourceChainId","type":"uint256"}, +{"internalType":"bytes","name":"sender","type":"bytes"}, +{"internalType":"bytes","name":"data","type":"bytes"}, +{"internalType":"address[]","name":"tokens","type":"address[]"}, +{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}], +"internalType":"structCCIP.Any2EVMMessage","name":"message","type":"tuple"}]`, + ccipAny{send.SourceChainID, sender, send.Data, send.Tokens, send.Amounts}) + panicErr(err) + a, err := dest.CallContract(context.Background(), ethereum.CallMsg{ + From: common.HexToAddress("0x2b7ab40413da5077e168546ea376920591aee8e7"), // offramp router + To: &ccipReceiver, + Gas: send.GasLimit.Uint64(), + GasPrice: big.NewInt(0), + Data: bytes.Join([][]byte{hexutil.MustDecode("0xa0c6df15"), any2evm}, []byte{}), // ccipReceive selector + AccessList: nil, + }, big.NewInt(receiveBlock)) + fmt.Println(a, err) +} diff --git a/core/scripts/ccip/manual-execution/batch_runner/README.md b/core/scripts/ccip/manual-execution/batch_runner/README.md new file mode 100644 index 00000000000..9a46519b34a --- /dev/null +++ b/core/scripts/ccip/manual-execution/batch_runner/README.md @@ -0,0 +1,22 @@ +# batchrun.py + +This script will run the manual-execution script repeatedly using a CSV file to +supply message IDs and txn hashes. + +## Usage + +Build main.go and copy 'manual-execution' into the same directory as this script. + +Export messages to a file named 'msgs.csv' in the same directory as this script. +CSV file will ignore the first line (header) and each line should have two values separated by a comma. + +The first value is the message ID and the second value is the CCIP send transaction hash. + +Example csv file: +``` +"message_id","transaction_hash" +0x1e221l7db3f193d19353d42e1bcece771e7edar57149a7f30afd31r8aa783e9a,0x03c88qfd30ar54f36a353262a67362838r52029a47h2a31141a0430bda937ba2 +0x1e221l7db3f193d19353d42e1bcece771e7edar57149a7f30afd31r8aa783e9a,0x03c88qfd30ar54f36a353262a67362838r52029a47h2a31141a0430bda937ba2 +0x1e221l7db3f193d19353d42e1bcece771e7edar57149a7f30afd31r8aa783e9a,0x03c88qfd30ar54f36a353262a67362838r52029a47h2a31141a0430bda937ba2 +0x1e221l7db3f193d19353d42e1bcece771e7edar57149a7f30afd31r8aa783e9a,0x03c88qfd30ar54f36a353262a67362838r52029a47h2a31141a0430bda937ba2 +``` diff --git a/core/scripts/ccip/manual-execution/batch_runner/batchrun.py b/core/scripts/ccip/manual-execution/batch_runner/batchrun.py new file mode 100755 index 00000000000..a731914772a --- /dev/null +++ b/core/scripts/ccip/manual-execution/batch_runner/batchrun.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python3 + +import subprocess +import os +import tempfile +import json + +binary_name = "./manual-execution" +input_msgs = "msgs.csv" + +# global config +src_rpc = "" +dest_rpc = "" +dest_owner_key = "" +commit_store = "" +off_ramp = "" +on_ramp = "" +dest_start_block = 11063581 # set to block where the messages commit report was written. +gas_limit_override = 2000000 # you can change this or leave it as is. + +lines = open(input_msgs, "r").read().split("\n")[1:] + +for i, pairs in enumerate(lines): + # per msg config + parts = pairs.split(",") + if len(parts) != 2: + if pairs != "": + print("skipping CSV line with unexpected format: %s" % pairs) + continue + + msg_id = parts[0] + ccip_send_tx = parts[1] + + print("[%d/%d] >>> %s %s" % (i, len(lines), ccip_send_tx, msg_id)) + + config = { + "source_chain_tx": ccip_send_tx, + "ccip_msg_id": msg_id, + "src_rpc": src_rpc, + "dest_rpc": dest_rpc, + "dest_owner_key": dest_owner_key, + "commit_store": commit_store, + "off_ramp": off_ramp, + "dest_start_block": dest_start_block, + "gas_limit_override": gas_limit_override + } + json_config = json.dumps(config) + + with open("config.json", 'w') as f: + f.write(json_config) + + try: + subprocess.run([binary_name]) + except subprocess.CalledProcessError as e: + print("called process error: ", e) diff --git a/core/scripts/ccip/manual-execution/config.json b/core/scripts/ccip/manual-execution/config.json new file mode 100644 index 00000000000..8c8832c8487 --- /dev/null +++ b/core/scripts/ccip/manual-execution/config.json @@ -0,0 +1,12 @@ +{ + "src_rpc": "", + "dest_rpc": "", + "dest_owner_key": "", + "commit_store": "0xd2Aa03c8C6E6a8E227223E72f314d4398ABe6eD0", + "off_ramp": "0x60475789dF0d8739cda56aF1D914749A5b48B3f7", + "on_ramp": "0xBb0e1066888F9Ef72824f63fd2067ff469378f6F", + "dest_start_block": 0, + "source_chain_tx": "0x517f6d4742568d531bc9b980bc7f82460a5012fce5dd7c57ec703444f88f5d92", + "ccip_msg_id": "0xba2312c236dd9f83ccd22ff6636fca5af739abb0cdc9824b8f59ec9824a5daf1", + "dest_deployed_at": 3043616 +} \ No newline at end of file diff --git a/core/scripts/ccip/manual-execution/go.mod b/core/scripts/ccip/manual-execution/go.mod new file mode 100644 index 00000000000..91e028c9314 --- /dev/null +++ b/core/scripts/ccip/manual-execution/go.mod @@ -0,0 +1,33 @@ +module manual-execution + +go 1.20 + +require ( + github.com/ethereum/go-ethereum v1.11.3 + github.com/pkg/errors v0.9.1 + github.com/smartcontractkit/chain-selectors v1.0.35 + go.uber.org/multierr v1.1.0 + golang.org/x/crypto v0.1.0 +) + +require ( + github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.2.0 // indirect + github.com/deckarep/golang-set/v2 v2.1.0 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect + github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/go-ole/go-ole v1.2.1 // indirect + github.com/go-stack/stack v1.8.1 // indirect + github.com/google/uuid v1.3.0 // indirect + github.com/gorilla/websocket v1.4.2 // indirect + github.com/mr-tron/base58 v1.2.0 // indirect + github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect + github.com/tklauser/go-sysconf v0.3.5 // indirect + github.com/tklauser/numcpus v0.2.2 // indirect + go.uber.org/atomic v1.3.2 // indirect + golang.org/x/sys v0.5.0 // indirect + gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) + +exclude github.com/sourcegraph/sourcegraph/lib v0.0.0-20221216004406-749998a2ac74 diff --git a/core/scripts/ccip/manual-execution/go.sum b/core/scripts/ccip/manual-execution/go.sum new file mode 100644 index 00000000000..3d4ea701977 --- /dev/null +++ b/core/scripts/ccip/manual-execution/go.sum @@ -0,0 +1,107 @@ +github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= +github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 h1:fLjPD/aNc3UIOA6tDi6QXUemppXK3P9BI7mr2hd6gx8= +github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= +github.com/VictoriaMetrics/fastcache v1.6.0 h1:C/3Oi3EiBCqufydp1neRZkqcwmEiuRT9c3fqvvgKm5o= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/btcsuite/btcd/btcec/v2 v2.2.0 h1:fzn1qaOt32TuLjFlkzYSsBC35Q3KUjT1SwPxiMSCF5k= +github.com/btcsuite/btcd/btcec/v2 v2.2.0/go.mod h1:U7MHm051Al6XmscBQ0BoNydpOTsFAn707034b5nY8zU= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= +github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cockroachdb/errors v1.9.1 h1:yFVvsI0VxmRShfawbt/laCIDy/mtTqqnvoNgiy5bEV8= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= +github.com/cockroachdb/pebble v0.0.0-20230209160836-829675f94811 h1:ytcWPaNPhNoGMWEhDvS3zToKcDpRsLuRolQJBVGdozk= +github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5wfSQ= +github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/deckarep/golang-set/v2 v2.1.0 h1:g47V4Or+DUdzbs8FxCCmgb6VYd+ptPAngjM6dtGktsI= +github.com/deckarep/golang-set/v2 v2.1.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= +github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= +github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= +github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= +github.com/ethereum/go-ethereum v1.11.3 h1:uuBkYUJW9aY5JYi3+sqLHz+XWyo5fmn/ab9XcbtVDTU= +github.com/ethereum/go-ethereum v1.11.3/go.mod h1:rBUvAl5cdVrAei9q5lgOU7RSEuPJk1nlBDnS/YSoKQE= +github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 h1:FtmdgXiUlNeRsoNMFlKLDt+S+6hbjVMEW6RGQ7aUf7c= +github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= +github.com/getsentry/sentry-go v0.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0= +github.com/go-ole/go-ole v1.2.1 h1:2lOsA72HgjxAuMlKpFiCbHTvu44PIVkZ5hqm3RSdI/E= +github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= +github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= +github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= +github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/golang-jwt/jwt/v4 v4.3.0 h1:kHL1vqdqWNfATmA0FNMdmZNMyZI1U6O31X4rlIPoBog= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE= +github.com/holiman/big v0.0.0-20221017200358-a027dc42d04e h1:pIYdhNkDh+YENVNi3gto8n9hAmRxKxoar0iE6BLucjw= +github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= +github.com/holiman/uint256 v1.2.0 h1:gpSYcPLWGv4sG43I2mVLiDZCNDh/EpGjSk8tmtxitHM= +github.com/huin/goupnp v1.0.3 h1:N8No57ls+MnjlB+JPiCVSOyy/ot7MJTqlo7rn+NYSqQ= +github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= +github.com/klauspost/compress v1.15.15 h1:EF27CXIuDsYJ6mmvtBRlEuB2UVOqHG1tAXgZ7yIO+lw= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= +github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= +github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= +github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= +github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= +github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= +github.com/prometheus/common v0.39.0 h1:oOyhkDq05hPZKItWVBkJ6g6AtGxi+fy7F4JvUV8uhsI= +github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= +github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/smartcontractkit/chain-selectors v1.0.35 h1:k7iJqChFbH10WFpahjDtDJoYyDz4qRNq6ReIB41M8Tg= +github.com/smartcontractkit/chain-selectors v1.0.35/go.mod h1:xsKM0aN3YGcQKTPRPDDtPx2l4mlTN1Djmg0VVXV40b8= +github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= +github.com/tklauser/go-sysconf v0.3.5 h1:uu3Xl4nkLzQfXNsWn15rPc/HQCJKObbt1dKJeWp3vU4= +github.com/tklauser/go-sysconf v0.3.5/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI= +github.com/tklauser/numcpus v0.2.2 h1:oyhllyrScuYI6g+h/zUvNXNp1wy7x8qQy3t/piefldA= +github.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM= +github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= +github.com/urfave/cli/v2 v2.17.2-0.20221006022127-8f469abc00aa h1:5SqCsI/2Qya2bCzK15ozrqo2sZxkh0FHynJZOTVoV6Q= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= +go.uber.org/atomic v1.3.2 h1:2Oa65PReHzfn29GpvgsYwloV9AVFHPDk8tYxt2c2tr4= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/multierr v1.1.0 h1:HoEmRHQPVSqub6w2z2d2EOVs2fjyFRGyofhKuyDq0QI= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/exp v0.0.0-20230206171751-46f607a40771 h1:xP7rWLUr1e1n2xkK5YB4LI0hPEy3LJC6Wk+D4pGlOJg= +golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= +golang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= +golang.org/x/time v0.0.0-20220922220347-f3bd1da661af h1:Yx9k8YCG3dvF87UAn2tu2HQLf2dt/eR1bXxpLMWeH+Y= +google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU= +gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/core/scripts/ccip/manual-execution/helpers/contractmodels.go b/core/scripts/ccip/manual-execution/helpers/contractmodels.go new file mode 100644 index 00000000000..000b32dd39a --- /dev/null +++ b/core/scripts/ccip/manual-execution/helpers/contractmodels.go @@ -0,0 +1,85 @@ +package helpers + +import ( + "math/big" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" +) + +type CommitStoreReportAccepted struct { + Report ICommitStoreCommitReport + Raw types.Log +} + +type ICommitStoreCommitReport struct { + PriceUpdates InternalPriceUpdates + Interval ICommitStoreInterval + MerkleRoot [32]byte +} + +type InternalGasPriceUpdate struct { + DestChainSelector uint64 + UsdPerUnitGas *big.Int +} + +type InternalPriceUpdates struct { + TokenPriceUpdates []InternalTokenPriceUpdate + GasPriceUpdates []InternalGasPriceUpdate +} + +type InternalTokenPriceUpdate struct { + SourceToken common.Address + UsdPerToken *big.Int +} + +type ICommitStoreInterval struct { + Min uint64 + Max uint64 +} + +type InternalEVM2EVMMessage struct { + SourceChainSelector uint64 + Sender common.Address + Receiver common.Address + SequenceNumber uint64 + GasLimit *big.Int + Strict bool + Nonce uint64 + FeeToken common.Address + FeeTokenAmount *big.Int + Data []byte + TokenAmounts []ClientEVMTokenAmount + SourceTokenData [][]byte + MessageId [32]byte +} + +type ClientEVMTokenAmount struct { + Token common.Address + Amount *big.Int +} + +type SendRequestedEvent struct { + Message InternalEVM2EVMMessage + Raw types.Log +} + +type InternalExecutionReport struct { + Messages []InternalEVM2EVMMessage + OffchainTokenData [][][]byte + Proofs [][32]byte + ProofFlagBits *big.Int +} + +type EVM2EVMOffRampExecutionStateChanged struct { + SequenceNumber uint64 + MessageId [32]byte + State uint8 + ReturnData []byte + Raw types.Log +} + +type EVM2EVMOffRampGasLimitOverride struct { + ReceiverExecutionGasLimit *big.Int + TokenGasOverrides []*big.Int +} diff --git a/core/scripts/ccip/manual-execution/helpers/contractwrappers.go b/core/scripts/ccip/manual-execution/helpers/contractwrappers.go new file mode 100644 index 00000000000..027577b9126 --- /dev/null +++ b/core/scripts/ccip/manual-execution/helpers/contractwrappers.go @@ -0,0 +1,189 @@ +package helpers + +import ( + "fmt" + "strings" + + "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/ethclient" + "github.com/ethereum/go-ethereum/event" +) + +const ( + OffRampABI = "[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"commitStore\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"onRamp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"prevOffRamp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"armProxy\",\"type\":\"address\"}],\"internalType\":\"structEVM2EVMOffRamp.StaticConfig\",\"name\":\"staticConfig\",\"type\":\"tuple\"},{\"internalType\":\"contractIERC20[]\",\"name\":\"sourceTokens\",\"type\":\"address[]\"},{\"internalType\":\"contractIPool[]\",\"name\":\"pools\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"internalType\":\"structRateLimiter.Config\",\"name\":\"rateLimiterConfig\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"capacity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"AggregateValueMaxCapacityExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minWaitInSeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"available\",\"type\":\"uint256\"}],\"name\":\"AggregateValueRateLimitReached\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sequenceNumber\",\"type\":\"uint64\"}],\"name\":\"AlreadyAttempted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sequenceNumber\",\"type\":\"uint64\"}],\"name\":\"AlreadyExecuted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadARMSignal\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BucketOverfilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CanOnlySelfCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CommitStoreAlreadyInUse\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"expected\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"actual\",\"type\":\"bytes32\"}],\"name\":\"ConfigDigestMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyReport\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"error\",\"type\":\"bytes\"}],\"name\":\"ExecutionError\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"}],\"name\":\"ForkedChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"InvalidConfig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newLimit\",\"type\":\"uint256\"}],\"name\":\"InvalidManualExecutionGasLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMessageId\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sequenceNumber\",\"type\":\"uint64\"},{\"internalType\":\"enumInternal.MessageExecutionState\",\"name\":\"newState\",\"type\":\"uint8\"}],\"name\":\"InvalidNewState\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"}],\"name\":\"InvalidSourceChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenPoolConfig\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ManualExecutionGasLimitMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ManualExecutionNotYetEnabled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualSize\",\"type\":\"uint256\"}],\"name\":\"MessageTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByAdminOrOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OracleCannotBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolAlreadyAdded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PriceNotFoundForToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"error\",\"type\":\"bytes\"}],\"name\":\"ReceiverError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RootNotCommitted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sequenceNumber\",\"type\":\"uint64\"}],\"name\":\"TokenDataMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"error\",\"type\":\"bytes\"}],\"name\":\"TokenHandlingError\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"capacity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"TokenMaxCapacityExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenPoolMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minWaitInSeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"available\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"TokenRateLimitReached\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnauthorizedTransmitter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedTokenData\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sequenceNumber\",\"type\":\"uint64\"}],\"name\":\"UnsupportedNumberOfTokens\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"UnsupportedToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"}],\"name\":\"WrongMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"commitStore\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"onRamp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"prevOffRamp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"armProxy\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"structEVM2EVMOffRamp.StaticConfig\",\"name\":\"staticConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"permissionLessExecutionThresholdSeconds\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"priceRegistry\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"maxNumberOfTokensPerMsg\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"maxDataBytes\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxPoolReleaseOrMintGas\",\"type\":\"uint32\"}],\"indexed\":false,\"internalType\":\"structEVM2EVMOffRamp.DynamicConfig\",\"name\":\"dynamicConfig\",\"type\":\"tuple\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"previousConfigBlockNumber\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"configCount\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"onchainConfig\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"offchainConfigVersion\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"sequenceNumber\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enumInternal.MessageExecutionState\",\"name\":\"state\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"ExecutionStateChanged\",\"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\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SkippedIncorrectNonce\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SkippedSenderWithPreviousRampMessageInflight\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"epoch\",\"type\":\"uint32\"}],\"name\":\"Transmitted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"internalType\":\"structInternal.PoolUpdate[]\",\"name\":\"removes\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"internalType\":\"structInternal.PoolUpdate[]\",\"name\":\"adds\",\"type\":\"tuple[]\"}],\"name\":\"applyPoolUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"ccipReceive\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentRateLimiterState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"tokens\",\"type\":\"uint128\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdated\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"internalType\":\"structRateLimiter.TokenBucket\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sequenceNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"strict\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"feeToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeTokenAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"tokenAmounts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"sourceTokenData\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"internalType\":\"structInternal.EVM2EVMMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes[]\",\"name\":\"offchainTokenData\",\"type\":\"bytes[]\"}],\"name\":\"executeSingleMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"sourceToken\",\"type\":\"address\"}],\"name\":\"getDestinationToken\",\"outputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDestinationTokens\",\"outputs\":[{\"internalType\":\"contractIERC20[]\",\"name\":\"destTokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDynamicConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"permissionLessExecutionThresholdSeconds\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"priceRegistry\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"maxNumberOfTokensPerMsg\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"maxDataBytes\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxPoolReleaseOrMintGas\",\"type\":\"uint32\"}],\"internalType\":\"structEVM2EVMOffRamp.DynamicConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sequenceNumber\",\"type\":\"uint64\"}],\"name\":\"getExecutionState\",\"outputs\":[{\"internalType\":\"enumInternal.MessageExecutionState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"destToken\",\"type\":\"address\"}],\"name\":\"getPoolByDestToken\",\"outputs\":[{\"internalType\":\"contractIPool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"sourceToken\",\"type\":\"address\"}],\"name\":\"getPoolBySourceToken\",\"outputs\":[{\"internalType\":\"contractIPool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"getSenderNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStaticConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"commitStore\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"onRamp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"prevOffRamp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"armProxy\",\"type\":\"address\"}],\"internalType\":\"structEVM2EVMOffRamp.StaticConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupportedTokens\",\"outputs\":[{\"internalType\":\"contractIERC20[]\",\"name\":\"sourceTokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenLimitAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTransmitters\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestConfigDetails\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestConfigDigestAndEpoch\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"scanLogs\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"epoch\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sequenceNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"strict\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"feeToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeTokenAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"tokenAmounts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"sourceTokenData\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"internalType\":\"structInternal.EVM2EVMMessage[]\",\"name\":\"messages\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[][]\",\"name\":\"offchainTokenData\",\"type\":\"bytes[][]\"},{\"internalType\":\"bytes32[]\",\"name\":\"proofs\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"proofFlagBits\",\"type\":\"uint256\"}],\"internalType\":\"structInternal.ExecutionReport\",\"name\":\"report\",\"type\":\"tuple\"},{\"internalType\":\"uint256[]\",\"name\":\"gasLimitOverrides\",\"type\":\"uint256[]\"}],\"name\":\"manuallyExecute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"setAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"onchainConfig\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"offchainConfigVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"setOCR2Config\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"internalType\":\"structRateLimiter.Config\",\"name\":\"config\",\"type\":\"tuple\"}],\"name\":\"setRateLimiterConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[3]\",\"name\":\"reportContext\",\"type\":\"bytes32[3]\"},{\"internalType\":\"bytes\",\"name\":\"report\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"rs\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"ss\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"transmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" + CommitStoreABI = "[{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"onRamp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"armProxy\",\"type\":\"address\"}],\"internalType\":\"structCommitStore.StaticConfig\",\"name\":\"staticConfig\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BadARMSignal\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"expected\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"actual\",\"type\":\"bytes32\"}],\"name\":\"ConfigDigestMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"}],\"name\":\"ForkedChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCommitStoreConfig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"InvalidConfig\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"min\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"}],\"internalType\":\"structCommitStore.Interval\",\"name\":\"interval\",\"type\":\"tuple\"}],\"name\":\"InvalidInterval\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidProof\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRoot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LeavesCannotBeEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonUniqueSignatures\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OracleCannotBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PausedError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RootAlreadyCommitted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignaturesOutOfRegistration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StaleReport\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnauthorizedSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnauthorizedTransmitter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"}],\"name\":\"WrongMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongNumberOfSignatures\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"onRamp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"armProxy\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"structCommitStore.StaticConfig\",\"name\":\"staticConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"priceRegistry\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"structCommitStore.DynamicConfig\",\"name\":\"dynamicConfig\",\"type\":\"tuple\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"previousConfigBlockNumber\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"configCount\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"onchainConfig\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"offchainConfigVersion\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"ConfigSet\",\"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\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sourceToken\",\"type\":\"address\"},{\"internalType\":\"uint224\",\"name\":\"usdPerToken\",\"type\":\"uint224\"}],\"internalType\":\"structInternal.TokenPriceUpdate[]\",\"name\":\"tokenPriceUpdates\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint224\",\"name\":\"usdPerUnitGas\",\"type\":\"uint224\"}],\"internalType\":\"structInternal.GasPriceUpdate[]\",\"name\":\"gasPriceUpdates\",\"type\":\"tuple[]\"}],\"internalType\":\"structInternal.PriceUpdates\",\"name\":\"priceUpdates\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"min\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"}],\"internalType\":\"structCommitStore.Interval\",\"name\":\"interval\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"merkleRoot\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"structCommitStore.CommitReport\",\"name\":\"report\",\"type\":\"tuple\"}],\"name\":\"ReportAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"RootRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"epoch\",\"type\":\"uint32\"}],\"name\":\"Transmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDynamicConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"priceRegistry\",\"type\":\"address\"}],\"internalType\":\"structCommitStore.DynamicConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getExpectedNextSequenceNumber\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLatestPriceEpochAndRound\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"getMerkleRoot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStaticConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"onRamp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"armProxy\",\"type\":\"address\"}],\"internalType\":\"structCommitStore.StaticConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTransmitters\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isARMHealthy\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"isBlessed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isUnpausedAndARMHealthy\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestConfigDetails\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestConfigDigestAndEpoch\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"scanLogs\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"epoch\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"rootToReset\",\"type\":\"bytes32[]\"}],\"name\":\"resetUnblessedRoots\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint40\",\"name\":\"latestPriceEpochAndRound\",\"type\":\"uint40\"}],\"name\":\"setLatestPriceEpochAndRound\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minSeqNr\",\"type\":\"uint64\"}],\"name\":\"setMinSeqNr\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"onchainConfig\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"offchainConfigVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"setOCR2Config\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[3]\",\"name\":\"reportContext\",\"type\":\"bytes32[3]\"},{\"internalType\":\"bytes\",\"name\":\"report\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"rs\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"ss\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"rawVs\",\"type\":\"bytes32\"}],\"name\":\"transmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"hashedLeaves\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"proofs\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"proofFlagBits\",\"type\":\"uint256\"}],\"name\":\"verify\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" + OnRampABI = "[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"linkToken\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"defaultTxGasLimit\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"maxNopFeesJuels\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"prevOnRamp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"armProxy\",\"type\":\"address\"}],\"internalType\":\"structEVM2EVMOnRamp.StaticConfig\",\"name\":\"staticConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"maxNumberOfTokensPerMsg\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerPayloadByte\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destDataAvailabilityOverheadGas\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerDataAvailabilityByte\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"destDataAvailabilityMultiplierBps\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"priceRegistry\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"maxDataBytes\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxPerMsgGasLimit\",\"type\":\"uint32\"}],\"internalType\":\"structEVM2EVMOnRamp.DynamicConfig\",\"name\":\"dynamicConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"internalType\":\"structInternal.PoolUpdate[]\",\"name\":\"tokensAndPools\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"internalType\":\"structRateLimiter.Config\",\"name\":\"rateLimiterConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"networkFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"gasMultiplierWeiPerEth\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"premiumMultiplierWeiPerEth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"internalType\":\"structEVM2EVMOnRamp.FeeTokenConfigArgs[]\",\"name\":\"feeTokenConfigs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"minFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"deciBps\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"destBytesOverhead\",\"type\":\"uint32\"}],\"internalType\":\"structEVM2EVMOnRamp.TokenTransferFeeConfigArgs[]\",\"name\":\"tokenTransferFeeConfigArgs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"nop\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"weight\",\"type\":\"uint16\"}],\"internalType\":\"structEVM2EVMOnRamp.NopAndWeight[]\",\"name\":\"nopsAndWeights\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"capacity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"AggregateValueMaxCapacityExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minWaitInSeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"available\",\"type\":\"uint256\"}],\"name\":\"AggregateValueRateLimitReached\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadARMSignal\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BucketOverfilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotSendZeroTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedAddress\",\"type\":\"bytes\"}],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidConfig\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExtraArgsTag\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nop\",\"type\":\"address\"}],\"name\":\"InvalidNopAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenPoolConfig\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWithdrawParams\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LinkBalanceNotSettled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxFeeBalanceReached\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MessageGasLimitTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualSize\",\"type\":\"uint256\"}],\"name\":\"MessageTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MustBeCalledByRouter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeesToPay\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoNopsToPay\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"NotAFeeToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByAdminOrOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByOwnerOrAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByOwnerOrAdminOrNop\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolAlreadyAdded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PoolDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PriceNotFoundForToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RouterMustSetOriginalSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SourceTokenDataTooLarge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"capacity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"TokenMaxCapacityExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenPoolMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minWaitInSeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"available\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"TokenRateLimitReached\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyNops\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedNumberOfTokens\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"UnsupportedToken\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sequenceNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"strict\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"feeToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeTokenAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"tokenAmounts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"sourceTokenData\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"structInternal.EVM2EVMMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"CCIPSendRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"linkToken\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"defaultTxGasLimit\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"maxNopFeesJuels\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"prevOnRamp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"armProxy\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"structEVM2EVMOnRamp.StaticConfig\",\"name\":\"staticConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"maxNumberOfTokensPerMsg\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerPayloadByte\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destDataAvailabilityOverheadGas\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerDataAvailabilityByte\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"destDataAvailabilityMultiplierBps\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"priceRegistry\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"maxDataBytes\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxPerMsgGasLimit\",\"type\":\"uint32\"}],\"indexed\":false,\"internalType\":\"structEVM2EVMOnRamp.DynamicConfig\",\"name\":\"dynamicConfig\",\"type\":\"tuple\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"networkFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"gasMultiplierWeiPerEth\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"premiumMultiplierWeiPerEth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"structEVM2EVMOnRamp.FeeTokenConfigArgs[]\",\"name\":\"feeConfig\",\"type\":\"tuple[]\"}],\"name\":\"FeeConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nop\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NopPaid\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nopWeightsTotal\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"nop\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"weight\",\"type\":\"uint16\"}],\"indexed\":false,\"internalType\":\"structEVM2EVMOnRamp.NopAndWeight[]\",\"name\":\"nopsAndWeights\",\"type\":\"tuple[]\"}],\"name\":\"NopsSet\",\"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\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"minFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"deciBps\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"destBytesOverhead\",\"type\":\"uint32\"}],\"indexed\":false,\"internalType\":\"structEVM2EVMOnRamp.TokenTransferFeeConfigArgs[]\",\"name\":\"transferFeeConfig\",\"type\":\"tuple[]\"}],\"name\":\"TokenTransferFeeConfigSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"internalType\":\"structInternal.PoolUpdate[]\",\"name\":\"removes\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"internalType\":\"structInternal.PoolUpdate[]\",\"name\":\"adds\",\"type\":\"tuple[]\"}],\"name\":\"applyPoolUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentRateLimiterState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"tokens\",\"type\":\"uint128\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdated\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"internalType\":\"structRateLimiter.TokenBucket\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"tokenAmounts\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"feeToken\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"}],\"internalType\":\"structClient.EVM2AnyMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"feeTokenAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originalSender\",\"type\":\"address\"}],\"name\":\"forwardFromRouter\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDynamicConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"maxNumberOfTokensPerMsg\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerPayloadByte\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destDataAvailabilityOverheadGas\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerDataAvailabilityByte\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"destDataAvailabilityMultiplierBps\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"priceRegistry\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"maxDataBytes\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxPerMsgGasLimit\",\"type\":\"uint32\"}],\"internalType\":\"structEVM2EVMOnRamp.DynamicConfig\",\"name\":\"dynamicConfig\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getExpectedNextSequenceNumber\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"tokenAmounts\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"feeToken\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"}],\"internalType\":\"structClient.EVM2AnyMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"getFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"feeTokenAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getFeeTokenConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"networkFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"gasMultiplierWeiPerEth\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"premiumMultiplierWeiPerEth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"internalType\":\"structEVM2EVMOnRamp.FeeTokenConfig\",\"name\":\"feeTokenConfig\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNopFeesJuels\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNops\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"nop\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"weight\",\"type\":\"uint16\"}],\"internalType\":\"structEVM2EVMOnRamp.NopAndWeight[]\",\"name\":\"nopsAndWeights\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"weightsTotal\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"sourceToken\",\"type\":\"address\"}],\"name\":\"getPoolBySourceToken\",\"outputs\":[{\"internalType\":\"contractIPool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"getSenderNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStaticConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"linkToken\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"defaultTxGasLimit\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"maxNopFeesJuels\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"prevOnRamp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"armProxy\",\"type\":\"address\"}],\"internalType\":\"structEVM2EVMOnRamp.StaticConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupportedTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenLimitAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenTransferFeeConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"minFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"deciBps\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"destBytesOverhead\",\"type\":\"uint32\"}],\"internalType\":\"structEVM2EVMOnRamp.TokenTransferFeeConfig\",\"name\":\"tokenTransferFeeConfig\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"linkAvailableForPayment\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"payNops\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"setAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"maxNumberOfTokensPerMsg\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerPayloadByte\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destDataAvailabilityOverheadGas\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerDataAvailabilityByte\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"destDataAvailabilityMultiplierBps\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"priceRegistry\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"maxDataBytes\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxPerMsgGasLimit\",\"type\":\"uint32\"}],\"internalType\":\"structEVM2EVMOnRamp.DynamicConfig\",\"name\":\"dynamicConfig\",\"type\":\"tuple\"}],\"name\":\"setDynamicConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"networkFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"gasMultiplierWeiPerEth\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"premiumMultiplierWeiPerEth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"internalType\":\"structEVM2EVMOnRamp.FeeTokenConfigArgs[]\",\"name\":\"feeTokenConfigArgs\",\"type\":\"tuple[]\"}],\"name\":\"setFeeTokenConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"nop\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"weight\",\"type\":\"uint16\"}],\"internalType\":\"structEVM2EVMOnRamp.NopAndWeight[]\",\"name\":\"nopsAndWeights\",\"type\":\"tuple[]\"}],\"name\":\"setNops\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"capacity\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"rate\",\"type\":\"uint128\"}],\"internalType\":\"structRateLimiter.Config\",\"name\":\"config\",\"type\":\"tuple\"}],\"name\":\"setRateLimiterConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"minFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"deciBps\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"destBytesOverhead\",\"type\":\"uint32\"}],\"internalType\":\"structEVM2EVMOnRamp.TokenTransferFeeConfigArgs[]\",\"name\":\"tokenTransferFeeConfigArgs\",\"type\":\"tuple[]\"}],\"name\":\"setTokenTransferFeeConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawNonLinkFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" +) + +func DecodeEvents( + ethC *ethclient.Client, + opts *bind.FilterOpts, + address, contractABI, eventName string, + query ...[]interface{}, +) (*bind.BoundContract, chan types.Log, event.Subscription, error) { + contractAddress := common.HexToAddress(address) + abi, err := abi.JSON(strings.NewReader(contractABI)) + if err != nil { + return nil, nil, nil, err + } + boundContract := bind.NewBoundContract(contractAddress, abi, ethC, ethC, ethC) + logs, subs, err := boundContract.FilterLogs(opts, eventName, query...) + if err != nil { + return nil, nil, nil, err + } + return boundContract, logs, subs, err +} + +type logIterator struct { + Raw types.Log + Contract *bind.BoundContract + event string + + logs chan types.Log + sub ethereum.Subscription + done bool + fail error +} + +func (it *logIterator) Next() bool { + if it.fail != nil { + return false + } + + if it.done { + select { + case log := <-it.logs: + it.Raw = log + return true + + default: + return false + } + } + + select { + case log := <-it.logs: + it.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +func (it *logIterator) Error() error { + return it.fail +} + +func (it *logIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +func FilterCCIPSendRequested(chain *ethclient.Client, opts *bind.FilterOpts, onRampAddr string) (*logIterator, error) { + onRampContract, logs, sub, err := DecodeEvents(chain, opts, onRampAddr, OnRampABI, "CCIPSendRequested") + if err != nil { + return nil, err + } + return &logIterator{ + Contract: onRampContract, + event: "CCIPSendRequested", + logs: logs, + sub: sub, + }, nil +} + +func (it *logIterator) SendRequestedEventFromLog() (*SendRequestedEvent, error) { + event := new(SendRequestedEvent) + err := it.Contract.UnpackLog(event, "CCIPSendRequested", it.Raw) + if err != nil { + return nil, err + } + return event, nil +} + +func (it *logIterator) CommitStoreReportAcceptedFromLog() (*CommitStoreReportAccepted, error) { + event := new(CommitStoreReportAccepted) + err := it.Contract.UnpackLog(event, "ReportAccepted", it.Raw) + if err != nil { + return nil, err + } + return event, nil +} + +func FilterReportAccepted(chain *ethclient.Client, opts *bind.FilterOpts, commitStoreAddr string) (*logIterator, error) { + commitStoreContract, logs, sub, err := DecodeEvents(chain, opts, commitStoreAddr, CommitStoreABI, "ReportAccepted") + if err != nil { + return nil, err + } + return &logIterator{ + Contract: commitStoreContract, + event: "ReportAccepted", + logs: logs, + sub: sub, + }, nil +} + +func FilterExecutionStateChanged( + chain *ethclient.Client, + opts *bind.FilterOpts, + offRampAddr string, + sequenceNumber []uint64, + messageId [][32]byte, +) (int, error) { + var sequenceNumberRule []interface{} + for _, sequenceNumberItem := range sequenceNumber { + sequenceNumberRule = append(sequenceNumberRule, sequenceNumberItem) + } + var messageIdRule []interface{} + for _, messageIdItem := range messageId { + messageIdRule = append(messageIdRule, messageIdItem) + } + offRamp, logs, sub, err := DecodeEvents(chain, opts, offRampAddr, OffRampABI, "ExecutionStateChanged", sequenceNumberRule, messageIdRule) + if err != nil { + return 0, err + } + it := &logIterator{ + Contract: offRamp, + event: "ExecutionStateChanged", + logs: logs, + sub: sub, + } + + executionState := -1 + for it.Next() && executionState != 2 { + execStateEvent := new(EVM2EVMOffRampExecutionStateChanged) + err = it.Contract.UnpackLog(execStateEvent, "ExecutionStateChanged", it.Raw) + if err != nil { + return 0, err + } + executionState = int(execStateEvent.State) + } + + if executionState == -1 { + return 0, fmt.Errorf("no ExecutionStateChanged found for seq num %v and msg id %v", sequenceNumber, messageId) + } + return executionState, nil +} + +func ManuallyExecute( + ethC *ethclient.Client, + opts *bind.TransactOpts, + address string, + report InternalExecutionReport, + gasLimitOverrides []*EVM2EVMOffRampGasLimitOverride, +) (*types.Transaction, error) { + offRampContract := common.HexToAddress(address) + abi, err := abi.JSON(strings.NewReader(OffRampABI)) + if err != nil { + return nil, err + } + boundContract := bind.NewBoundContract(offRampContract, abi, ethC, ethC, ethC) + return boundContract.Transact(opts, "manuallyExecute", report, gasLimitOverrides) +} diff --git a/core/scripts/ccip/manual-execution/helpers/execReport.go b/core/scripts/ccip/manual-execution/helpers/execReport.go new file mode 100644 index 00000000000..efb593d2b44 --- /dev/null +++ b/core/scripts/ccip/manual-execution/helpers/execReport.go @@ -0,0 +1,325 @@ +package helpers + +import ( + "bytes" + "fmt" + "math/big" + "strings" + + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/math" + "github.com/ethereum/go-ethereum/core/types" + "github.com/pkg/errors" + "golang.org/x/crypto/sha3" +) + +// Hash contains all supported hash formats. +// Add additional hash types e.g. [20]byte as needed here. +type Hash interface { + [32]byte +} + +type Ctx[H Hash] interface { + Hash(l []byte) H + HashInternal(a, b H) H + ZeroHash() H +} + +type keccakCtx struct { + InternalDomainSeparator [32]byte +} + +func NewKeccakCtx() Ctx[[32]byte] { + return keccakCtx{ + InternalDomainSeparator: [32]byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, + } +} + +// Hash hashes a byte array with Keccak256 +func (k keccakCtx) Hash(l []byte) [32]byte { + // Note this Keccak256 cannot error https://github.com/golang/crypto/blob/master/sha3/sha3.go#L126 + // if we start supporting hashing algos which do, we can change this API to include an error. + return Keccak256Fixed(l) +} + +// HashInternal orders two [32]byte values and prepends them with +// a separator before hashing them. +func (k keccakCtx) HashInternal(a, b [32]byte) [32]byte { + if bytes.Compare(a[:], b[:]) < 0 { + return k.Hash(append(k.InternalDomainSeparator[:], append(a[:], b[:]...)...)) + } + return k.Hash(append(k.InternalDomainSeparator[:], append(b[:], a[:]...)...)) +} + +// ZeroHash returns the zero hash: 0xFF..FF +// We use bytes32 0xFF..FF for zeroHash in the CCIP research spec, this needs to match. +// This value is chosen since it is unlikely to be the result of a hash, and cannot match any internal node preimage. +func (k keccakCtx) ZeroHash() [32]byte { + var zeroes [32]byte + for i := 0; i < 32; i++ { + zeroes[i] = 0xFF + } + return zeroes +} + +var ( + LeafDomainSeparator = [1]byte{0x00} +) + +type LeafHasher struct { + geABI abi.ABI + metaDataHash [32]byte + ctx Ctx[[32]byte] +} + +func (t *LeafHasher) HashLeaf(log types.Log) ([32]byte, error) { + event, err := t.ParseEVM2EVMLog(log) + if err != nil { + return [32]byte{}, err + } + encodedTokens, err := ABIEncode(`[{"components": [{"name": "token","type": "address"}, {"name": "amount", "type": "uint256"}],"type": "tuple[]"}]`, event.Message.TokenAmounts) + if err != nil { + return [32]byte{}, err + } + + bytesArray, err := abi.NewType("bytes[]", "bytes[]", nil) + if err != nil { + return [32]byte{}, err + } + + encodedSourceTokenData, err := abi.Arguments{abi.Argument{Type: bytesArray}}.PackValues([]interface{}{event.Message.SourceTokenData}) + if err != nil { + return [32]byte{}, err + } + + packedFixedSizeValues, err := ABIEncode( + `[ +{"name": "sender", "type":"address"}, +{"name": "receiver", "type":"address"}, +{"name": "sequenceNumber", "type":"uint64"}, +{"name": "gasLimit", "type":"uint256"}, +{"name": "strict", "type":"bool"}, +{"name": "nonce", "type":"uint64"}, +{"name": "feeToken","type": "address"}, +{"name": "feeTokenAmount","type": "uint256"} +]`, + event.Message.Sender, + event.Message.Receiver, + event.Message.SequenceNumber, + event.Message.GasLimit, + event.Message.Strict, + event.Message.Nonce, + event.Message.FeeToken, + event.Message.FeeTokenAmount, + ) + if err != nil { + return [32]byte{}, err + } + fixedSizeValuesHash := t.ctx.Hash(packedFixedSizeValues) + + packedValues, err := ABIEncode( + `[ +{"name": "leafDomainSeparator","type":"bytes1"}, +{"name": "metadataHash", "type":"bytes32"}, +{"name": "fixedSizeValuesHash", "type":"bytes32"}, +{"name": "dataHash", "type":"bytes32"}, +{"name": "tokenAmountsHash", "type":"bytes32"}, +{"name": "sourceTokenDataHash", "type":"bytes32"} +]`, + LeafDomainSeparator, + t.metaDataHash, + fixedSizeValuesHash, + t.ctx.Hash(event.Message.Data), + t.ctx.Hash(encodedTokens), + t.ctx.Hash(encodedSourceTokenData), + ) + if err != nil { + return [32]byte{}, err + } + return t.ctx.Hash(packedValues), nil +} + +func (t *LeafHasher) ParseEVM2EVMLog(log types.Log) (*SendRequestedEvent, error) { + event := new(SendRequestedEvent) + err := bind.NewBoundContract(common.Address{}, t.geABI, nil, nil, nil).UnpackLog(event, "CCIPSendRequested", log) + return event, err +} + +func NewLeafHasher(sourceChainId uint64, destChainId uint64, onRampId common.Address, ctx Ctx[[32]byte]) *LeafHasher { + geABI, _ := abi.JSON(strings.NewReader(OnRampABI)) + return &LeafHasher{ + geABI: geABI, + metaDataHash: getMetaDataHash(ctx, ctx.Hash([]byte("EVM2EVMMessageHashV2")), sourceChainId, onRampId, destChainId), + ctx: ctx, + } +} + +func Keccak256Fixed(in []byte) [32]byte { + hash := sha3.NewLegacyKeccak256() + // Note this Keccak256 cannot error https://github.com/golang/crypto/blob/master/sha3/sha3.go#L126 + // if we start supporting hashing algos which do, we can change this API to include an error. + hash.Write(in) + var h [32]byte + copy(h[:], hash.Sum(nil)) + return h +} + +func getMetaDataHash[H Hash](ctx Ctx[H], prefix [32]byte, sourceChainId uint64, onRampId common.Address, destChainId uint64) H { + paddedOnRamp := onRampId.Hash() + return ctx.Hash(ConcatBytes(prefix[:], + math.U256Bytes(big.NewInt(0).SetUint64(sourceChainId)), + math.U256Bytes(big.NewInt(0).SetUint64(destChainId)), paddedOnRamp[:])) +} + +// ConcatBytes appends a bunch of byte arrays into a single byte array +func ConcatBytes(bufs ...[]byte) []byte { + return bytes.Join(bufs, []byte{}) +} + +// ABIEncode is the equivalent of abi.encode. +// See a full set of examples https://github.com/ethereum/go-ethereum/blob/420b78659bef661a83c5c442121b13f13288c09f/accounts/abi/packing_test.go#L31 +func ABIEncode(abiStr string, values ...interface{}) ([]byte, error) { + // Create a dummy method with arguments + inDef := fmt.Sprintf(`[{ "name" : "method", "type": "function", "inputs": %s}]`, abiStr) + inAbi, err := abi.JSON(strings.NewReader(inDef)) + if err != nil { + return nil, err + } + res, err := inAbi.Pack("method", values...) + if err != nil { + return nil, err + } + return res[4:], nil +} + +const ( + SourceFromHashes = true + SourceFromProof = false +) + +type Proof[H Hash] struct { + Hashes []H `json:"hashes"` + SourceFlags []bool `json:"source_flags"` +} + +type singleLayerProof[H Hash] struct { + nextIndices []int + subProof []H + sourceFlags []bool +} + +type Tree[H Hash] struct { + layers [][]H +} + +func NewTree[H Hash](ctx Ctx[H], leafHashes []H) (*Tree[H], error) { + if len(leafHashes) == 0 { + return nil, errors.New("Cannot construct a tree without leaves") + } + var layer = make([]H, len(leafHashes)) + copy(layer, leafHashes) + var layers = [][]H{layer} + var curr int + for len(layer) > 1 { + paddedLayer, nextLayer := computeNextLayer(ctx, layer) + layers[curr] = paddedLayer + curr++ + layers = append(layers, nextLayer) + layer = nextLayer + } + return &Tree[H]{ + layers: layers, + }, nil +} + +// Revive appears confused with the generics "receiver name t should be consistent with previous receiver name p for invalid-type" +// +//revive:disable:receiver-naming +func (t *Tree[H]) String() string { + b := strings.Builder{} + for _, layer := range t.layers { + b.WriteString(fmt.Sprintf("%v", layer)) + } + return b.String() +} + +func (t *Tree[H]) Root() H { + return t.layers[len(t.layers)-1][0] +} + +func (t *Tree[H]) Prove(indices []int) Proof[H] { + var proof Proof[H] + for _, layer := range t.layers[:len(t.layers)-1] { + res := proveSingleLayer(layer, indices) + indices = res.nextIndices + proof.Hashes = append(proof.Hashes, res.subProof...) + proof.SourceFlags = append(proof.SourceFlags, res.sourceFlags...) + } + return proof +} + +func computeNextLayer[H Hash](ctx Ctx[H], layer []H) ([]H, []H) { + if len(layer) == 1 { + return layer, layer + } + if len(layer)%2 != 0 { + layer = append(layer, ctx.ZeroHash()) + } + var nextLayer []H + for i := 0; i < len(layer); i += 2 { + nextLayer = append(nextLayer, ctx.HashInternal(layer[i], layer[i+1])) + } + return layer, nextLayer +} + +func parentIndex(idx int) int { + return idx / 2 +} + +func siblingIndex(idx int) int { + return idx ^ 1 +} + +func proveSingleLayer[H Hash](layer []H, indices []int) singleLayerProof[H] { + var ( + authIndices []int + nextIndices []int + sourceFlags []bool + ) + j := 0 + for j < len(indices) { + x := indices[j] + nextIndices = append(nextIndices, parentIndex(x)) + if j+1 < len(indices) && indices[j+1] == siblingIndex(x) { + j++ + sourceFlags = append(sourceFlags, SourceFromHashes) + } else { + authIndices = append(authIndices, siblingIndex(x)) + sourceFlags = append(sourceFlags, SourceFromProof) + } + j++ + } + var subProof []H + for _, i := range authIndices { + subProof = append(subProof, layer[i]) + } + return singleLayerProof[H]{ + nextIndices: nextIndices, + subProof: subProof, + sourceFlags: sourceFlags, + } +} + +// ProofFlagsToBits transforms a list of boolean proof flags to a *big.Int +// encoded number. +func ProofFlagsToBits(proofFlags []bool) *big.Int { + encodedFlags := big.NewInt(0) + for i := 0; i < len(proofFlags); i++ { + if proofFlags[i] { + encodedFlags.SetBit(encodedFlags, i, 1) + } + } + return encodedFlags +} diff --git a/core/scripts/ccip/manual-execution/helpers/utils.go b/core/scripts/ccip/manual-execution/helpers/utils.go new file mode 100644 index 00000000000..ac04fc70f0e --- /dev/null +++ b/core/scripts/ccip/manual-execution/helpers/utils.go @@ -0,0 +1,47 @@ +package helpers + +import ( + "context" + "fmt" + "log" + "time" + + "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" +) + +func VerifyAddress(addr string) error { + if addr == "" { + return fmt.Errorf("address is blank") + } + if !common.IsHexAddress(addr) { + return fmt.Errorf("address %s is invalid", addr) + } + return nil +} + +func WaitForSuccessfulTxReceipt(client ethereum.TransactionReader, hash common.Hash) error { + ticker := time.NewTicker(5 * time.Second) + defer ticker.Stop() + ctx, cancel := context.WithTimeout(context.Background(), 3*time.Minute) + defer cancel() + for { + select { + case <-ticker.C: + log.Println("[MINING] waiting for tx to be mined...") + receipt, _ := client.TransactionReceipt(context.Background(), hash) + if receipt != nil { + if receipt.Status == types.ReceiptStatusFailed { + return fmt.Errorf("[MINING] ERROR tx reverted %s", hash.Hex()) + } + if receipt.Status == types.ReceiptStatusSuccessful { + log.Println("[MINING] tx mined %s successful", hash.Hex()) + return nil + } + } + case <-ctx.Done(): + return fmt.Errorf("tx not confirmed within time") + } + } +} diff --git a/core/scripts/ccip/manual-execution/main.go b/core/scripts/ccip/manual-execution/main.go new file mode 100644 index 00000000000..35f5de954ed --- /dev/null +++ b/core/scripts/ccip/manual-execution/main.go @@ -0,0 +1,451 @@ +package main + +import ( + "context" + "encoding/hex" + "encoding/json" + "flag" + "fmt" + "log" + "math" + "math/big" + "os" + "strings" + + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/ethclient" + "go.uber.org/multierr" + + chainselectors "github.com/smartcontractkit/chain-selectors" + + "manual-execution/helpers" +) + +const NumberOfBlocks = 20000 + +// Config represents configuration fields +type Config struct { + SrcNodeURL string `json:"src_rpc"` + DestNodeURL string `json:"dest_rpc"` + DestOwner string `json:"dest_owner_key"` + CommitStore string `json:"commit_store"` + OffRamp string `json:"off_ramp"` + DestStartBlock uint64 `json:"dest_start_block"` + SourceChainTx string `json:"source_chain_tx"` + CCIPMsgID string `json:"ccip_msg_id"` + DestDeployedAt uint64 `json:"dest_deployed_at"` + GasLimitOverride uint64 `json:"gas_limit_override"` +} + +type execArgs struct { + cfg Config + seqNum uint64 + msgID [32]byte + sourceChain *ethclient.Client + sourceChainId *big.Int + destChain *ethclient.Client + destUser *bind.TransactOpts + destChainId *big.Int + srcStartBlock *big.Int + destStartBlock uint64 + destLatestBlock uint64 + OnRamp common.Address + tokenGasOverrides []*big.Int +} + +func main() { + configPath := flag.String("configFile", "./config.json", "config for manually executing a failed ccip message "+ + "which has been successfully committed but failed to get executed") + flag.Parse() + + if *configPath == "" { + log.Println("config json is required") + os.Exit(1) + } + cData, err := os.ReadFile(*configPath) + if err != nil { + log.Println("unable to read the json at ", *configPath, "error - ", err) + os.Exit(1) + } + var cfg Config + err = json.Unmarshal(cData, &cfg) + if err != nil { + log.Println("unable to marshal the json at ", *configPath, "error - ", err, `sample json +{ + "src_rpc": "", + "dest_rpc": "", + "dest_owner_key": "", + "commit_store": "", + "off_ramp": "", + "dest_start_block": "", + "ccip_send_tx": "", + "source_start_block": "", + "dest_deployed_at": 0, + "gas_limit_override": 0, +}`) + os.Exit(1) + } + // mandatory fields check + err = cfg.verifyConfig() + if err != nil { + log.Println("config validation failed: \n", err) + os.Exit(1) + } + args := &execArgs{cfg: cfg} + err = args.populateValues() + if err != nil { + log.Println("error instantiating manual execution args ", err) + os.Exit(1) + } + err = args.execute() + if err != nil { + log.Println("manual execution was not successful - ", err) + os.Exit(1) + } +} + +func (cfg Config) verifyConfig() error { + var allErr error + if cfg.SrcNodeURL == "" { + allErr = multierr.Append(allErr, fmt.Errorf("must set src_rpc - source chain rpc\n")) + } + if cfg.DestNodeURL == "" { + allErr = multierr.Append(allErr, fmt.Errorf("must set dest_rpc - destination chain rpc\n")) + } + if cfg.DestOwner == "" { + allErr = multierr.Append(allErr, fmt.Errorf("must set dest_owner_key - destination user private key\n")) + } + if cfg.SourceChainTx == "" { + allErr = multierr.Append(allErr, fmt.Errorf("must set source_chain_tx - txHash of ccip-send request\n")) + } + + if cfg.DestStartBlock == 0 && cfg.DestDeployedAt == 0 { + allErr = multierr.Append(allErr, fmt.Errorf(`must set either of - +dest_deployed_at - the block number before destination contracts were deployed; +dest_start_block - the block number from which events will be filtered at destination chain. +`)) + } + if cfg.GasLimitOverride == 0 { + allErr = multierr.Append(allErr, fmt.Errorf("must set gas_limit_override - new value of gas limit for ccip-send request\n")) + } + err := helpers.VerifyAddress(cfg.CommitStore) + if err != nil { + allErr = multierr.Append(allErr, fmt.Errorf("check the commit_store address - %v\n", err)) + } + err = helpers.VerifyAddress(cfg.OffRamp) + if err != nil { + allErr = multierr.Append(allErr, fmt.Errorf("check the off_ramp address - %v\n", err)) + } + + return allErr +} + +func (args *execArgs) populateValues() error { + var err error + cfg := args.cfg + args.sourceChain, err = ethclient.Dial(cfg.SrcNodeURL) + if err != nil { + return err + } + args.sourceChainId, err = args.sourceChain.ChainID(context.Background()) + if err != nil { + return err + } + + args.destChain, err = ethclient.Dial(cfg.DestNodeURL) + if err != nil { + return err + } + args.destChainId, err = args.destChain.ChainID(context.Background()) + if err != nil { + return err + } + ownerKey, err := crypto.HexToECDSA(cfg.DestOwner) + if err != nil { + return err + } + + args.destUser, err = bind.NewKeyedTransactorWithChainID(ownerKey, args.destChainId) + if err != nil { + return err + } + log.Println("--- Owner address---/n", args.destUser.From.Hex()) + + var txReceipt *types.Receipt + txReceipt, err = args.sourceChain.TransactionReceipt(context.Background(), common.HexToHash(cfg.SourceChainTx)) + if err != nil { + return err + } + args.srcStartBlock = big.NewInt(0).Sub(txReceipt.BlockNumber, big.NewInt(NumberOfBlocks)) + args.destLatestBlock, err = args.destChain.BlockNumber(context.Background()) + if err != nil { + return err + } + + err = args.seqNumFromCCIPSendRequested(txReceipt.Logs) + if err != nil { + return err + } + if args.cfg.DestStartBlock < 1 { + err = args.approxDestStartBlock() + if err != nil { + return err + } + } else { + args.destStartBlock = args.cfg.DestStartBlock + } + return nil +} + +func (args *execArgs) execute() error { + iterator, err := helpers.FilterReportAccepted(args.destChain, &bind.FilterOpts{Start: args.destStartBlock}, args.cfg.CommitStore) + if err != nil { + return err + } + + var commitReport *helpers.ICommitStoreCommitReport + for iterator.Next() { + eventReport, err := iterator.CommitStoreReportAcceptedFromLog() + if err != nil { + return err + } + + if eventReport.Report.Interval.Min <= args.seqNum && eventReport.Report.Interval.Max >= args.seqNum { + commitReport = &eventReport.Report + log.Println("Found root") + break + } + } + if commitReport == nil { + return fmt.Errorf("unable to find seq num %d in commit report", args.seqNum) + } + log.Println("Executing request manually") + seqNr := args.seqNum + // Build a merkle tree for the report + mctx := helpers.NewKeccakCtx() + leafHasher := helpers.NewLeafHasher( + GetCCIPChainSelector(args.sourceChainId.Uint64()), + GetCCIPChainSelector(args.destChainId.Uint64()), + args.OnRamp, + mctx, + ) + + var leaves [][32]byte + var curr, prove int + var tokenData [][][]byte + var msgs []helpers.InternalEVM2EVMMessage + + sendRequestedIterator, err := helpers.FilterCCIPSendRequested(args.sourceChain, &bind.FilterOpts{ + Start: args.srcStartBlock.Uint64(), + }, args.OnRamp.Hex()) + if err != nil { + return err + } + + for sendRequestedIterator.Next() { + event, err := sendRequestedIterator.SendRequestedEventFromLog() + if err != nil { + return err + } + if event.Message.SequenceNumber <= commitReport.Interval.Max && + event.Message.SequenceNumber >= commitReport.Interval.Min { + log.Println("Found seq num in commit report", event.Message.SequenceNumber, commitReport.Interval) + hash, err := leafHasher.HashLeaf(sendRequestedIterator.Raw) + if err != nil { + return err + } + leaves = append(leaves, hash) + if event.Message.SequenceNumber == seqNr && event.Message.MessageId == args.msgID { + log.Printf("Found proving %d %+v\n\n", curr, event.Message) + msgs = append(msgs, event.Message) + + var msgTokenData [][]byte + for range event.Message.TokenAmounts { + msgTokenData = append(msgTokenData, []byte{}) + } + + tokenData = append(tokenData, msgTokenData) + prove = curr + } + curr++ + } + } + + sendRequestedIterator.Close() + if len(msgs) == 0 { + return fmt.Errorf("unable to find msg with seqNr %d", seqNr) + } + + expectedNumberOfLeaves := int(commitReport.Interval.Max) - int(commitReport.Interval.Min) + 1 + if len(leaves) != expectedNumberOfLeaves { + return fmt.Errorf("not enough leaves gather to build a commit root - want %d got %d. Please set NumberOfBlocks const to a higher value", expectedNumberOfLeaves, len(leaves)) + } + + tree, err := helpers.NewTree(mctx, leaves) + if err != nil { + return err + } + if tree.Root() != commitReport.MerkleRoot { + return fmt.Errorf("root doesn't match. cannot execute") + } + + proof := tree.Prove([]int{prove}) + offRampProof := helpers.InternalExecutionReport{ + Messages: msgs, + Proofs: proof.Hashes, + OffchainTokenData: tokenData, + ProofFlagBits: helpers.ProofFlagsToBits(proof.SourceFlags), + } + + gasLimitOverrides := make([]*helpers.EVM2EVMOffRampGasLimitOverride, len(offRampProof.Messages)) + + for range offRampProof.Messages { + evm2evmOffRampGasLimitOverride := &helpers.EVM2EVMOffRampGasLimitOverride{ + ReceiverExecutionGasLimit: big.NewInt(int64(args.cfg.GasLimitOverride)), + TokenGasOverrides: args.tokenGasOverrides, + } + gasLimitOverrides = append(gasLimitOverrides, evm2evmOffRampGasLimitOverride) + } + + // GasLimit may need to be raised if the TX is reverting. Must be set to a value larger than the GasLimitOverride. + // args.destUser.GasLimit = 5000000 + tx, err := helpers.ManuallyExecute(args.destChain, args.destUser, args.cfg.OffRamp, offRampProof, gasLimitOverrides) + if err != nil { + return err + } + // wait for tx confirmation + err = helpers.WaitForSuccessfulTxReceipt(args.destChain, tx.Hash()) + if err != nil { + log.Println("Failures may be due to insufficient gas, try increasing args.destUser.GasLimit.") + return err + } + + // check if the message got successfully delivered + changed, err := helpers.FilterExecutionStateChanged(args.destChain, &bind.FilterOpts{ + Start: args.destStartBlock, + }, args.cfg.OffRamp, []uint64{args.seqNum}, [][32]byte{args.msgID}) + if err != nil { + return err + } + if changed != 2 { + return fmt.Errorf("manual execution did not result in ExecutionStateChanged as success") + } + return nil +} + +func (args *execArgs) seqNumFromCCIPSendRequested(logs []*types.Log) error { + abi, err := abi.JSON(strings.NewReader(helpers.OnRampABI)) + if err != nil { + return err + } + var topic0 common.Hash + for name, abiEvent := range abi.Events { + if name == "CCIPSendRequested" { + topic0 = abiEvent.ID + break + } + } + if topic0 == (common.Hash{}) { + return fmt.Errorf("no CCIPSendRequested event found in ABI") + } + var sendRequestedLogs []types.Log + for _, sendReqLog := range logs { + if sendReqLog.Topics[0] == topic0 && sendReqLog.TxHash == common.HexToHash(args.cfg.SourceChainTx) { + args.OnRamp = sendReqLog.Address + sendRequestedLogs = append(sendRequestedLogs, *sendReqLog) + } + } + + if len(sendRequestedLogs) == 0 { + return fmt.Errorf("no CCIPSendRequested logs found for in txReceipt for txhash %s", args.cfg.SourceChainTx) + } + onRampContract := bind.NewBoundContract(args.OnRamp, abi, args.sourceChain, args.sourceChain, args.sourceChain) + + for _, sendReqLog := range sendRequestedLogs { + var event helpers.SendRequestedEvent + + err = onRampContract.UnpackLog(&event, "CCIPSendRequested", sendReqLog) + if err != nil { + return err + } + + if args.cfg.CCIPMsgID != "" && + "0x"+hex.EncodeToString(event.Message.MessageId[:]) != args.cfg.CCIPMsgID { + continue + } + + args.seqNum = event.Message.SequenceNumber + args.msgID = event.Message.MessageId + return nil + } + + return fmt.Errorf("send request not found in logs") +} + +func (args *execArgs) approxDestStartBlock() error { + sourceBlockHdr, err := args.sourceChain.HeaderByNumber(context.Background(), args.srcStartBlock) + if err != nil { + return err + } + sendTxTime := sourceBlockHdr.Time + maxBlockNum := args.destLatestBlock + // setting this to an approx value of 1000 considering destination chain would have at least 1000 blocks before the transaction started + minBlockNum := args.cfg.DestDeployedAt + closestBlockNum := uint64(math.Floor((float64(maxBlockNum) + float64(minBlockNum)) / 2)) + var closestBlockHdr *types.Header + closestBlockHdr, err = args.destChain.HeaderByNumber(context.Background(), big.NewInt(int64(closestBlockNum))) + if err != nil { + return err + } + // to reduce the number of RPC calls increase the value of blockOffset + blockOffset := uint64(10) + for { + blockNum := closestBlockHdr.Number.Uint64() + if minBlockNum > maxBlockNum { + break + } + timeDiff := math.Abs(float64(closestBlockHdr.Time - sendTxTime)) + // break if the difference in timestamp is lesser than 1 minute + if timeDiff < 60 { + break + } else if closestBlockHdr.Time > sendTxTime { + maxBlockNum = blockNum - 1 + } else { + minBlockNum = blockNum + 1 + } + closestBlockNum = uint64(math.Floor((float64(maxBlockNum) + float64(minBlockNum)) / 2)) + closestBlockHdr, err = args.destChain.HeaderByNumber(context.Background(), big.NewInt(int64(closestBlockNum))) + if err != nil { + return err + } + } + + for { + if closestBlockHdr.Time <= sendTxTime { + break + } + closestBlockNum = closestBlockNum - blockOffset + if closestBlockNum <= 0 { + return fmt.Errorf("approx destination blocknumber not found") + } + closestBlockHdr, err = args.destChain.HeaderByNumber(context.Background(), big.NewInt(int64(closestBlockNum))) + if err != nil { + return err + } + } + args.destStartBlock = closestBlockHdr.Number.Uint64() + log.Printf("using approx destination start block number %d for filtering event", args.destStartBlock) + return nil +} + +func GetCCIPChainSelector(chainId uint64) uint64 { + selector, err := chainselectors.SelectorFromChainId(chainId) + if err != nil { + panic(fmt.Sprintf("no chain selector for %d", chainId)) + } + return selector +} diff --git a/core/scripts/ccip/revert-reason/Makefile b/core/scripts/ccip/revert-reason/Makefile new file mode 100644 index 00000000000..e52d2b27f72 --- /dev/null +++ b/core/scripts/ccip/revert-reason/Makefile @@ -0,0 +1,3 @@ +# Build the CLI binary +build: + go build -o bin/ccip-revert-reason . diff --git a/core/scripts/ccip/revert-reason/README.md b/core/scripts/ccip/revert-reason/README.md new file mode 100644 index 00000000000..9a3aa128526 --- /dev/null +++ b/core/scripts/ccip/revert-reason/README.md @@ -0,0 +1,41 @@ +## Setup + +Before starting: + +1. Create `.env` file based on the example `.env.example` next to the CLI binary. + +2. If you plan to resolve revert reasons from a transaction hash, you will need: + 1. An EVM chain endpoint URL + 2. A from address + +The endpoint URL can be a locally running node (archive mode), or an externally hosted one like +[alchemy](https://www.alchemy.com/). + + + +To see all available commands, run the following: +```bash +go run main.go --help +``` + + +## Usage + +Decoding an error code string (offline): + +```bash +> ./ccip-revert-reason reason --from-error "0x4e487b710000000000000000000000000000000000000000000000000000000000000032" +2022/12/05 15:18:33 Using config file .env +Decoded error: Assertion failure +If you access an array, bytesN or an array slice at an out-of-bounds or negative index (i.e. x[i] where i >= x.length or i < 0).% +``` + + +Resolving from a transaction hash (`NODE_URL` and `FROM_ADDRESS` env vars need to be defined) + +```bash +> ./ccip-revert-reason reason "0x4e487b710000000000000" +2022/12/05 15:18:33 Using config file .env +Decoded error: Assertion failure +If you access an array, bytesN or an array slice at an out-of-bounds or negative index (i.e. x[i] where i >= x.length or i < 0).% +``` \ No newline at end of file diff --git a/core/scripts/ccip/revert-reason/command/revert_reason.go b/core/scripts/ccip/revert-reason/command/revert_reason.go new file mode 100644 index 00000000000..7258eaba719 --- /dev/null +++ b/core/scripts/ccip/revert-reason/command/revert_reason.go @@ -0,0 +1,42 @@ +package command + +import ( + "fmt" + "log" + + "github.com/spf13/cobra" + + "github.com/smartcontractkit/chainlink/core/scripts/ccip/revert-reason/config" + "github.com/smartcontractkit/chainlink/core/scripts/ccip/revert-reason/handler" +) + +// RevertReasonCmd takes in a failed tx hash and tries to give you the reason +var RevertReasonCmd = &cobra.Command{ + Use: "reason ", + Short: "Revert reason for failed TX.", + Long: `Given a failed TX tries to find the revert reason. args = tx hex address`, + Args: cobra.ExactArgs(1), + Run: func(cmd *cobra.Command, args []string) { + cfg := config.New() + baseHandler := handler.NewBaseHandler(cfg) + + decodeFromError, err := cmd.Flags().GetBool("from-error") + if err != nil { + log.Fatal("failed to get withdraw flag: ", err) + } + + if decodeFromError { + result, err := baseHandler.RevertReasonFromErrorCodeString(args[0]) + if err != nil { + log.Fatal("failed to decode error code string: ", err) + } + fmt.Print(result) + } else { + result, err := baseHandler.RevertReasonFromTx(args[0]) + if err != nil { + log.Fatal("failed to decode error code string: ", err) + } + fmt.Print(result) + } + }, +} diff --git a/core/scripts/ccip/revert-reason/command/root.go b/core/scripts/ccip/revert-reason/command/root.go new file mode 100644 index 00000000000..31578fc46f1 --- /dev/null +++ b/core/scripts/ccip/revert-reason/command/root.go @@ -0,0 +1,35 @@ +package command + +import ( + "fmt" + "os" + + "github.com/spf13/cobra" + "github.com/spf13/viper" +) + +var configFile string + +// RootCmd represents the base command when called without any subcommands +var RootCmd = &cobra.Command{ + Use: "ccip-revert-reason", + Short: "ChainLink CLI tool to resolve CCIP revert reasons", + Long: `ccip-revert-reason is a CLI for running the CCIP revert reason resolution commands.`, +} + +// Execute adds all child commands to the root command and sets flags appropriately. +// This is called by main.main(). It only needs to happen once to the RootCmd. +func Execute() { + if err := RootCmd.Execute(); err != nil { + fmt.Println(err) + os.Exit(1) + } +} + +func init() { + RootCmd.PersistentFlags().StringVar(&configFile, "config", "", "config file (default is .env)") + _ = viper.BindPFlag("config", RootCmd.PersistentFlags().Lookup("config")) + + RootCmd.AddCommand(RevertReasonCmd) + RevertReasonCmd.Flags().Bool("from-error", false, "Whether to decode an error string instead of transaction hash") +} diff --git a/core/scripts/ccip/revert-reason/config/config.go b/core/scripts/ccip/revert-reason/config/config.go new file mode 100644 index 00000000000..014f44906c4 --- /dev/null +++ b/core/scripts/ccip/revert-reason/config/config.go @@ -0,0 +1,42 @@ +package config + +import ( + "log" + + "github.com/spf13/viper" +) + +// Config represents configuration fields +type Config struct { + NodeURL string `mapstructure:"NODE_URL"` + FromAddress string `mapstructure:"FROM_ADDRESS"` +} + +// New creates a new config +func New() *Config { + var cfg Config + configFile := viper.GetString("config") + if configFile != "" { + // Use config file from the flag. + viper.SetConfigFile(configFile) + } else { + viper.SetConfigFile(".env") + } + viper.AutomaticEnv() + if err := viper.ReadInConfig(); err != nil { + log.Fatal("failed to read config: ", err) + } + if err := viper.Unmarshal(&cfg); err != nil { + log.Fatal("failed to unmarshal config: ", err) + } + if err := cfg.Validate(); err != nil { + log.Fatal("failed to validate config: ", err) + } + + return &cfg +} + +// Validate validates the given config +func (c *Config) Validate() error { + return nil +} diff --git a/core/scripts/ccip/revert-reason/handler/handler.go b/core/scripts/ccip/revert-reason/handler/handler.go new file mode 100644 index 00000000000..e1ea13396c9 --- /dev/null +++ b/core/scripts/ccip/revert-reason/handler/handler.go @@ -0,0 +1,17 @@ +package handler + +import ( + "github.com/smartcontractkit/chainlink/core/scripts/ccip/revert-reason/config" +) + +// BaseHandler is the common handler with a common logic +type BaseHandler struct { + cfg *config.Config +} + +// NewBaseHandler is the constructor of baseHandler +func NewBaseHandler(cfg *config.Config) *BaseHandler { + return &BaseHandler{ + cfg: cfg, + } +} diff --git a/core/scripts/ccip/revert-reason/handler/reason.go b/core/scripts/ccip/revert-reason/handler/reason.go new file mode 100644 index 00000000000..ee354aca928 --- /dev/null +++ b/core/scripts/ccip/revert-reason/handler/reason.go @@ -0,0 +1,208 @@ +package handler + +import ( + "bytes" + "context" + "encoding/hex" + "encoding/json" + "fmt" + "strings" + + "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/ethclient" + "github.com/pkg/errors" + + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/burn_mint_token_pool" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/burn_mint_token_pool_1_2_0" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/commit_store" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_offramp" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_onramp" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/fee_quoter" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/lock_release_token_pool" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/lock_release_token_pool_1_4_0" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/maybe_revert_message_receiver" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/offramp" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/onramp" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/rmn_contract" + "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/usdc_token_pool" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/usdc_token_pool_1_4_0" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/shared/generated/burn_mint_erc677" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/shared/generated/erc20" +) + +// RevertReasonFromErrorCodeString attempts to decode an error code string +func (h *BaseHandler) RevertReasonFromErrorCodeString(errorCodeString string) (string, error) { + errorCodeString = strings.TrimPrefix(errorCodeString, "0x") + return DecodeErrorStringFromABI(errorCodeString) +} + +// RevertReasonFromTx attempts to fetch more info on failed TX +func (h *BaseHandler) RevertReasonFromTx(txHash string) (string, error) { + // Need a node URL + // NOTE: this node needs to run in archive mode + ethURL := h.cfg.NodeURL + if ethURL == "" { + panicErr(errors.New("you must define ETH_NODE env variable")) + } + requester := h.cfg.FromAddress + + ec, err := ethclient.Dial(ethURL) + panicErr(err) + errorString, _ := GetErrorForTx(ec, txHash, requester) + + return DecodeErrorStringFromABI(errorString) +} + +func DecodeErrorStringFromABI(errorString string) (string, error) { + contractABIs := getAllABIs() + + // Sanitize error string + errorString = strings.TrimPrefix(errorString, "Reverted ") + errorString = strings.TrimPrefix(errorString, "0x") + + data, err := hex.DecodeString(errorString) + if err != nil { + return "", errors.Wrap(err, "error decoding error string") + } + + for _, contractABI := range contractABIs { + parsedAbi, err2 := abi.JSON(strings.NewReader(contractABI)) + if err2 != nil { + return "", errors.Wrap(err2, "error loading ABI") + } + + for errorName, abiError := range parsedAbi.Errors { + if bytes.Equal(data[:4], abiError.ID.Bytes()[:4]) { + // Found a matching error + v, err3 := abiError.Unpack(data) + if err3 != nil { + return "", errors.Wrap(err3, "error unpacking data") + } + + // If exec error, the actual error is within the revert reason + if errorName == "ExecutionError" || errorName == "TokenRateLimitError" || errorName == "TokenHandlingError" || errorName == "ReceiverError" { + // Get the inner type, which is `bytes` + fmt.Printf("Error is \"%v\" \ninner error: ", errorName) + errorBytes := v.([]interface{})[0].([]byte) + if len(errorBytes) < 4 { + return "[reverted without error code]", nil + } + return DecodeErrorStringFromABI(hex.EncodeToString(errorBytes)) + } + return fmt.Sprintf("error is \"%v\" args %v\n", errorName, v), nil + } + } + } + + if len(errorString) > 8 && errorString[:8] == "4e487b71" { + fmt.Println("Assertion failure") + indicator := errorString[len(errorString)-2:] + switch indicator { + case "01": + return "If you call assert with an argument that evaluates to false.", nil + case "11": + return "If an arithmetic operation results in underflow or overflow outside of an unchecked { ... } block.", nil + case "12": + return "If you divide or modulo by zero (e.g. 5 / 0 or 23 modulo 0).", nil + case "21": + return "If you convert a value that is too big or negative into an enum type.", nil + case "31": + return "If you call .pop() on an empty array.", nil + case "32": + return "If you access an array, bytesN or an array slice at an out-of-bounds or negative index (i.e. x[i] where i >= x.length or i < 0).", nil + case "41": + return "If you allocate too much memory or create an array that is too large.", nil + case "51": + return "If you call a zero-initialized variable of internal function type.", nil + default: + return fmt.Sprintf("This is a revert produced by an assertion failure. Exact code not found \"%s\"", indicator), nil + } + } + + stringErr, err := abi.UnpackRevert(data) + if err == nil { + return "string error: " + stringErr, nil + } + + return "", errors.Errorf(`cannot match error with contract ABI. Error code "%s"`, errorString) +} + +func getAllABIs() []string { + return []string{ + rmn_contract.RMNContractABI, + lock_release_token_pool_1_4_0.LockReleaseTokenPoolABI, + burn_mint_token_pool_1_2_0.BurnMintTokenPoolABI, + usdc_token_pool_1_4_0.USDCTokenPoolABI, + burn_mint_erc677.BurnMintERC677ABI, + erc20.ERC20ABI, + lock_release_token_pool.LockReleaseTokenPoolABI, + burn_mint_token_pool.BurnMintTokenPoolABI, + usdc_token_pool.USDCTokenPoolABI, + commit_store.CommitStoreABI, + token_admin_registry.TokenAdminRegistryABI, + fee_quoter.FeeQuoterABI, + evm_2_evm_onramp.EVM2EVMOnRampABI, + evm_2_evm_offramp.EVM2EVMOffRampABI, + router.RouterABI, + onramp.OnRampABI, + offramp.OffRampABI, + maybe_revert_message_receiver.MaybeRevertMessageReceiverABI, + } +} + +func GetErrorForTx(client *ethclient.Client, txHash string, requester string) (string, error) { + tx, _, err := client.TransactionByHash(context.Background(), common.HexToHash(txHash)) + if err != nil { + return "", errors.Wrap(err, "error getting transaction from hash") + } + re, err := client.TransactionReceipt(context.Background(), common.HexToHash(txHash)) + if err != nil { + return "", errors.Wrap(err, "error getting transaction receipt") + } + + call := ethereum.CallMsg{ + From: common.HexToAddress(requester), + To: tx.To(), + Data: tx.Data(), + Value: tx.Value(), + Gas: tx.Gas(), + GasPrice: tx.GasPrice(), + } + _, err = client.CallContract(context.Background(), call, re.BlockNumber) + if err == nil { + panic("no error calling contract") + } + + return parseError(err) +} + +func parseError(txError error) (string, error) { + b, err := json.Marshal(txError) + if err != nil { + return "", err + } + var callErr struct { + Code int + Data string `json:"data"` + Message string `json:"message"` + } + if json.Unmarshal(b, &callErr) != nil { + return "", err + } + + if callErr.Data == "" && strings.Contains(callErr.Message, "missing trie node") { + return "", errors.Errorf("please use an archive node") + } + + return callErr.Data, nil +} + +func panicErr(err error) { + if err != nil { + panic(err) + } +} diff --git a/core/scripts/ccip/revert-reason/handler/reason_test.go b/core/scripts/ccip/revert-reason/handler/reason_test.go new file mode 100644 index 00000000000..4a9363550ce --- /dev/null +++ b/core/scripts/ccip/revert-reason/handler/reason_test.go @@ -0,0 +1,68 @@ +package handler + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/smartcontractkit/chainlink/core/scripts/ccip/revert-reason/config" +) + +func Test_RevertReasonFromTx(t *testing.T) { + type fields struct { + cfg *config.Config + } + type args struct { + txHash string + } + var tests []struct { + name string + fields fields + args args + expected string + } // TODO: Add test cases. + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + h := &BaseHandler{ + cfg: tt.fields.cfg, + } + got, err := h.RevertReasonFromTx(tt.args.txHash) + require.NoError(t, err) + require.Equal(t, tt.expected, got) + }) + } +} + +func Test_RevertReasonFromErrorCodeString(t *testing.T) { + type fields struct { + cfg *config.Config + } + type args struct { + errorCodeString string + } + tests := []struct { + name string + fields fields + args args + expected string + }{ + { + name: "decode error string", + fields: fields{cfg: &config.Config{}}, + args: args{ + errorCodeString: "0x4e487b710000000000000000000000000000000000000000000000000000000000000032", + }, + expected: "If you access an array, bytesN or an array slice at an out-of-bounds or negative index (i.e. x[i] where i >= x.length or i < 0).", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + h := &BaseHandler{ + cfg: tt.fields.cfg, + } + got, err := h.RevertReasonFromErrorCodeString(tt.args.errorCodeString) + require.NoError(t, err) + require.Equal(t, tt.expected, got) + }) + } +} diff --git a/core/scripts/ccip/revert-reason/main.go b/core/scripts/ccip/revert-reason/main.go new file mode 100644 index 00000000000..1eac8b66baa --- /dev/null +++ b/core/scripts/ccip/revert-reason/main.go @@ -0,0 +1,9 @@ +package main + +import ( + "github.com/smartcontractkit/chainlink/core/scripts/ccip/revert-reason/command" +) + +func main() { + command.Execute() +} diff --git a/core/scripts/ccip/secrets/secrets.go b/core/scripts/ccip/secrets/secrets.go new file mode 100644 index 00000000000..e47f644b37e --- /dev/null +++ b/core/scripts/ccip/secrets/secrets.go @@ -0,0 +1,16 @@ +package secrets + +import ( + "fmt" + "os" + "strconv" +) + +func GetRPC(chainID uint64) string { + envVariable := "RPC_" + strconv.FormatUint(chainID, 10) + rpc := os.Getenv(envVariable) + if rpc != "" { + return rpc + } + panic(fmt.Errorf("RPC not found. Please set the environment variable for chain %d e.g. RPC_420=https://rpc.420.com", chainID)) +} diff --git a/core/scripts/ccip/shared/helpers.go b/core/scripts/ccip/shared/helpers.go new file mode 100644 index 00000000000..8aa8b9ab222 --- /dev/null +++ b/core/scripts/ccip/shared/helpers.go @@ -0,0 +1,52 @@ +package shared + +import ( + "context" + "testing" + "time" + + "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/common" + "github.com/pkg/errors" + "github.com/stretchr/testify/require" + + evmclient "github.com/smartcontractkit/chainlink/v2/core/chains/evm/client" + "github.com/smartcontractkit/chainlink/v2/core/logger" +) + +const RetryTiming = 5 * time.Second +const CrossChainTimout = 5 * time.Minute +const TxInclusionTimout = 3 * time.Minute + +// WaitForMined wait for a tx to be included on chain. It will panic when +// the tx is reverted/successful based on the shouldSucceed parameter. +func WaitForMined(lggr logger.Logger, client ethereum.TransactionReader, hash common.Hash, shouldSucceed bool) error { + maxIterations := TxInclusionTimout / RetryTiming + for i := 0; i < int(maxIterations); i++ { + lggr.Info("[MINING] waiting for tx to be mined...") + receipt, _ := client.TransactionReceipt(context.Background(), hash) + + if receipt != nil { + if shouldSucceed && receipt.Status == 0 { + lggr.Infof("[MINING] ERROR tx reverted %s", hash.Hex()) + panic(receipt) + } else if !shouldSucceed && receipt.Status != 0 { + lggr.Infof("[MINING] ERROR expected tx to revert %s", hash.Hex()) + panic(receipt) + } + lggr.Infof("[MINING] tx mined %s successful %t", hash.Hex(), shouldSucceed) + return nil + } + + time.Sleep(RetryTiming) + } + return errors.New("No tx found within the given timeout") +} + +func RequireNoError(t *testing.T, err error) { + if err != nil { + jErr, _ := evmclient.ExtractRPCError(err) + t.Log(jErr) + } + require.NoError(t, err) +} diff --git a/core/scripts/go.mod b/core/scripts/go.mod index b0dd9a49b65..1a566539391 100644 --- a/core/scripts/go.mod +++ b/core/scripts/go.mod @@ -30,6 +30,7 @@ require ( github.com/montanaflynn/stats v0.7.1 github.com/olekukonko/tablewriter v0.0.5 github.com/pelletier/go-toml/v2 v2.2.3 + github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.20.5 github.com/shopspring/decimal v1.4.0 github.com/smartcontractkit/chainlink-automation v0.8.1 @@ -285,7 +286,6 @@ require ( github.com/patrickmn/go-cache v2.1.0+incompatible // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 // indirect - github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect github.com/pressly/goose/v3 v3.21.1 // indirect diff --git a/dashboard-lib/ccip-load-test-view/component.go b/dashboard-lib/ccip-load-test-view/component.go index 790ea6e9a9d..700a0a51077 100644 --- a/dashboard-lib/ccip-load-test-view/component.go +++ b/dashboard-lib/ccip-load-test-view/component.go @@ -310,6 +310,7 @@ func reqRespRow(p Props) []dashboard.Option { return []dashboard.Option{ dashboard.Row( "Requests/Responses", + row.Collapse(), row.WithStat( "Stats", stat.DataSource(p.LokiDataSource), diff --git a/deployment/environment/nodeclient/chainlink.go b/deployment/environment/nodeclient/chainlink.go index 52aee76cd98..0fb3eca2659 100644 --- a/deployment/environment/nodeclient/chainlink.go +++ b/deployment/environment/nodeclient/chainlink.go @@ -94,6 +94,11 @@ func (c *ChainlinkClient) URL() string { return c.Config.URL } +func (c *ChainlinkClient) WithRetryCount(retryCount int) *ChainlinkClient { + c.APIClient.SetRetryCount(retryCount) + return c +} + // Health returns all statuses health info func (c *ChainlinkClient) Health() (*HealthResponse, *http.Response, error) { respBody := &HealthResponse{} diff --git a/integration-tests/.gitignore b/integration-tests/.gitignore new file mode 100644 index 00000000000..43803dd8728 --- /dev/null +++ b/integration-tests/.gitignore @@ -0,0 +1,4 @@ +vendor +# secret files in config +**/**/network_config.toml +**/**/secrets.toml \ No newline at end of file diff --git a/integration-tests/actions/actions.go b/integration-tests/actions/actions.go index 53283967976..5a3f0b6c70b 100644 --- a/integration-tests/actions/actions.go +++ b/integration-tests/actions/actions.go @@ -4,6 +4,7 @@ package actions import ( "context" "crypto/ecdsa" + "encoding/json" "fmt" "math" "math/big" @@ -13,6 +14,7 @@ import ( "testing" "time" + "github.com/ethereum/go-ethereum/accounts/keystore" "github.com/pelletier/go-toml/v2" geth "github.com/ethereum/go-ethereum" @@ -697,6 +699,45 @@ func ConfigureOCRv2AggregatorContracts( return nil } +// ReturnFunds attempts to return all the funds from the chainlink nodes to the network's default address +// all from a remote, k8s style environment +// Remove this once ccip-tests are moved to seth client +func ReturnFunds(lggr zerolog.Logger, chainlinkNodes []*nodeclient.ChainlinkK8sClient, blockchainClient blockchain.EVMClient) error { + if blockchainClient == nil { + return errors.New("blockchain client is nil, unable to return funds from chainlink nodes") + } + lggr.Info().Msg("Attempting to return Chainlink node funds to default network wallets") + if blockchainClient.NetworkSimulated() { + lggr.Info().Str("Network Name", blockchainClient.GetNetworkName()). + Msg("Network is a simulated network. Skipping fund return.") + return nil + } + + for _, chainlinkNode := range chainlinkNodes { + fundedKeys, err := chainlinkNode.ExportEVMKeysForChain(blockchainClient.GetChainID().String()) + if err != nil { + return err + } + for _, key := range fundedKeys { + keyToDecrypt, err := json.Marshal(key) + if err != nil { + return err + } + // This can take up a good bit of RAM and time. When running on the remote-test-runner, this can lead to OOM + // issues. So we avoid running in parallel; slower, but safer. + decryptedKey, err := keystore.DecryptKey(keyToDecrypt, nodeclient.ChainlinkKeyPassword) + if err != nil { + return err + } + err = blockchainClient.ReturnFunds(decryptedKey.PrivateKey) + if err != nil { + lggr.Error().Err(err).Str("Address", fundedKeys[0].Address).Msg("Error returning funds from Chainlink node") + } + } + } + return blockchainClient.WaitForEvents() +} + // TeardownSuite tears down networks/clients and environment and creates a logs folder for failed tests in the // specified path. Can also accept a testreporter (if one was used) to log further results func TeardownSuite( @@ -707,6 +748,7 @@ func TeardownSuite( optionalTestReporter testreporters.TestReporter, // Optionally pass in a test reporter to log further metrics failingLogLevel zapcore.Level, // Examines logs after the test, and fails the test if any Chainlink logs are found at or above provided level grafnaUrlProvider testreporters.GrafanaURLProvider, + evmClients ...blockchain.EVMClient, ) error { l := logging.GetTestLogger(t) if err := testreporters.WriteTeardownLogs(t, env, optionalTestReporter, failingLogLevel, grafnaUrlProvider); err != nil { @@ -730,6 +772,28 @@ func TeardownSuite( } else { l.Info().Msg("Successfully returned funds from chainlink nodes to default network wallets") } + // The following is needed for tests using EVMClient, + // Remove this once ccip-tests are moved to seth client + for _, c := range evmClients { + if c != nil && chainlinkNodes != nil && len(chainlinkNodes) > 0 { + if err := ReturnFunds(l, chainlinkNodes, c); err != nil { + // This printed line is required for tests that use real funds to propagate the failure + // out to the system running the test. Do not remove + fmt.Println(environment.FAILED_FUND_RETURN) + l.Error().Err(err).Str("Namespace", env.Cfg.Namespace). + Msg("Error attempting to return funds from chainlink nodes to network's default wallet. " + + "Environment is left running so you can try manually!") + } + } else { + l.Info().Msg("Successfully returned funds from chainlink nodes to default network wallets") + } + if c != nil { + err := c.Close() + if err != nil { + return err + } + } + } return env.Shutdown() } diff --git a/integration-tests/ccip-tests/Makefile b/integration-tests/ccip-tests/Makefile index 2702c36b027..4aebd4c4608 100644 --- a/integration-tests/ccip-tests/Makefile +++ b/integration-tests/ccip-tests/Makefile @@ -1,5 +1,5 @@ ## To Override the default config: -# example usage: make set_config override_toml=../config/config.toml network_config_toml=../config/network.toml +# example usage: make set_config override_toml=../config/config.toml .PHONY: set_config set_config: if [ -s "$(override_toml)" ]; then \ @@ -12,10 +12,6 @@ set_config: echo "No override config found, using default config"; \ echo > ./testconfig/override/.env; \ fi - if [ -s "$(network_config_toml)" ]; then \ - echo "Overriding network config with $(network_config_toml)"; \ - echo "export BASE64_NETWORK_CONFIG=$$(base64 -i $(network_config_toml))" >> ./testconfig/override/.env; \ - fi @echo "Checking for test secrets file in ~/.testsecrets..."; @if [ ! -f ~/.testsecrets ]; then \ @@ -71,3 +67,10 @@ test_smoke_ccip_default: set_config .PHONY: build_ccip_image build_ccip_image: docker build -f ../../core/chainlink.Dockerfile --build-arg COMMIT_SHA=$(git rev-parse HEAD) --build-arg CHAINLINK_USER=chainlink -t $(image):$(tag) ../../ + +# image: the name for the chainlink image being built, example: image=chainlink +# tag: the tag for the chainlink image being built, example: tag=latest +# example usage: make build_ccip_image image=chainlink-ccip tag=latest +.PHONY: build_ccip_debug_image +build_ccip_debug_image: + docker build -f ../../core/chainlink.debug.Dockerfile --build-arg COMMIT_SHA=$(git rev-parse HEAD) --build-arg CHAINLINK_USER=chainlink -t $(image):$(tag) ../../ diff --git a/integration-tests/ccip-tests/README.md b/integration-tests/ccip-tests/README.md index a4255928949..855cfcde699 100644 --- a/integration-tests/ccip-tests/README.md +++ b/integration-tests/ccip-tests/README.md @@ -34,6 +34,16 @@ For example, if you want to override the `Network` input in test and want to run export BASE64_CONFIG_OVERRIDE=$(base64 -i ./testconfig/override/mainnet.toml) ``` +3. Secrets - You also need to set some secrets. This is a mandatory step needed to run the tests. Please refer to [.testsecrets.example](./examples/.testsecrets.example) for the list of secrets and instruction how to set them up. + - The chainlink image is a required secret for all tests + - If you are running tests in live networks like testnet and mainnet, you need to set the secrets (rpc urls and private keys) for the respective networks. + +**Please note that the secrets should NOT be checked in to the repo and should be kept locally.** + +======= + export BASE64_CONFIG_OVERRIDE=$(base64 -i ./testconfig/override/mainnet.toml) + ``` + 3. Secrets - You also need to set some secrets. This is a mandatory step needed to run the tests. Please refer to [.testsecrets.example](./examples/.testsecrets.example) for the list of secrets and instruction how to set them up. - The chainlink image and tag are required secrets for all the tests. - If you are running tests in live networks like testnet and mainnet, you need to set the secrets (rpc urls and private keys) for the respective networks. @@ -50,6 +60,7 @@ You can run this command to ignore any changes to the file. git update-index --skip-worktree ``` +>>>>>>> v2.17.0 ## Running the Tests There are two ways to run the tests: diff --git a/integration-tests/ccip-tests/actions/ccip_helpers.go b/integration-tests/ccip-tests/actions/ccip_helpers.go index 492ee2fd0fa..56a06021db2 100644 --- a/integration-tests/ccip-tests/actions/ccip_helpers.go +++ b/integration-tests/ccip-tests/actions/ccip_helpers.go @@ -4,6 +4,7 @@ import ( "context" crypto_rand "crypto/rand" "encoding/base64" + "encoding/hex" "encoding/json" "fmt" "math/big" @@ -31,8 +32,6 @@ import ( "golang.org/x/exp/rand" "golang.org/x/sync/errgroup" - "github.com/smartcontractkit/chainlink-testing-framework/lib/utils/ptr" - chainselectors "github.com/smartcontractkit/chain-selectors" commonconfig "github.com/smartcontractkit/chainlink-common/pkg/config" @@ -44,6 +43,7 @@ import ( "github.com/smartcontractkit/chainlink-testing-framework/lib/k8s/pkg/helm/mockserver" "github.com/smartcontractkit/chainlink-testing-framework/lib/k8s/pkg/helm/reorg" "github.com/smartcontractkit/chainlink-testing-framework/lib/networks" + "github.com/smartcontractkit/chainlink-testing-framework/lib/utils/ptr" "github.com/smartcontractkit/chainlink/deployment/environment/nodeclient" "github.com/smartcontractkit/chainlink/integration-tests/ccip-tests/contracts" "github.com/smartcontractkit/chainlink/integration-tests/ccip-tests/contracts/laneconfig" @@ -61,6 +61,8 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/rmn_contract" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/router" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/token_pool" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/shared/generated/burn_mint_erc677" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/ccipexec" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/config" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/testhelpers" integrationtesthelpers "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/testhelpers/integration" @@ -87,6 +89,7 @@ const ( // DefaultResubscriptionTimeout denotes the max backoff duration for resubscription for various watch events // if the subscription keeps failing even after this duration, the test will fail DefaultResubscriptionTimeout = 2 * time.Hour + LBTCValidDestPoolData = "9b11457aa29d65e4940b67b7da16bd370d29bf6a3247a28066f93ac407b8b811" ) // TODO: These should be refactored along with the default CCIP test setup to use optional config functions @@ -175,6 +178,8 @@ type CCIPCommon struct { MulticallContract common.Address ExistingDeployment bool USDCMockDeployment *bool + LBTCMockDeployment *bool + LBTCDestPoolDataAs32Bytes *bool TokenMessenger *common.Address TokenTransmitter *contracts.TokenTransmitter IsConnectionRestoredRecently *atomic.Bool @@ -723,6 +728,10 @@ func (ccipModule *CCIPCommon) IsUSDCDeployment() bool { return pointer.GetBool(ccipModule.USDCMockDeployment) } +func (ccipModule *CCIPCommon) IsLBTCDeployment() bool { + return pointer.GetBool(ccipModule.LBTCMockDeployment) +} + func (ccipModule *CCIPCommon) WriteLaneConfig(conf *laneconfig.LaneConfig) { var btAddresses, btpAddresses []string priceAggrs := make(map[string]string) @@ -733,17 +742,16 @@ func (ccipModule *CCIPCommon) WriteLaneConfig(conf *laneconfig.LaneConfig) { for k, v := range ccipModule.PriceAggregators { priceAggrs[k.Hex()] = v.ContractAddress.Hex() } - conf.CommonContracts = laneconfig.CommonContracts{ - FeeToken: ccipModule.FeeToken.Address(), - BridgeTokens: btAddresses, - BridgeTokenPools: btpAddresses, - ARM: ccipModule.RMNContract.Hex(), - Router: ccipModule.Router.Address(), - PriceRegistry: ccipModule.PriceRegistry.Address(), - PriceAggregators: priceAggrs, - WrappedNative: ccipModule.WrappedNative.Hex(), - Multicall: ccipModule.MulticallContract.Hex(), - } + conf.CommonContracts.FeeToken = ccipModule.FeeToken.Address() + conf.CommonContracts.BridgeTokens = btAddresses + conf.CommonContracts.BridgeTokenPools = btpAddresses + conf.CommonContracts.ARM = ccipModule.RMNContract.Hex() + conf.CommonContracts.Router = ccipModule.Router.Address() + conf.CommonContracts.PriceRegistry = ccipModule.PriceRegistry.Address() + conf.CommonContracts.PriceAggregators = priceAggrs + conf.CommonContracts.WrappedNative = ccipModule.WrappedNative.Hex() + conf.CommonContracts.Multicall = ccipModule.MulticallContract.Hex() + if ccipModule.TokenAdminRegistry != nil { conf.CommonContracts.TokenAdminRegistry = ccipModule.TokenAdminRegistry.Address() } @@ -883,7 +891,6 @@ func (ccipModule *CCIPCommon) DeployContracts( // deploy bridge token. for i := len(ccipModule.BridgeTokens); i < noOfTokens; i++ { var token *contracts.ERC20Token - if len(tokenDeployerFns) != noOfTokens { if ccipModule.IsUSDCDeployment() && i == 0 { // if it's USDC deployment, we deploy the burn mint token 677 with decimal 6 and cast it to ERC20Token @@ -929,6 +936,16 @@ func (ccipModule *CCIPCommon) DeployContracts( if err != nil { return fmt.Errorf("granting minter role to token transmitter shouldn't fail %w", err) } + } else if ccipModule.IsLBTCDeployment() && i == 0 { + // if it's LBTC deployment, we deploy the burn mint token 677 with decimal 8 and cast it to ERC20Token + lbtcToken, err := ccipModule.tokenDeployer.DeployCustomBurnMintERC677Token("Lombard LBTC", "LBTC", uint8(8), new(big.Int).Mul(big.NewInt(1e6), big.NewInt(1e18))) + if err != nil { + return fmt.Errorf("deploying bridge lbtc token contract shouldn't fail %w", err) + } + token, err = ccipModule.tokenDeployer.NewERC20TokenContract(lbtcToken.ContractAddress) + if err != nil { + return fmt.Errorf("getting new bridge lbtc token contract shouldn't fail %w", err) + } } else { // otherwise we deploy link token and cast it to ERC20Token linkToken, err := ccipModule.tokenDeployer.DeployLinkTokenContract() @@ -993,6 +1010,43 @@ func (ccipModule *CCIPCommon) DeployContracts( } ccipModule.BridgeTokenPools = append(ccipModule.BridgeTokenPools, usdcPool) + } else if ccipModule.IsLBTCDeployment() && i == 0 { + if ccipModule.RMNContract == nil { + return errors.New("RMNContract is not initialized") + } + rmnContract := *ccipModule.RMNContract + + destPoolData, err := hex.DecodeString(LBTCValidDestPoolData) // valid 32 bytes should call attestation api + if err != nil { + return errors.Wrapf(err, "decoding dest pool data shouldn't fail") + } + if !pointer.GetBool(ccipModule.LBTCDestPoolDataAs32Bytes) { + // non 32 bytes data should not call attestation api and instead consider it as deposit payload. + // lombard has both attested and non-attested flow + destPoolData = []byte{0x12, 0x34, 0x56, 0x78} + } + lbtcPool, err := ccipModule.tokenDeployer.DeployMockLBTCTokenPoolContract(token.Address(), rmnContract, ccipModule.Router.Instance.Address(), destPoolData) + if err != nil { + return errors.Wrapf(err, "deploying mock lbtc bridge token pool shouldn't fail") + } + lbtcInstance, err := burn_mint_erc677.NewBurnMintERC677(token.ContractAddress, ccipModule.ChainClient.Backend()) + if err != nil { + return errors.Wrapf(err, "failed to get dest usdc token instance") + } + opts, err := ccipModule.tokenDeployer.Client().TransactionOpts(token.OwnerWallet) + if err != nil { + return errors.Wrapf(err, "failed to get transaction opts") + } + tx, err := lbtcInstance.GrantMintAndBurnRoles(opts, common.HexToAddress(lbtcPool.Address())) + if err != nil { + return errors.Wrapf(err, "granting minter role to owner shouldn't fail") + } + err = ccipModule.tokenDeployer.Client().ProcessTransaction(tx) + if err != nil { + return errors.Wrapf(err, "failed to process grant mint role") + } + + ccipModule.BridgeTokenPools = append(ccipModule.BridgeTokenPools, lbtcPool) } else { // deploy lock release token pool in case of non-usdc deployment btp, err := ccipModule.tokenDeployer.DeployLockReleaseTokenPoolContract(token.Address(), *ccipModule.RMNContract, ccipModule.Router.Instance.Address()) @@ -1291,6 +1345,8 @@ func DefaultCCIPModule( ExistingDeployment: pointer.GetBool(testGroupConf.ExistingDeployment), MulticallEnabled: pointer.GetBool(testGroupConf.MulticallInOneTx), USDCMockDeployment: testGroupConf.USDCMockDeployment, + LBTCMockDeployment: testGroupConf.LBTCMockDeployment, + LBTCDestPoolDataAs32Bytes: testGroupConf.LBTCDestPoolDataAs32Bytes, NoOfTokensNeedingDynamicPrice: pointer.GetInt(testGroupConf.TokenConfig.NoOfTokensWithDynamicPrice), poolFunds: testhelpers.Link(5), gasUpdateWatcherMu: &sync.Mutex{}, @@ -1652,7 +1708,10 @@ func (sourceCCIP *SourceCCIPModule) IsRequestTriggeredWithinTimeframe(timeframe // IsPastRequestTriggeredWithinTimeframe determines the average block time and calculates the block numbers // within the specified timeframe. It then uses FilterCCIPSendRequested to identify the past events. -func (sourceCCIP *SourceCCIPModule) IsPastRequestTriggeredWithinTimeframe(ctx context.Context, timeframe *commonconfig.Duration) (*time.Time, error) { +func (sourceCCIP *SourceCCIPModule) IsPastRequestTriggeredWithinTimeframe( + ctx context.Context, + timeframe *commonconfig.Duration, +) (*types.Log, error) { if timeframe == nil { return nil, nil } @@ -1683,17 +1742,21 @@ func (sourceCCIP *SourceCCIPModule) IsPastRequestTriggeredWithinTimeframe(ctx co return nil, fmt.Errorf("error while filtering CCIP send requested starting block number: %d. Error: %w", filterFromBlock, err) } defer func() { - _ = iterator.Close() + iterErr := iterator.Close() + if iterErr != nil { + sourceCCIP.Common.Logger.Error().Err(iterErr).Msg("Error closing iterator") + } }() - if iterator.Next() { - hdr, err := sourceCCIP.Common.ChainClient.HeaderByNumber(context.Background(), new(big.Int).SetUint64(iterator.Event.Raw.BlockNumber)) - if err != nil { - return nil, fmt.Errorf("error getting header for block: %d, Error: %w", iterator.Event.Raw.BlockNumber, err) + lastBlockNumber := uint64(0) + var latestEvent *types.Log + for iterator.Next() { + blockNum := iterator.Event.Raw.BlockNumber + if blockNum > lastBlockNumber { + lastBlockNumber = blockNum + latestEvent = &iterator.Event.Raw } - return pointer.ToTime(hdr.Timestamp), nil } - - return nil, nil + return latestEvent, nil } func (sourceCCIP *SourceCCIPModule) AssertEventCCIPSendRequested( @@ -3211,7 +3274,7 @@ func (lane *CCIPLane) ValidateRequestByTxHash(txHash common.Hash, opts validatio reqStats = append(reqStats, req.RequestStat) } - if opts.phaseExpectedToFail == testreporters.CCIPSendRe && opts.timeout != 0 { + if (opts.phaseExpectedToFail == testreporters.CCIPSendRe || opts.expectAnyPhaseToFail) && opts.timeout != 0 { timeout = opts.timeout } msgLogs, ccipSendReqGenAt, err := lane.Source.AssertEventCCIPSendRequested( @@ -3239,6 +3302,10 @@ func (lane *CCIPLane) ValidateRequestByTxHash(txHash common.Hash, opts validatio return fmt.Errorf("could not find request stat for seq number %d", seqNumber) } + if opts.expectAnyPhaseToFail && opts.timeout != 0 { + timeout = opts.timeout + } + if opts.phaseExpectedToFail == testreporters.Commit && opts.timeout != 0 { timeout = opts.timeout } @@ -3278,6 +3345,10 @@ func (lane *CCIPLane) ValidateRequestByTxHash(txHash common.Hash, opts validatio return phaseErr } } + if opts.expectAnyPhaseToFail { + return errors.New("expected at least any one phase to fail but no phase got failed") + } + return nil } @@ -3727,6 +3798,21 @@ func (lane *CCIPLane) DeployNewCCIPLane( AttestationAPITimeoutSeconds: 5, } } + if !lane.Source.Common.ExistingDeployment && lane.Source.Common.IsLBTCDeployment() { + api := "" + if killgrave != nil { + api = killgrave.InternalEndpoint + } + if env.MockServer != nil { + api = env.MockServer.Config.ClusterURL + } + // Only one LBTC allowed per chain + jobParams.LBTCConfig = &config.LBTCConfig{ + SourceTokenAddress: common.HexToAddress(lane.Source.Common.BridgeTokens[0].Address()), + AttestationAPI: api, + AttestationAPITimeoutSeconds: 5, + } + } if !bootstrapAdded.Load() { bootstrapAdded.Store(true) err := CreateBootstrapJob(jobParams, bootstrapCommit, bootstrapExec) @@ -3854,12 +3940,13 @@ func SetOCR2Config( if len(execNodes) > 0 { nodes = execNodes } + + // Use out of order batching strategy if we expect to be sending out of order messages + batchingStrategyID := ccipexec.BestEffortBatchingStrategyID + if pointer.GetBool(testConf.AllowOutOfOrder) { + batchingStrategyID = ccipexec.ZKOverflowBatchingStrategyID + } if destCCIP.OffRamp != nil { - // Use out of order batching strategy if we expect to be sending out of order messages - batchingStrategyID := uint32(0) - if pointer.GetBool(testConf.AllowOutOfOrder) { - batchingStrategyID = uint32(1) - } execOffchainCfg, err := contracts.NewExecOffchainConfig( 1, BatchGasLimit, @@ -4121,6 +4208,7 @@ func (c *CCIPTestEnv) ConnectToExistingNodes(envConfig *testconfig.Common) error if err != nil { return fmt.Errorf("failed to create chainlink client: %w for node %d config %v", err, i+1, cfg) } + clClient.ChainlinkClient.WithRetryCount(3) c.CLNodes = append(c.CLNodes, clClient) c.nodeMutexes = append(c.nodeMutexes, &sync.Mutex{}) } @@ -4134,7 +4222,7 @@ func (c *CCIPTestEnv) ConnectToDeployedNodes() error { for _, chainlinkNode := range c.LocalCluster.ClCluster.Nodes { c.nodeMutexes = append(c.nodeMutexes, &sync.Mutex{}) c.CLNodes = append(c.CLNodes, &nodeclient.ChainlinkK8sClient{ - ChainlinkClient: chainlinkNode.API, + ChainlinkClient: chainlinkNode.API.WithRetryCount(3), }) } } else { @@ -4422,6 +4510,48 @@ func SetMockServerWithUSDCAttestation( return nil } +// SetMockServerWithLBTCAttestation responds with a mock attestation for any msgHash +// The path is set with regex to match any path that starts with /v1/attestations +func SetMockServerWithLBTCAttestation( + killGrave *ctftestenv.Killgrave, + mockserver *ctfClient.MockserverClient, +) error { + path := "/bridge/v1/deposits/getByHash" + type attestation struct { + Status string `json:"status"` + Attestation string `json:"attestation"` + MessageHash string `json:"message_hash"` + } + response := struct { + Attestations []attestation `json:"attestations"` + }{ + Attestations: []attestation{ + { + MessageHash: "0x" + LBTCValidDestPoolData, // sample hash + Status: "NOTARIZATION_STATUS_SESSION_APPROVED", + Attestation: "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000e45c70a5050000000000000000000000000000000000000000000000000000000000aa36a7000000000000000000000000845f8e3c214d8d0e4d83fc094f302aa26a12a0bc0000000000000000000000000000000000000000000000000000000000014a34000000000000000000000000845f8e3c214d8d0e4d83fc094f302aa26a12a0bc00000000000000000000000062f10ce5b727edf787ea45776bd050308a61150800000000000000000000000000000000000000000000000000000000000003e60000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000040277eeafba008d767c2636d9428f2ebb13ab29ac70337f4fc34b0f5606767cae546f9be3f12160de6d142e5b3c1c3ebd0bf4298662b32b597d0cc5970c7742fc10000000000000000000000000000000000000000000000000000000000000040bbcd60ecc9e06f2effe7c94161219498a1eb435b419387adadb86ec9a52dfb066ce027532517df7216404049d193a25b85c35edfa3e7c5aa4757bfe84887a3980000000000000000000000000000000000000000000000000000000000000040da4a6dc619b5ca2349783cabecc4efdbc910090d3e234d7b8d0430165f8fae532f9a965ceb85c18bb92e059adefa7ce5835850a705761ab9e026d2db4a13ef9a", + }, + }, + } + if killGrave == nil && mockserver == nil { + return errors.New("both killgrave and mockserver are nil") + } + log.Info().Str("path", path).Msg("setting attestation-api response for any msgHash") + if killGrave != nil { + err := killGrave.SetAnyValueResponse(path, []string{http.MethodPost}, response) + if err != nil { + return fmt.Errorf("failed to set killgrave server value: %w", err) + } + } + if mockserver != nil { + err := mockserver.SetAnyValueResponse(path, response) + if err != nil { + return fmt.Errorf("failed to set mockserver value: %w URL = %s", err, fmt.Sprintf("%s/%s/.*", mockserver.LocalURL(), path)) + } + } + return nil +} + // SetMockserverWithTokenPriceValue sets the mock responses in mockserver that are read by chainlink nodes // to simulate different price feed value. // it keeps updating the response every 15 seconds to simulate price feed updates diff --git a/integration-tests/ccip-tests/contracts/contract_deployer.go b/integration-tests/ccip-tests/contracts/contract_deployer.go index 0aaec8f66a0..f564ab6244c 100644 --- a/integration-tests/ccip-tests/contracts/contract_deployer.go +++ b/integration-tests/ccip-tests/contracts/contract_deployer.go @@ -21,9 +21,8 @@ import ( ocrconfighelper2 "github.com/smartcontractkit/libocr/offchainreporting2/confighelper" ocrtypes2 "github.com/smartcontractkit/libocr/offchainreporting2/types" - "github.com/smartcontractkit/chainlink-testing-framework/lib/blockchain" - "github.com/smartcontractkit/chainlink-common/pkg/config" + "github.com/smartcontractkit/chainlink-testing-framework/lib/blockchain" "github.com/smartcontractkit/chainlink/deployment/environment/nodeclient" "github.com/smartcontractkit/chainlink/integration-tests/contracts" @@ -37,6 +36,7 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/lock_release_token_pool" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/lock_release_token_pool_1_4_0" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/maybe_revert_message_receiver" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/mock_lbtc_token_pool" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/mock_rmn_contract" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/mock_usdc_token_messenger" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/mock_usdc_token_transmitter" @@ -241,6 +241,43 @@ func (e *CCIPContractsDeployer) DeployBurnMintERC677(ownerMintingAmount *big.Int return token, err } +func (e *CCIPContractsDeployer) DeployCustomBurnMintERC677Token(name, symbol string, decimals uint8, ownerMintingAmount *big.Int) (*ERC677Token, error) { + address, _, instance, err := e.evmClient.DeployContract("Burn Mint ERC 677", func( + auth *bind.TransactOpts, + _ bind.ContractBackend, + ) (common.Address, *types.Transaction, interface{}, error) { + return burn_mint_erc677.DeployBurnMintERC677(auth, wrappers.MustNewWrappedContractBackend(e.evmClient, nil), name, symbol, decimals, new(big.Int).Mul(big.NewInt(1e18), big.NewInt(1e9))) + }) + if err != nil { + return nil, err + } + + token := &ERC677Token{ + client: e.evmClient, + logger: e.logger, + ContractAddress: *address, + instance: instance.(*burn_mint_erc677.BurnMintERC677), + OwnerAddress: common.HexToAddress(e.evmClient.GetDefaultWallet().Address()), + OwnerWallet: e.evmClient.GetDefaultWallet(), + } + if ownerMintingAmount != nil { + // grant minter role to owner and mint tokens + err = token.GrantMintRole(common.HexToAddress(e.evmClient.GetDefaultWallet().Address())) + if err != nil { + return token, fmt.Errorf("granting minter role to owner shouldn't fail %w", err) + } + err = e.evmClient.WaitForEvents() + if err != nil { + return token, fmt.Errorf("error in waiting for granting mint role %w", err) + } + err = token.Mint(common.HexToAddress(e.evmClient.GetDefaultWallet().Address()), ownerMintingAmount) + if err != nil { + return token, fmt.Errorf("minting tokens shouldn't fail %w", err) + } + } + return token, err +} + func (e *CCIPContractsDeployer) DeployERC20TokenContract(deployerFn blockchain.ContractDeployer) (*ERC20Token, error) { address, _, _, err := e.evmClient.DeployContract("Custom ERC20 Token", deployerFn) if err != nil { @@ -488,6 +525,81 @@ func (e *CCIPContractsDeployer) DeployUSDCTokenPoolContract(tokenAddr string, to } } +func (e *CCIPContractsDeployer) NewMockLBTCTokenPoolContract(addr common.Address) ( + *TokenPool, + error, +) { + version := VersionMap[TokenPoolContract] + e.logger.Info().Str("Version", version.String()).Msg("New Mock LBTC Token Pool") + switch version { + case Latest: + pool, err := mock_lbtc_token_pool.NewMockLBTCTokenPool(addr, wrappers.MustNewWrappedContractBackend(e.evmClient, nil)) + + if err != nil { + return nil, err + } + e.logger.Info(). + Str("Contract Address", addr.Hex()). + Str("Contract Name", "Mock LBTC Token Pool"). + Str("From", e.evmClient.GetDefaultWallet().Address()). + Str("Network Name", e.evmClient.GetNetworkConfig().Name). + Msg("New contract") + poolInterface, err := token_pool.NewTokenPool(addr, wrappers.MustNewWrappedContractBackend(e.evmClient, nil)) + if err != nil { + return nil, err + } + return &TokenPool{ + client: e.evmClient, + logger: e.logger, + Instance: &TokenPoolWrapper{ + Latest: &LatestPool{ + PoolInterface: poolInterface, + MockLBTCPool: pool, + }, + }, + EthAddress: addr, + OwnerAddress: common.HexToAddress(e.evmClient.GetDefaultWallet().Address()), + OwnerWallet: e.evmClient.GetDefaultWallet(), + }, err + default: + return nil, fmt.Errorf("version not supported: %s", version) + } +} + +func (e *CCIPContractsDeployer) DeployMockLBTCTokenPoolContract(tokenAddr string, rmnProxy common.Address, router common.Address, destPoolData []byte) ( + *TokenPool, + error, +) { + e.logger.Println("In DeployMockLBTCTokenPoolContract") + version := VersionMap[TokenPoolContract] + e.logger.Debug().Str("Token", tokenAddr).Msg("Deploying Mock LBTC token pool") + token := common.HexToAddress(tokenAddr) + switch version { + case Latest: + address, _, _, err := e.evmClient.DeployContract("Mock LBTC Token Pool", func( + auth *bind.TransactOpts, + _ bind.ContractBackend, + ) (common.Address, *types.Transaction, interface{}, error) { + return mock_lbtc_token_pool.DeployMockLBTCTokenPool( + auth, + wrappers.MustNewWrappedContractBackend(e.evmClient, nil), + token, + []common.Address{}, + rmnProxy, + router, + destPoolData, + ) + }) + + if err != nil { + return nil, err + } + return e.NewMockLBTCTokenPoolContract(*address) + default: + return nil, fmt.Errorf("version not supported: %s", version) + } +} + func (e *CCIPContractsDeployer) DeployLockReleaseTokenPoolContract(tokenAddr string, rmnProxy common.Address, router common.Address) ( *TokenPool, error, @@ -505,7 +617,7 @@ func (e *CCIPContractsDeployer) DeployLockReleaseTokenPoolContract(tokenAddr str auth, wrappers.MustNewWrappedContractBackend(e.evmClient, nil), token, - 18, + testhelpers.TokenDecimals, []common.Address{}, rmnProxy, true, diff --git a/integration-tests/ccip-tests/contracts/contract_models.go b/integration-tests/ccip-tests/contracts/contract_models.go index 86aafefce62..01245daa966 100644 --- a/integration-tests/ccip-tests/contracts/contract_models.go +++ b/integration-tests/ccip-tests/contracts/contract_models.go @@ -18,6 +18,7 @@ import ( "golang.org/x/exp/rand" "github.com/smartcontractkit/chainlink-testing-framework/lib/blockchain" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/mock_lbtc_token_pool" "github.com/smartcontractkit/chainlink/integration-tests/wrappers" @@ -404,6 +405,7 @@ type LatestPool struct { PoolInterface *token_pool.TokenPool LockReleasePool *lock_release_token_pool.LockReleaseTokenPool USDCPool *usdc_token_pool.USDCTokenPool + MockLBTCPool *mock_lbtc_token_pool.MockLBTCTokenPool } type V1_4_0Pool struct { @@ -485,6 +487,7 @@ func (w TokenPoolWrapper) ApplyChainUpdates(opts *bind.TransactOpts, update []to for i, u := range update { V1_4_0Updates[i] = token_pool_1_4_0.TokenPoolChainUpdate{ RemoteChainSelector: u.RemoteChainSelector, + Allowed: true, InboundRateLimiterConfig: token_pool_1_4_0.RateLimiterConfig{ IsEnabled: u.InboundRateLimiterConfig.IsEnabled, Capacity: u.InboundRateLimiterConfig.Capacity, diff --git a/integration-tests/ccip-tests/load/ccip_loadgen.go b/integration-tests/ccip-tests/load/ccip_loadgen.go index d562cce88b2..198db0ef94b 100644 --- a/integration-tests/ccip-tests/load/ccip_loadgen.go +++ b/integration-tests/ccip-tests/load/ccip_loadgen.go @@ -10,28 +10,27 @@ import ( "testing" "time" - "github.com/smartcontractkit/chainlink-testing-framework/lib/utils/testcontext" - "github.com/AlekSi/pointer" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" "github.com/rs/zerolog" - chain_selectors "github.com/smartcontractkit/chain-selectors" "github.com/stretchr/testify/require" "go.uber.org/atomic" + chain_selectors "github.com/smartcontractkit/chain-selectors" + + "github.com/smartcontractkit/chainlink-testing-framework/lib/utils/testcontext" "github.com/smartcontractkit/chainlink-testing-framework/wasp" "github.com/smartcontractkit/chainlink-common/pkg/config" + "github.com/smartcontractkit/chainlink/integration-tests/ccip-tests/actions" "github.com/smartcontractkit/chainlink/integration-tests/ccip-tests/contracts" "github.com/smartcontractkit/chainlink/integration-tests/ccip-tests/testconfig" + "github.com/smartcontractkit/chainlink/integration-tests/ccip-tests/testreporters" "github.com/smartcontractkit/chainlink/v2/core/chains/evm/utils" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/router" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/testhelpers" - - "github.com/smartcontractkit/chainlink/integration-tests/ccip-tests/actions" - "github.com/smartcontractkit/chainlink/integration-tests/ccip-tests/testreporters" ) // CCIPLaneOptimized is a light-weight version of CCIPLane, It only contains elements which are used during load triggering and validation @@ -198,6 +197,7 @@ func (c *CCIPE2ELoad) CCIPMsg() (router.ClientEVM2AnyMessage, *testreporters.Req extraArgs []byte err error ) + // v1.5.0 and later starts using V2 extra args matchErr := contracts.MatchContractVersionsOrAbove(map[contracts.Name]contracts.Version{ contracts.OnRampContract: contracts.V1_5_0, }) @@ -225,13 +225,20 @@ func (c *CCIPE2ELoad) Call(_ *wasp.Generator) *wasp.Response { res := &wasp.Response{} sourceCCIP := c.Lane.Source var recentRequestFoundAt *time.Time + var latestEvent *types.Log var err error // Use IsPastRequestTriggeredWithinTimeframe to check for any historical CCIP send request events // within the specified timeframe for the first message. Subsequently, use the watcher method to monitor // and detect any new events as they occur. if c.CurrentMsgSerialNo.Load() == int64(1) { - recentRequestFoundAt, err = sourceCCIP.IsPastRequestTriggeredWithinTimeframe(testcontext.Get(c.t), c.SkipRequestIfAnotherRequestTriggeredWithin) + latestEvent, err = sourceCCIP.IsPastRequestTriggeredWithinTimeframe(testcontext.Get(c.t), c.SkipRequestIfAnotherRequestTriggeredWithin) require.NoError(c.t, err, "error while filtering past requests") + if latestEvent != nil { + //nolint:gosec // safe to cast + hdr, err := sourceCCIP.Common.ChainClient.HeaderByNumber(context.Background(), big.NewInt(int64(latestEvent.BlockNumber))) + require.NoError(c.t, err, "error while getting header by block number") + recentRequestFoundAt = pointer.ToTime(hdr.Timestamp) + } } else { recentRequestFoundAt = sourceCCIP.IsRequestTriggeredWithinTimeframe(c.SkipRequestIfAnotherRequestTriggeredWithin) } diff --git a/integration-tests/ccip-tests/load/ccip_multicall_loadgen.go b/integration-tests/ccip-tests/load/ccip_multicall_loadgen.go index 04fcffaa4b1..39e5388244e 100644 --- a/integration-tests/ccip-tests/load/ccip_multicall_loadgen.go +++ b/integration-tests/ccip-tests/load/ccip_multicall_loadgen.go @@ -91,7 +91,7 @@ func NewMultiCallLoadGenerator(testCfg *testsetups.CCIPTestConfig, lanes []*acti testCfg.Test, lane, testCfg.TestGroupInput.PhaseTimeout.Duration(), 100000, testCfg.TestGroupInput.LoadProfile.MsgProfile, 0, - testCfg.TestGroupInput.LoadProfile.SkipRequestIfAnotherRequestTriggeredWithin, + testCfg.TestGroupInput.SkipRequestIfAnotherRequestTriggeredWithin, ) ccipLoad.BeforeAllCall() m.E2ELoads[fmt.Sprintf("%s-%s", lane.SourceNetworkName, lane.DestNetworkName)] = ccipLoad diff --git a/integration-tests/ccip-tests/load/helper.go b/integration-tests/ccip-tests/load/helper.go index 34860c8871c..f89aadc2483 100644 --- a/integration-tests/ccip-tests/load/helper.go +++ b/integration-tests/ccip-tests/load/helper.go @@ -112,8 +112,15 @@ func (l *LoadArgs) scheduleForDest(destNetworkName string) []*wasp.Segment { // if found, use that frequency for the destination network // otherwise, use the default frequency if l.TestCfg.TestGroupInput.LoadProfile.FrequencyByDestination != nil { + l.lggr.Debug(). + Interface("FrequencyByDestination", l.TestCfg.TestGroupInput.LoadProfile.FrequencyByDestination). + Msg("LoadProfile provided") for networkName, freq := range l.TestCfg.TestGroupInput.LoadProfile.FrequencyByDestination { - if strings.Contains(destNetworkName, networkName) { + l.lggr.Debug().Str("Destination", destNetworkName).Str("NetworkName", networkName).Msg("Checking frequency for destination") + if strings.EqualFold(destNetworkName, networkName) { + l.lggr.Info().Str("Destination", destNetworkName). + Ints64("RequestPerUnitTime", freq.RequestPerUnitTime). + Msg("Using frequency for destination") return WaspSchedule( freq.RequestPerUnitTime, l.TestCfg.TestGroupInput.LoadProfile.TestDuration, @@ -269,7 +276,7 @@ func (l *LoadArgs) TriggerLoadByLane() { ccipLoad := NewCCIPLoad( l.TestCfg.Test, lane, l.TestCfg.TestGroupInput.PhaseTimeout.Duration(), 100000, l.TestCfg.TestGroupInput.LoadProfile.MsgProfile, sendMaxData, - l.TestCfg.TestGroupInput.LoadProfile.SkipRequestIfAnotherRequestTriggeredWithin, + l.TestCfg.TestGroupInput.SkipRequestIfAnotherRequestTriggeredWithin, ) ccipLoad.BeforeAllCall() // if it's not multicall set the tokens to nil to free up some space, diff --git a/integration-tests/ccip-tests/smoke/ccip_test.go b/integration-tests/ccip-tests/smoke/ccip_test.go index a74d404db18..344b920f852 100644 --- a/integration-tests/ccip-tests/smoke/ccip_test.go +++ b/integration-tests/ccip-tests/smoke/ccip_test.go @@ -4,16 +4,17 @@ import ( "fmt" "math" "math/big" + "strings" "testing" "time" - "github.com/rs/zerolog" - "github.com/stretchr/testify/assert" - "github.com/AlekSi/pointer" - "github.com/stretchr/testify/require" + "github.com/ethereum/go-ethereum/core/types" + "github.com/rs/zerolog" + "github.com/smartcontractkit/chainlink-common/pkg/config" "github.com/smartcontractkit/chainlink-testing-framework/lib/logging" + "github.com/smartcontractkit/chainlink-testing-framework/lib/utils/osutil" "github.com/smartcontractkit/chainlink-testing-framework/lib/utils/ptr" "github.com/smartcontractkit/chainlink/integration-tests/ccip-tests/utils" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_onramp" @@ -21,10 +22,14 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/token_pool" "github.com/smartcontractkit/chainlink/integration-tests/ccip-tests/actions" + "github.com/smartcontractkit/chainlink/integration-tests/ccip-tests/testsetups" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/smartcontractkit/chainlink/integration-tests/ccip-tests/contracts" "github.com/smartcontractkit/chainlink/integration-tests/ccip-tests/testconfig" "github.com/smartcontractkit/chainlink/integration-tests/ccip-tests/testreporters" - "github.com/smartcontractkit/chainlink/integration-tests/ccip-tests/testsetups" ) type testDefinition struct { @@ -245,7 +250,10 @@ func TestSmokeCCIPRateLimit(t *testing.T) { tc.lane.Source.Common.ChainClient.GetDefaultWallet(), src.Common.Router.Address(), src.TransferAmount[0]), ) require.NoError(t, tc.lane.Source.Common.ChainClient.WaitForEvents()) - failedTx, _, _, err := tc.lane.Source.SendRequest(tc.lane.Dest.ReceiverDapp.EthAddress, big.NewInt(actions.DefaultDestinationGasLimit)) + failedTx, _, _, err := tc.lane.Source.SendRequest( + tc.lane.Dest.ReceiverDapp.EthAddress, + big.NewInt(actions.DefaultDestinationGasLimit), + ) require.NoError(t, err) require.Error(t, tc.lane.Source.Common.ChainClient.WaitForEvents()) errReason, v, err := tc.lane.Source.Common.ChainClient.RevertReasonFromTx(failedTx, evm_2_evm_onramp.EVM2EVMOnRampABI) @@ -886,7 +894,7 @@ func TestSmokeCCIPReorgBelowFinality(t *testing.T) { // Test creates above finality reorg at destination and // expects ccip transactions in-flight and the one initiated after reorg -// doesn't go through and verifies f+1 nodes is able to detect reorg. +// doesn't go through and verifies f+1 nodes are able to detect reorg. // Note: LogPollInterval interval is set as 1s to detect the reorg immediately func TestSmokeCCIPReorgAboveFinalityAtDestination(t *testing.T) { utils.SkipFlakey(t, "https://smartcontract-it.atlassian.net/browse/CCIP-4401") @@ -898,7 +906,7 @@ func TestSmokeCCIPReorgAboveFinalityAtDestination(t *testing.T) { // Test creates above finality reorg at destination and // expects ccip transactions in-flight doesn't go through, the transaction initiated after reorg -// shouldn't even get initiated and verifies f+1 nodes is able to detect reorg. +// shouldn't even get initiated and verifies f+1 nodes are able to detect reorg. // Note: LogPollInterval interval is set as 1s to detect the reorg immediately func TestSmokeCCIPReorgAboveFinalityAtSource(t *testing.T) { utils.SkipFlakey(t, "https://smartcontract-it.atlassian.net/browse/CCIP-4401") @@ -908,6 +916,123 @@ func TestSmokeCCIPReorgAboveFinalityAtSource(t *testing.T) { }) } +// TestSmokeCCIPForGivenNetworkPairs is designed specifically for scheduled mainnet testing. This test checks for recent +// transaction and skip the lanes accordingly. This test also has capability to take override input on network pairs and phase timeout. +func TestSmokeCCIPForGivenNetworkPairs(t *testing.T) { + t.Parallel() + log := logging.GetTestLogger(t) + TestCfg := testsetups.NewCCIPTestConfig(t, log, testconfig.Smoke) + // override network pairs + var temp []testsetups.NetworkPair + overrideNetworkPairs, err := osutil.GetEnv("OVERRIDE_NETWORK_PAIRS") + require.NoError(t, err, "Error getting OVERRIDE_NETWORK_PAIRS environment variable") + if overrideNetworkPairs != "" { + networkPairs := strings.Split(overrideNetworkPairs, ";") + for _, networkPair := range networkPairs { + // check for any malformed inputs + if !strings.Contains(networkPair, ",") || len(strings.Split(networkPair, ",")) != 2 { + log.Error().Msgf("malformed OVERRIDE_NETWORK_PAIRS environment variable for network pair: %s ", networkPair) + return + } + networkPair = strings.ToUpper(strings.ReplaceAll(networkPair, "_", " ")) + for _, network := range TestCfg.NetworkPairs { + if strings.Contains(networkPair, strings.ToUpper(network.NetworkA.Name)) && strings.Contains(networkPair, strings.ToUpper(network.NetworkB.Name)) { + temp = append(temp, network) + break + } + } + } + log.Info().Int("Pairs", len(temp)).Msg("Number of lanes overridden in the test") + log.Info().Interface("Lanes", networkPairs).Msg("Lanes under test") + TestCfg.NetworkPairs = temp + } + + // phase timeout override + phaseTimeout, err := osutil.GetEnv("OVERRIDE_PHASE_TIMEOUT") + require.NoError(t, err, "Error getting OVERRIDE_PHASE_TIMEOUT environment variable") + if phaseTimeout != "" { + configDuration, err := config.ParseDuration(phaseTimeout) + require.NoError(t, err, "Error parsing phase timeout value") + TestCfg.TestGroupInput.PhaseTimeout = &configDuration + log.Info().Float64("Timeout in minutes", configDuration.Duration().Minutes()).Msg("Phase timeout is overridden") + } + + gasLimit := big.NewInt(*TestCfg.TestGroupInput.MsgDetails.DestGasLimit) + setUpOutput := testsetups.CCIPDefaultTestSetUp(t, &log, "smoke-ccip", nil, TestCfg) + if len(setUpOutput.Lanes) == 0 { + log.Error().Msg("No lanes found") + return + } + + t.Cleanup(func() { + // If we are running a test that is a token transfer, we need to verify the balance. + // skip the balance check for existing deployment, there can be multiple external requests in progress for existing deployments + // other than token transfer initiated by the test, which can affect the balance check + // therefore we check the balance only for the ccip environment created by the test + if TestCfg.TestGroupInput.MsgDetails.IsTokenTransfer() && + !pointer.GetBool(TestCfg.TestGroupInput.USDCMockDeployment) && + !pointer.GetBool(TestCfg.TestGroupInput.ExistingDeployment) { + setUpOutput.Balance.Verify(t) + } + require.NoError(t, setUpOutput.TearDown(), "error in tear down step") + }) + + var tests []testDefinition + lookBackDuration := TestCfg.TestGroupInput.SkipRequestIfAnotherRequestTriggeredWithin + var recentTxFound *types.Log + + addLanesToTest := func(lane *actions.CCIPLane) { + // Create test definitions for given lane if no previous request has been triggered within the specified timeframe. + // By default, the timeframe is set to nil. To define a timeframe, assign a duration to the variable + // SkipRequestIfAnotherRequestTriggeredWithin. + if lookBackDuration != nil { + recentTxFound, err = lane.Source.IsPastRequestTriggeredWithinTimeframe(lane.Context, lookBackDuration) + require.NoError(t, err, "error while finding recent request for lane network %s to network %s", + lane.SourceNetworkName, lane.DestNetworkName) + } + if recentTxFound == nil { + tests = append(tests, testDefinition{ + testName: fmt.Sprintf("CCIP message transfer from network %s to network %s", + lane.SourceNetworkName, lane.DestNetworkName), + lane: lane, + }) + } else { + log.Info(). + Str("TX", recentTxFound.TxHash.Hex()). + Uint64("Block Number", recentTxFound.BlockNumber). + Str("Source", lane.SourceNetworkName). + Str("Dest", lane.DestNetworkName). + Msgf("Lane Skipped. Recent request found within %v minutes.", lookBackDuration.Duration().Minutes()) + } + } + for _, lane := range setUpOutput.Lanes { + addLanesToTest(lane.ForwardLane) + if lane.ReverseLane != nil { + recentTxFound = nil + addLanesToTest(lane.ReverseLane) + } + } + + // Execute tests. + log.Info().Int("Total Lanes", len(tests)).Msg("Starting CCIP test") + for _, test := range tests { + tc := test + t.Run(tc.testName, func(t *testing.T) { + t.Parallel() + tc.lane.Test = t + log.Info(). + Str("Source", tc.lane.SourceNetworkName). + Str("Destination", tc.lane.DestNetworkName). + Msgf("Starting lane %s -> %s", tc.lane.SourceNetworkName, tc.lane.DestNetworkName) + + tc.lane.RecordStateBeforeTransfer() + err = tc.lane.SendRequests(1, gasLimit) + require.NoError(t, err, "error sending requests") + tc.lane.ValidateRequests() + }) + } +} + // performAboveFinalityReorgAndValidate is to perform the above finality reorg test func performAboveFinalityReorgAndValidate(t *testing.T, network string) { t.Helper() @@ -952,7 +1077,7 @@ func performAboveFinalityReorgAndValidate(t *testing.T, network string) { require.NoError(t, err) for _, d := range resp.Data { if d.Attributes.Name == logPollerName && d.Attributes.Output == "finality violated" && d.Attributes.Status == "failing" { - log.Debug().Msg("Finality violated is detected by node") + log.Debug().Str("Node", node.ChainlinkClient.URL()).Msg("Finality violated is detected by node") nodesDetectedViolation[node.ChainlinkClient.URL()] = true } } diff --git a/integration-tests/ccip-tests/testconfig/README.md b/integration-tests/ccip-tests/testconfig/README.md index d614ed62ea4..9a9fa5129b1 100644 --- a/integration-tests/ccip-tests/testconfig/README.md +++ b/integration-tests/ccip-tests/testconfig/README.md @@ -10,7 +10,7 @@ The test config is read in following order: - The config mentioned in this file will override the default config. - Example override file - [override.toml.example](./examples/override.toml.example) - If there are sensitive details like private keys, credentials in test config, they can be specified in a separate dotenv file as env vars - - The `~/.testsecrets` file in home directory is automatically loaded and should have all test secrets as env vars + - The `~/.testsecrets` file in home directory is automatically loaded and should have all test secrets as env vars. Learn more about it [here](https://github.com/smartcontractkit/chainlink-testing-framework/blob/main/config/README.md#test-secrets) - Example secret file - [.testsecrets.example](./examples/.testsecrets.example) ## CCIP.ContractVersions @@ -110,7 +110,7 @@ Or, DataFile = '' ``` -## CCIP.Env +## CCIP.Env Specifies the environment details for the test to be run on. Mandatory fields are: @@ -119,14 +119,7 @@ Mandatory fields are: - **NewCLCluster**: [CCIP.Env.NewCLCluster](#ccipenvnewclcluster) - This is mandatory if the test needs to deploy Chainlink nodes. - **ExistingCLCluster**: [CCIP.Env.ExistingCLCluster](#ccipenvexistingclcluster) - This is mandatory if the test needs to run on existing Chainlink nodes to deploy ccip jobs. -Test needs network/chain details to be set through configuration. This configuration is mandatory for running the tests. -you have option to set the network details in two ways: - -1. Using [CCIP.Env.Networks](#ccipenvnetworks) -2. Using a separate network config file - - - refer to the example - [network_config.toml.example](./examples/network_config.toml.example) - - once all necessary values are set, encode the toml file content in base64 format, - - set the base64'ed string content in `BASE64_NETWORK_CONFIG` environment variable. +Test needs network/chain details to be set through configuration. Set network urls in ~/.testsecrets [see docs](https://github.com/smartcontractkit/chainlink-testing-framework/blob/main/config/README.md#test-secrets). ### CCIP.Env.Networks @@ -146,7 +139,7 @@ If the network is not present in known_networks, then the network details can be #### CCIP.Env.Network.EVMNetworks -Specifies the network config to be used while creating blockchain EVMClient for test. +Specifies the network config to be used while creating blockchain EVMClient for test. It is a map of network name to EVMNetworks where key is network name specified under `CCIP.Env.Networks.selected_networks` and value is `EVMNetwork`. The EVMNetwork is imported from [EVMNetwork](https://github.com/smartcontractkit/chainlink-testing-framework/blob/main/blockchain/config.go#L43) in chainlink-testing-framework. @@ -638,6 +631,13 @@ Specifies the OCR parameters for the execute job. This is only valid if the test Specifies the value for the `InflightExpiry` in commit job's offchain config. This is only valid if the test is not run on [existing deployments](#ccipgroupstestgroupexistingdeployment). +### CCIP.Groups.[testgroup].SkipRequestIfAnotherRequestTriggeredWithin + +If there is CCIP Send requested event present within this duration, the test will skip sending another +request during load run or avoid sending request in smoke test in that lane. For Example, +if `SkipRequestIfAnotherRequestTriggeredWithin` is set to `40m`, and a request is triggered at 0th second, the test will skip sending another request for another 40m. +This particular field is used to avoid sending transaction when there is traffic already in that lane. + ### CCIP.Groups.[testgroup].OffRampConfig Specifies the offramp configuration for the execution job. This is only valid if the test is not run on [existing deployments](#ccipgroupstestgroupexistingdeployment). @@ -717,11 +717,6 @@ Specifies the duration network delay used for `NetworkChaos` experiment. This is If there are multiple chaos experiments, this specifies the duration to wait between each chaos experiment. This is only valid if the test is run on k8s and not on [existing deployments](#ccipgroupstestgroupexistingdeployment). -#### CCIP.Groups.[testgroup].LoadProfile.SkipRequestIfAnotherRequestTriggeredWithin - -If a request is triggered within this duration, the test will skip sending another request during load run. For Example, if `SkipRequestIfAnotherRequestTriggeredWithin` is set to `40m`, and a request is triggered at 0th second, the test will skip sending another request for another 40m. -This particular field is used to avoid sending multiple requests in a short duration during load run. - #### CCIP.Groups.[testgroup].LoadProfile.OptimizeSpace This is used internally to optimize memory usage during load run. If set to true, after the initial lane set up is over the test will discard the lane config to save memory. @@ -802,4 +797,4 @@ DataLength = 10000 MsgType = 'Data' DestGasLimit = 2500000 DataLength = 10000 -``` \ No newline at end of file +``` diff --git a/integration-tests/ccip-tests/testconfig/ccip.go b/integration-tests/ccip-tests/testconfig/ccip.go index 0a53ee18732..c77b2c3a33e 100644 --- a/integration-tests/ccip-tests/testconfig/ccip.go +++ b/integration-tests/ccip-tests/testconfig/ccip.go @@ -1,6 +1,7 @@ package testconfig import ( + "errors" "fmt" "math/big" "os" @@ -211,19 +212,18 @@ type LoadFrequency struct { } type LoadProfile struct { - MsgProfile *MsgProfile `toml:",omitempty"` - FrequencyByDestination map[string]*LoadFrequency `toml:",omitempty"` - RequestPerUnitTime []int64 `toml:",omitempty"` - TimeUnit *config.Duration `toml:",omitempty"` - StepDuration []*config.Duration `toml:",omitempty"` - TestDuration *config.Duration `toml:",omitempty"` - NetworkChaosDelay *config.Duration `toml:",omitempty"` - WaitBetweenChaosDuringLoad *config.Duration `toml:",omitempty"` - SkipRequestIfAnotherRequestTriggeredWithin *config.Duration `toml:",omitempty"` - OptimizeSpace *bool `toml:",omitempty"` - FailOnFirstErrorInLoad *bool `toml:",omitempty"` - SendMaxDataInEveryMsgCount *int64 `toml:",omitempty"` - TestRunName string `toml:",omitempty"` + MsgProfile *MsgProfile `toml:",omitempty"` + FrequencyByDestination map[string]*LoadFrequency `toml:",omitempty"` + RequestPerUnitTime []int64 `toml:",omitempty"` + TimeUnit *config.Duration `toml:",omitempty"` + StepDuration []*config.Duration `toml:",omitempty"` + TestDuration *config.Duration `toml:",omitempty"` + NetworkChaosDelay *config.Duration `toml:",omitempty"` + WaitBetweenChaosDuringLoad *config.Duration `toml:",omitempty"` + OptimizeSpace *bool `toml:",omitempty"` + FailOnFirstErrorInLoad *bool `toml:",omitempty"` + SendMaxDataInEveryMsgCount *int64 `toml:",omitempty"` + TestRunName string `toml:",omitempty"` } func (l *LoadProfile) Validate() error { @@ -242,9 +242,6 @@ func (l *LoadProfile) Validate() error { if l.TestDuration == nil || l.TestDuration.Duration().Minutes() == 0 { return fmt.Errorf("test duration should be set") } - if l.SkipRequestIfAnotherRequestTriggeredWithin != nil && l.TimeUnit.Duration() < l.SkipRequestIfAnotherRequestTriggeredWithin.Duration() { - return fmt.Errorf("SkipRequestIfAnotherRequestTriggeredWithin should be set below the TimeUnit duration") - } return nil } @@ -265,35 +262,38 @@ func (gp *ReorgProfile) Validate() error { // CCIPTestGroupConfig defines configuration input to change how a particular CCIP test group should run type CCIPTestGroupConfig struct { - Type string `toml:",omitempty"` - KeepEnvAlive *bool `toml:",omitempty"` - BiDirectionalLane *bool `toml:",omitempty"` - CommitAndExecuteOnSameDON *bool `toml:",omitempty"` - AllowOutOfOrder *bool `toml:",omitempty"` // To set out of order execution globally - NoOfCommitNodes int `toml:",omitempty"` - MsgDetails *MsgDetails `toml:",omitempty"` - TokenConfig *TokenConfig `toml:",omitempty"` - MulticallInOneTx *bool `toml:",omitempty"` - NoOfSendsInMulticall int `toml:",omitempty"` - PhaseTimeout *config.Duration `toml:",omitempty"` - LocalCluster *bool `toml:",omitempty"` - ExistingDeployment *bool `toml:",omitempty"` - ReuseContracts *bool `toml:",omitempty"` - NodeFunding float64 `toml:",omitempty"` - NetworkPairs []string `toml:",omitempty"` - DenselyConnectedNetworkChainIds []string `toml:",omitempty"` - NoOfNetworks int `toml:",omitempty"` - NoOfRoutersPerPair int `toml:",omitempty"` - MaxNoOfLanes int `toml:",omitempty"` - ChaosDuration *config.Duration `toml:",omitempty"` - USDCMockDeployment *bool `toml:",omitempty"` - CommitOCRParams *contracts.OffChainAggregatorV2Config `toml:",omitempty"` - ExecOCRParams *contracts.OffChainAggregatorV2Config `toml:",omitempty"` - OffRampConfig *OffRampConfig `toml:",omitempty"` - CommitInflightExpiry *config.Duration `toml:",omitempty"` - StoreLaneConfig *bool `toml:",omitempty"` - LoadProfile *LoadProfile `toml:",omitempty"` - ReorgProfile *ReorgProfile `toml:",omitempty"` + Type string `toml:",omitempty"` + KeepEnvAlive *bool `toml:",omitempty"` + BiDirectionalLane *bool `toml:",omitempty"` + CommitAndExecuteOnSameDON *bool `toml:",omitempty"` + AllowOutOfOrder *bool `toml:",omitempty"` // To set out of order execution globally + NoOfCommitNodes int `toml:",omitempty"` + MsgDetails *MsgDetails `toml:",omitempty"` + TokenConfig *TokenConfig `toml:",omitempty"` + MulticallInOneTx *bool `toml:",omitempty"` + NoOfSendsInMulticall int `toml:",omitempty"` + PhaseTimeout *config.Duration `toml:",omitempty"` + LocalCluster *bool `toml:",omitempty"` + ExistingDeployment *bool `toml:",omitempty"` + ReuseContracts *bool `toml:",omitempty"` + NodeFunding float64 `toml:",omitempty"` + NetworkPairs []string `toml:",omitempty"` + DenselyConnectedNetworkChainIDs []string `toml:",omitempty"` + NoOfNetworks int `toml:",omitempty"` + NoOfRoutersPerPair int `toml:",omitempty"` + MaxNoOfLanes int `toml:",omitempty"` + ChaosDuration *config.Duration `toml:",omitempty"` + USDCMockDeployment *bool `toml:",omitempty"` + LBTCMockDeployment *bool `toml:",omitempty"` + LBTCDestPoolDataAs32Bytes *bool `toml:",omitempty"` + CommitOCRParams *contracts.OffChainAggregatorV2Config `toml:",omitempty"` + ExecOCRParams *contracts.OffChainAggregatorV2Config `toml:",omitempty"` + OffRampConfig *OffRampConfig `toml:",omitempty"` + CommitInflightExpiry *config.Duration `toml:",omitempty"` + StoreLaneConfig *bool `toml:",omitempty"` + LoadProfile *LoadProfile `toml:",omitempty"` + ReorgProfile *ReorgProfile `toml:",omitempty"` + SkipRequestIfAnotherRequestTriggeredWithin *config.Duration `toml:",omitempty"` } func (c *CCIPTestGroupConfig) Validate() error { @@ -310,6 +310,11 @@ func (c *CCIPTestGroupConfig) Validate() error { return fmt.Errorf("test run name should be set if existing deployment is true and test is running in k8s") } } + if c.ReorgProfile != nil { + if err := c.ReorgProfile.Validate(); err != nil { + return err + } + } } err := c.MsgDetails.Validate() if err != nil { @@ -336,6 +341,10 @@ func (c *CCIPTestGroupConfig) Validate() error { return fmt.Errorf("number of sends in multisend should be greater than 0 if multisend is true") } } + if c.SkipRequestIfAnotherRequestTriggeredWithin != nil && c.LoadProfile != nil && + c.LoadProfile.TimeUnit.Duration() < c.SkipRequestIfAnotherRequestTriggeredWithin.Duration() { + return errors.New("SkipRequestIfAnotherRequestTriggeredWithin should be set below the load TimeUnit duration") + } return nil } diff --git a/integration-tests/ccip-tests/testconfig/override/mainnet.toml b/integration-tests/ccip-tests/testconfig/override/mainnet.toml index f723411eafc..cb83da28cb3 100644 --- a/integration-tests/ccip-tests/testconfig/override/mainnet.toml +++ b/integration-tests/ccip-tests/testconfig/override/mainnet.toml @@ -1,10 +1,10 @@ [CCIP] [CCIP.ContractVersions] -PriceRegistry = '1.2.0' -OffRamp = '1.2.0' -OnRamp = '1.2.0' -TokenPool = '1.4.0' -CommitStore = '1.2.0' +PriceRegistry = 'latest' +OffRamp = 'latest' +OnRamp = 'latest' +TokenPool = 'latest' +CommitStore = 'latest' [CCIP.Deployments] Data = """ @@ -19,114 +19,114 @@ Data = """ "wrapped_native": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", "src_contracts": { "Avalanche Mainnet": { - "on_ramp": "0x05B723f3db92430FbE4395fD03E40Cc7e9D17988", + "on_ramp": "0xe80cC83B895ada027b722b78949b296Bd1fC5639", "deployed_at": 0 }, "BSC Mainnet": { - "on_ramp": "0x79f3ABeCe5A3AFFf32D47F4CFe45e7b65c9a2D91", + "on_ramp": "0x14bF7b1Ca6b843f386bfDfa76BFd439919b9378D", "deployed_at": 0 }, "Base Mainnet": { - "on_ramp": "0x77b60F85b25fD501E3ddED6C1fe7bF565C08A22A", + "on_ramp": "0xc1b6287A3292d6469F2D8545877E40A2f75CA9a6", "deployed_at": 0 }, "Blast Mainnet": { - "on_ramp": "0x54480425E9e24138fdF1644a1F70007F25abfB46", + "on_ramp": "0xc5490997680a39A1b4684ce2b668AE8A2eBEC7ee", "deployed_at": 0 }, "Ethereum Mainnet": { - "on_ramp": "0xCe11020D56e5FDbfE46D9FC3021641FfbBB5AdEE", + "on_ramp": "0x67761742ac8A21Ec4D76CA18cbd701e5A6F3Bef3", "deployed_at": 0 }, "Gnosis Mainnet": { - "on_ramp": "0x1216DC856Af47a833254a280A038185F51C1B5c4", + "on_ramp": "0xc7d6B885d8A4286E6311F79227430b7862311cd3", "deployed_at": 0 }, "Metis Andromeda": { - "on_ramp": "0x5b23A0a103fC9028363B3BC3577e8Bd45B8E819F", + "on_ramp": "0xF1e73c37CDa8E47768De2246AEf5eFD4d76330ae", "deployed_at": 0 }, "Mode Mainnet": { - "on_ramp": "0x3920BF474BB50fffb4B77c1e6e66F65210D1D722", + "on_ramp": "0xd236ea4DDE7de1e594021764E2f6Cd8e8cD7F047", "deployed_at": 0 }, "Optimism Mainnet": { - "on_ramp": "0xC09b72E8128620C40D89649019d995Cc79f030C3", + "on_ramp": "0xAFECc7b67c6a8e606e94ce4e2F70D83C2206C2cb", "deployed_at": 0 }, "Polygon Mainnet": { - "on_ramp": "0x122F05F49e90508F089eE8D0d868d1a4f3E5a809", + "on_ramp": "0x6087d6C33946670232DF09Fe93eECbaEa3D6864d", "deployed_at": 0 }, "WeMix Mainnet": { - "on_ramp": "0x66a0046ac9FA104eB38B04cfF391CcD0122E6FbC", + "on_ramp": "0x52e51f245e600C6A87Ef2090d607D2a0eAedA1a6", "deployed_at": 0 }, "ZKSync Mainnet": { - "on_ramp": "0x2C1016053d9873270d71613cA321aE97Fc89201d", + "on_ramp": "0xd67F6713Fa4448548c984a9a7DCFBD13B0fB78D6", "deployed_at": 0 } }, "dest_contracts": { "Avalanche Mainnet": { - "off_ramp": "0xe0109912157d5B75ea8b3181123Cf32c73bc9920", - "commit_store": "0xDaa61b8Cd85977820f92d1e749E1D9F55Da6CCEA", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x95095007d5Cc3E7517A1A03c9e228adA5D0bc376", + "commit_store": "0x46679C9E93B7312A9191A9aD12A73b0c86A33623", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "BSC Mainnet": { - "off_ramp": "0xB1b705c2315fced1B38baE463BE7DDef531e47fA", - "commit_store": "0x310cECbFf14Ad0307EfF762F461a487C1abb90bf", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x16B9709F8A23B9EB922E8Dde7EaB1Ede7C79F663", + "commit_store": "0x6c3fD63b9BdE38C414530727a5De858ca023cFc4", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Base Mainnet": { - "off_ramp": "0xdB19F77F87661f9be0F557cf9a1ebeCf7D8F206c", - "commit_store": "0x6e37f4c82d9A31cc42B445874dd3c3De97AB553f", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xb62178f8198905D0Fa6d640Bdb188E4E8143Ac4b", + "commit_store": "0x8F60C335a5d2BEC6B32867d3C05C377E88640AaF", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Blast Mainnet": { - "off_ramp": "0x449C59F4Ef3b1802DD054dd7837Eb2Ca91aFAB84", - "commit_store": "0x1E0e8B01693A248b3Aa1e5aca36336F9022Ceac0", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x40314FeC27C5FCc7AaA05e618802A3fEA8E23Ae3", + "commit_store": "0xe7C1904E00BAf5Ca61926da0d1d2B036f14A3ad8", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Ethereum Mainnet": { - "off_ramp": "0x542ba1902044069330e8c5b36A84EC503863722f", - "commit_store": "0x060331fEdA35691e54876D957B4F9e3b8Cb47d20", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x91e46cc5590A4B9182e47f40006140A7077Dec31", + "commit_store": "0x86be76A0FA2bD3ECB69330cBb4fd1f62c48F43E3", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Gnosis Mainnet": { - "off_ramp": "0x0C00414D9dcDB2DA7BF8AF26aE2deb617f09e756", - "commit_store": "0x1d464cd86c5C8358d56281aB31d2213534CCEA13", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xeE53872d1C695933B34cE0a11B58613CBBf37e20", + "commit_store": "0x5D88518a198b99F096d2893092a568A97F60B8d4", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Metis Andromeda": { - "off_ramp": "0xeF8dEb0c01f7389AD4ae05DAB30120dba915D53c", - "commit_store": "0xE594a09Aa8bCb55188758826A160615B95A6F3fE", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xF1A4DE22FF792b0457306C39f4CB5822Ab47bdAE", + "commit_store": "0x7F20F4374f8d99201F22434ad59f96bE898A9E0B", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Mode Mainnet": { - "off_ramp": "0xEDE7ADACFbD27DBEBbE2d6C3BaDf12a634a72Faa", - "commit_store": "0x032B209a6B7a00336047505b55a4cBFBd29eE2c1", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xa964355d8eBa62E9b043Eb27eEe6d999Ecc69429", + "commit_store": "0x72C3cdA94eCAC06f7605301dd7144815C2F05A03", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Optimism Mainnet": { - "off_ramp": "0xeeed4D86F3E0e6d32A6Ad29d8De6A0Dc91963A5f", - "commit_store": "0xbbB563c4d98020b9c0f3Cc34c2C0Ef9676806E35", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x27a971D482335d0f8d1917451390734f7372A4a3", + "commit_store": "0x6642E640321e1Ad01eef2fC2ad5427D84A2Ee269", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Polygon Mainnet": { - "off_ramp": "0x9bDA7c8DCda4E39aFeB483cc0B7E3C1f6E0D5AB1", - "commit_store": "0x63a0AeaadAe851b990bBD9dc41f5C1B08b32026d", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xcabc2D71dC3172a154A5A34cD706B050e0ef9b6f", + "commit_store": "0x78B15A57889200F246fc52790c4F3DfC37d82Aa2", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "WeMix Mainnet": { - "off_ramp": "0xEEf5Fb4c4953F9cA9ab1f25cE590776AfFc2c455", - "commit_store": "0xD268286A277095a9C3C90205110831a84505881c", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x893c14bA328A49336a188F972f997C0d7286B8E4", + "commit_store": "0xc986D260b096E8708D82063309fB98734481A045", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "ZKSync Mainnet": { - "off_ramp": "0x50Fc0de671c775301e1Bdf19C17E778D0f978f6F", - "commit_store": "0x87732C2647168818ED49268EdA8A98C2e62ed744", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x052CF0c46375287255c71B179b10a7BFFD97502F", + "commit_store": "0xE19E9765857A2371d849FDd26D62D2463fb7a0a9", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" } } }, @@ -135,82 +135,82 @@ Data = """ "fee_token": "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7", "arm": "0x4f6Ec25f06A114ADD3154DC17fb637F750AdaA31", "router": "0xF4c7E640EdA248ef95972845a62bdC74237805dB", - "price_registry": "0x2d3b38E0a4DFFDad2A613f7760bE1683F272eA18", + "price_registry": "0xfA4edD04eaAcDB07c8D73621bc1790eC50D8c489", "wrapped_native": "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7", "src_contracts": { "Arbitrum Mainnet": { - "on_ramp": "0x98f51B041e493fc4d72B8BD33218480bA0c66DDF", + "on_ramp": "0x4e910c8Bbe88DaDF90baa6c1B7850DbeA32c5B29", "deployed_at": 0 }, "BSC Mainnet": { - "on_ramp": "0x8eaae6462816CB4957184c48B86afA7642D8Bf2B", + "on_ramp": "0xe6e161d55019AA5960DcF0Af9bB6e4d574C69F99", "deployed_at": 0 }, "Base Mainnet": { - "on_ramp": "0x268fb4311D2c6CB2bbA01CCA9AC073Fb3bfd1C7c", + "on_ramp": "0x139D4108C23e66745Eda4ab47c25C83494b7C14d", "deployed_at": 0 }, "Ethereum Mainnet": { - "on_ramp": "0xD0701FcC7818c31935331B02Eb21e91eC71a1704", + "on_ramp": "0xe8784c29c583C52FA89144b9e5DD91Df2a1C2587", "deployed_at": 0 }, "Gnosis Mainnet": { - "on_ramp": "0xBd0B9317F6AaA1085993F7b4CD468dE7A6428722", + "on_ramp": "0x38fd0DF16F6fD0a2C3Ec6615c73e50F5d027b8bA", "deployed_at": 0 }, "Optimism Mainnet": { - "on_ramp": "0x8629008887E073260c5434D6CaCFc83C3001d211", + "on_ramp": "0x3e3b4Fba004E7824219e79aE9f676d9D41A216Fa", "deployed_at": 0 }, "Polygon Mainnet": { - "on_ramp": "0x97500490d9126f34cf9aA0126d64623E170319Ef", + "on_ramp": "0x5570a4E979d7460F13b84075ACEF69FAc73914b1", "deployed_at": 0 }, "WeMix Mainnet": { - "on_ramp": "0x9b1ed9De069Be4d50957464b359f98eD0Bf34dd5", + "on_ramp": "0x1DA12512f852DAaba7883340A4074FfB73FA8f21", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Mainnet": { - "off_ramp": "0x770b1375F86E7a9bf30DBe3F97bea67193dC9135", - "commit_store": "0x23E2b34Ce8e12c53f8a39AD4b3FFCa845f8E617C", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x508Ea280D46E4796Ce0f1Acf8BEDa610c4238dB3", + "commit_store": "0x20bEde74Da64C9aE47FFDf4B87613752CD13bE5D", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "BSC Mainnet": { - "off_ramp": "0x83F53Fc798FEbfFbdF84830AD403b9989187a06C", - "commit_store": "0xD8ceCE2D7794385E00Ce3EF94550E732b0A0B959", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x6CDAa2711BdF0B719911BF00588A79FA97bf9264", + "commit_store": "0x4c05E7AB694C602De3135e025aEc7F7de06E80F7", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Base Mainnet": { - "off_ramp": "0x4d6A796Bc85dcDF41ce9AaEB50B094C6b589748f", - "commit_store": "0xc4C4358FA01a04D6c6FE3b96a351946d4c2715C2", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x37879EBFCb807f8C397fCe2f42DC0F5329AD6823", + "commit_store": "0xDe615EEaD232BEECF6c9b71c293A387B97814E8D", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Ethereum Mainnet": { - "off_ramp": "0x5B833BD6456c604Eb396C0fBa477aD49e82B1A2a", - "commit_store": "0x23E23958D220B774680f91c2c91a6f2B2f610d7e", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xE5F21F43937199D4D57876A83077b3923F68EB76", + "commit_store": "0xf0F791901854fAb16adeBd60F0639b960B6ea0CF", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Gnosis Mainnet": { - "off_ramp": "0xDE7ebf1Dc753D916A9fbEC4ae521Ee74EC2d0B5f", - "commit_store": "0x2dbc917b4DD455532015949c3103B64fcDB891b2", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x1181A59FF0BAEd1E0EA77e919185cB8C3D5D3125", + "commit_store": "0x60b2Bc7858D6296D8c4370E35a930E5ddF13085E", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Optimism Mainnet": { - "off_ramp": "0xb68A3EE8bD0A09eE221cf1859Dd5a4d5765188Fe", - "commit_store": "0x83DCeeCf822981F9F8552925eEfd88CAc1905dEA", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x376C0AFC9E64efE0d9202E1F02c3d7f9Dc15e404", + "commit_store": "0xF8728f8Cd9C809287e6a97B71A2cdfD2c3C034cE", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Polygon Mainnet": { - "off_ramp": "0x19250aBE66B88F214d02B6f3BF80F4118290C619", - "commit_store": "0x87A0935cE6254dB1252bBac90d1D07D04846aDCA", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xFf49E35626Eba28Bee1d251782AB75A6cEd91c45", + "commit_store": "0xee2570De22C0D07d0FaBC1169dC5EcA342B838Da", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "WeMix Mainnet": { - "off_ramp": "0x317dE8bc5c3292E494b6496586696d4966A922B0", - "commit_store": "0x97Fbf3d6DEac16adC721aE9187CeEa1e610aC7Af", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xFA5CF1bBFe0Ba5c01e60513EF8960945A99B78A4", + "commit_store": "0x671c83B1Ebe798bfC625E99Be0FF7C48F6E4C491", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" } } }, @@ -219,100 +219,100 @@ Data = """ "fee_token": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", "arm": "0x56491A98199aD2e687Ea9D0cFB7b4AC57B4980Fc", "router": "0x34B03Cb9086d7D758AC55af71584F81A598759FE", - "price_registry": "0x18C3D917D55Bc1784a3d4729AA3e2C1ecd662fFd", + "price_registry": "0xd64aAbD70A71d9f0A00B99F6EFc1626aA2dD43C7", "wrapped_native": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", "src_contracts": { "Arbitrum Mainnet": { - "on_ramp": "0x2788b46BAcFF49BD89562e6bA5c5FBbbE5Fa92F7", + "on_ramp": "0x5577c19bD183e39a007ce4CE236f1D91e9132D5c", "deployed_at": 0 }, "Avalanche Mainnet": { - "on_ramp": "0x6aa72a998859eF93356c6521B72155D355D0Cfd2", + "on_ramp": "0x43F00dBf0Aa61A099c674A74FBdCb93786564950", "deployed_at": 0 }, "Base Mainnet": { - "on_ramp": "0x70bC7f7a6D936b289bBF5c0E19ECE35B437E2e36", + "on_ramp": "0xdABb6De5eC48dd2fcF28ac85CbEFe3F19E03F1BD", "deployed_at": 0 }, "Blast Mainnet": { - "on_ramp": "0x02082b23D35d2670B8a636A431F3C30AF9d21e07", + "on_ramp": "0x0b7Bfe549F26AF4B6aA5246CB3FD96C8a5c23a68", "deployed_at": 0 }, "Ethereum Mainnet": { - "on_ramp": "0x0Bf40b034872D0b364f3DCec04C7434a4Da1C8d9", + "on_ramp": "0x35C724666ba31632A56Bad4390eb69f206ab60C7", "deployed_at": 0 }, "Gnosis Mainnet": { - "on_ramp": "0xAc9fE4179816077674d769698306CE6A7C6A1096", + "on_ramp": "0x83AC865c2E18f2CDc1d10126987FfC465e11c0DF", "deployed_at": 0 }, "Mode Mainnet": { - "on_ramp": "0x4A83dA46c148AB5941a379b4cA49f42d14281C78", + "on_ramp": "0x9d4d125788A548C2f69fAC7f8C3A64FA21d18C9e", "deployed_at": 0 }, "Optimism Mainnet": { - "on_ramp": "0x4FEB11A454C9E8038A8d0aDF599Fe7612ce114bA", + "on_ramp": "0x3A3649852A518ab180f41f28288c6c9184563616", "deployed_at": 0 }, "Polygon Mainnet": { - "on_ramp": "0x6bD4754D86fc87FE5b463D368f26a3587a08347c", + "on_ramp": "0x1C88e3Fd2B0a8735D1b19A77AA6e2333555BB95c", "deployed_at": 0 }, "WeMix Mainnet": { - "on_ramp": "0x1467fF8f249f5bc604119Af26a47035886f856BE", + "on_ramp": "0x9BaFC5E78C0051c7Bcd1EF37FF02fcBd31B37a72", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Mainnet": { - "off_ramp": "0x3DA330fd8Ef10d93cFB7D4f8ecE7BC1F10811feC", - "commit_store": "0x86D55Ff492cfBBAf0c0D42D4EE615144E78b3D02", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x2A9C65afF39758CeAa24dBD1ACd1BeB3618e6780", + "commit_store": "0x99C7C97Ed175A3f0BFd4f52526E7B1310bB3fc16", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Avalanche Mainnet": { - "off_ramp": "0x37a6fa55fe61061Ae97bF7314Ae270eCF71c5ED3", - "commit_store": "0x1f558F6dcf0224Ef1F78A24814FED548B9602c80", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xc69a550470bEbC5c3Be98A4C3dD26C6AdD90C64b", + "commit_store": "0x49FeF2978569E8061a7CA5cC676d46970613e9D0", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Base Mainnet": { - "off_ramp": "0x574c697deab06B805D8780898B3F136a1F4892Dc", - "commit_store": "0x002B164b1dcf4E92F352DC625A01Be0E890EdEea", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x133672C0F0067573254dd7C8C9818a37d6208610", + "commit_store": "0xEc44EFcf3E0aC801C742e444B130918a5a3A87E9", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Blast Mainnet": { - "off_ramp": "0x6500EDFBD27d34b7B69D0D45865ddaC4A1ceafE1", - "commit_store": "0x3A328B3fA852409415c15271442EFE4c77C04992", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x38cA434FE65D540942A36c84FdFD4B7C7a9a4612", + "commit_store": "0xF70409dC69Bc50aA30b001d45C7F9E2C706Ad387", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Ethereum Mainnet": { - "off_ramp": "0x181Bb1E97b0bDD1D85E741ad0943552D3682cc35", - "commit_store": "0x3fF27A34fF0FA77921C3438e67f58da1a83e9Ce1", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xF616733641D420207b8F30db9C4cE39684768991", + "commit_store": "0x7aa39A9c9D539b5E7388872a193b3447D34bf11F", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Gnosis Mainnet": { - "off_ramp": "0xBE9b0cc569E970dAb953d336c670fc6b7c856c19", - "commit_store": "0xEe89CC6C2236d3b99C2D9c0b3b911690F757FadF", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x53AF5cE4534C39582E6a5E3fD77946E0c3BFe870", + "commit_store": "0xe7a0Ffc182E2330d19fF79adEEC637094c02dcA3", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Mode Mainnet": { - "off_ramp": "0x6C702159daA4DEbae32E294c584B1EaF2356cB1A", - "commit_store": "0x73C8d1E9e240331E3345c6fBe6CDFC71B742B69C", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xFc2278eBc27B9d205e3DC9F1b88D6D863D71190D", + "commit_store": "0x92eeb265F465Aff3AE708117ba7aE35279227845", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Optimism Mainnet": { - "off_ramp": "0xE7E080C8d62d595a223C577C7C8d1f75d9A5E664", - "commit_store": "0xF4d53346bDb6d393C74B0B72Aa7D6689a3eAad79", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x3c5E62cdFD08e23a0961ff2A3155CaBb96cbc89D", + "commit_store": "0xDC39E05264D0C17eD16F2Db363364B127Cf56d75", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Polygon Mainnet": { - "off_ramp": "0x26af2046Da85d7f6712D5edCa81B9E3b2e7A60Ab", - "commit_store": "0x4C1dA405a789AC2853A69D8290B8B9b47a0374F8", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x21159ebdA3E6A2437bCD6ef39853042ACC436D2D", + "commit_store": "0x018Bb120265672C699969a9e2193755d4CF1ca16", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "WeMix Mainnet": { - "off_ramp": "0xC027C5AEb230008c243Be463A73571e581F94c13", - "commit_store": "0x2EB426C8C54D740d1FC856eB3Ff96feA03957978", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x512CA54a0F6447AC41c07Da3336DFcA042D88A7B", + "commit_store": "0xae79C737801b04ECA277d50FDeaC4006C3725F62", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" } } }, @@ -321,91 +321,91 @@ Data = """ "fee_token": "0x4200000000000000000000000000000000000006", "arm": "0x91cB19E7c4Ba9B08CF544cDc9143042150B007C3", "router": "0x881e3A65B4d4a04dD529061dd0071cf975F58bCD", - "price_registry": "0x1bA15c57c8b74cD32443D7583E7f6d7c638aCf46", + "price_registry": "0x6337a58D4BD7Ba691B66341779e8f87d4679923a", "wrapped_native": "0x4200000000000000000000000000000000000006", "src_contracts": { "Arbitrum Mainnet": { - "on_ramp": "0x1E5Ca70d1e7A1B26061125738a880BBeA42FeB21", + "on_ramp": "0x9D0ffA76C7F82C34Be313b5bFc6d42A72dA8CA69", "deployed_at": 0 }, "Avalanche Mainnet": { - "on_ramp": "0xBE5a9E336D9614024B4Fa10D8112671fc9A42d96", + "on_ramp": "0x4be6E0F97EA849FF80773af7a317356E6c646FD7", "deployed_at": 0 }, "BSC Mainnet": { - "on_ramp": "0xdd4Fb402d41Beb0eEeF6CfB1bf445f50bDC8c981", + "on_ramp": "0xE5FD5A0ec3657Ad58E875518e73F6264E00Eb754", "deployed_at": 0 }, "Blast Mainnet": { - "on_ramp": "0xCCC32e2794EaD73f0a0a514Ac1c78D048968ab81", + "on_ramp": "0x9A59832b85217C20b17a990A45BD5d0F3de36266", "deployed_at": 0 }, "Ethereum Mainnet": { - "on_ramp": "0xDEA286dc0E01Cb4755650A6CF8d1076b454eA1cb", + "on_ramp": "0x56b30A0Dcd8dc87Ec08b80FA09502bAB801fa78e", "deployed_at": 0 }, "Gnosis Mainnet": { - "on_ramp": "0xcDD0e963E0708a4E936202396983E458cFA4A363", + "on_ramp": "0xDcFB24AEbcB9Edfb6746a045DDcae402381F984B", "deployed_at": 0 }, "Mode Mainnet": { - "on_ramp": "0x626aCCbDDD73532df1caEDb5628Fdc40C5f429Ba", + "on_ramp": "0xEB50Fc6F57AAc6bf060A2Dfc6479fED592e6e184", "deployed_at": 0 }, "Optimism Mainnet": { - "on_ramp": "0xd952FEAcDd5919Cc5E9454b53bF45d4E73dD6457", + "on_ramp": "0x362E6bE957c18e268ad91046CA6b47EB09AD98C1", "deployed_at": 0 }, "Polygon Mainnet": { - "on_ramp": "0x3DB8Bea142e41cA3633890d0e5640F99a895D6A5", + "on_ramp": "0xd3Bde678BB706Cf727A512515C254BcF021dD203", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Mainnet": { - "off_ramp": "0x8531E63aE9279a1f0D09eba566CD1b092b95f3D5", - "commit_store": "0x327E13f54c7871a2416006B33B4822eAAD357916", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x7D38c6363d5E4DFD500a691Bc34878b383F58d93", + "commit_store": "0x17891fe60a577c5E1e4a4Ddd78E642428A56039f", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Avalanche Mainnet": { - "off_ramp": "0x8345F2fF67e5A65e85dc955DE1414832608E00aD", - "commit_store": "0xd0b13be4c53A6262b47C5DDd36F0257aa714F562", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x61C3f6d72c80A3D1790b213c4cB58c3d4aaFccDF", + "commit_store": "0x700C6715734111a6D1Cf414F46D85627b298B5dd", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "BSC Mainnet": { - "off_ramp": "0x48a51f5D38BE630Ddd6417Ea2D9052B8efc91a18", - "commit_store": "0xF97127e77252284EC9D4bc13C247c9D1A99F72B0", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x45d524b6Fe99C005C52C65c578dc0e02d9751083", + "commit_store": "0x1ccD0D49e283789a73E882B0ED4B5b1163675c3C", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Blast Mainnet": { - "off_ramp": "0x15F54FDd37ccC8E5a0b64633C95Ef8209Fd86401", - "commit_store": "0x52b5b4f3Cc50E38f736f23897f192430E131ccB8", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x941F0E2E0556aCf60fE0f09972f599d9F8916F01", + "commit_store": "0x575F920e3ef294EA80efB1A4C815EF4B8a67878F", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Ethereum Mainnet": { - "off_ramp": "0xEC0cFe335a4d53dBA70CB650Ab56eEc32788F0BB", - "commit_store": "0x0ae3c2c7FB789bd05A450CD3075D11f6c2Ca4F77", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xCA04169671A81E4fB8768cfaD46c347ae65371F1", + "commit_store": "0xb40659aACb709D1D54c80FC0d38b15705358Ce0B", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Gnosis Mainnet": { - "off_ramp": "0xA24D3Bc3A59798a57AF58f69c89DC1C8aFD78F18", - "commit_store": "0x672dbdC3aF7eE37436fe101531D33266D85F33c9", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x300977dBA924af14E166B31F4926892B1f310661", + "commit_store": "0x932D6D5c6647e6495Ed3473ff0F4e31a6056D837", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Mode Mainnet": { - "off_ramp": "0xFC30bFe46b11D4E25C6f7492fd064A70FbF18848", - "commit_store": "0xaeDBe55633F74A291F0A43Daa0Fd719615b78363", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x639Dc04368006544eba7CbC959f3e4361bfEAB0d", + "commit_store": "0x2D3FC7f8b03718157359266ac06AF6373aFee2f1", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Optimism Mainnet": { - "off_ramp": "0xf50c0d2a8B6Db60f1D93E60f03d0413D56153E4F", - "commit_store": "0x16f72C15165f7C9d74c12fDF188E399d4d3724e4", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x18095fbD53184A50C2BB3929a6c62Ca328732062", + "commit_store": "0xa8FA8aE51dB9661e7D1c21141d967d07110036cb", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Polygon Mainnet": { - "off_ramp": "0x75F29f058b31106F99caFdc17c9b26ADfcC7b5D7", - "commit_store": "0xb719616E732581B570232DfB13Ca49D27667Af9f", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x74d574D11977fC8D40f8590C419504cbE178ADB7", + "commit_store": "0x565f70396Ff82C23d25Dd3E57A9A66367dccdF3B", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" } } }, @@ -418,42 +418,42 @@ Data = """ "wrapped_native": "0x4300000000000000000000000000000000000004", "src_contracts": { "Arbitrum Mainnet": { - "on_ramp": "0x42E1f5f5ACCe6e4971D9B9468D7A9Abed8D69DdD", + "on_ramp": "0x28f7E57cEE31241B4B8B72e6b710c4dC2e9bEb28", "deployed_at": 0 }, "BSC Mainnet": { - "on_ramp": "0x9c98d7aE731b0A53bedffBc1a12d9d43501Ea464", + "on_ramp": "0x01D1A2Ed2053e410177f8E762aF635ee78b7a581", "deployed_at": 0 }, "Base Mainnet": { - "on_ramp": "0x955f139225F5d7021EB911ED2787a795f71E5eb6", + "on_ramp": "0xAbBC1fC0C919ecFb0220e90749111e0619abf79A", "deployed_at": 0 }, "Ethereum Mainnet": { - "on_ramp": "0xBD9bf9AA79adF083BB7100848Eb15F4e8282E27e", + "on_ramp": "0xEa8112530cA10945C2aA976f8F615582Af9B70fa", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Mainnet": { - "off_ramp": "0x01A38cd2da195C704bA192fCCDddd8986cb7EdE9", - "commit_store": "0xab6D69db1C1E9B97a26eB3983b0878AdeD248200", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x8e4E966a3f6b3aB56185800a2afFe75CCf7B4DfD", + "commit_store": "0x4a577dC79BfeF5C84a55EF6Df30400083F16AE8d", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "BSC Mainnet": { - "off_ramp": "0xabC7Dffb2590c44a201EC7532382e1fc01Cd9eEb", - "commit_store": "0xA3086bf1D609d8e8028E8339e4aa4362C7da339D", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x9A9f3714b517231869b97F3b49E2ba1009499d9b", + "commit_store": "0xAB0eCFDE9E681B1CD04D6C5536BafdBada180716", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Base Mainnet": { - "off_ramp": "0x0406F8f66C10Da99ff518bc2242e0Ec486a2c787", - "commit_store": "0xc6A97d753a3001e0B893e5FA2b0ec3d623af6C20", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x5837622b622D3c88Faf5491324575f5c0BB40001", + "commit_store": "0x9fAE0d8F4A15Fb96B999aad81a1C0e39deFDF49e", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Ethereum Mainnet": { - "off_ramp": "0x4e0092bBC8EfAb6Eca295caB66986193b90a1Bb9", - "commit_store": "0xd7cA96B58EE33FdB3aa1392c30eD02645b1F28e2", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xFf094AC08B0AA8Ab3d29e034a51199a0ddE3d8C8", + "commit_store": "0x544f068b14e4FAc004579f158ccCE14225264c71", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" } } }, @@ -466,15 +466,15 @@ Data = """ "wrapped_native": "0x2021B12D8138e2D63cF0895eccABC0DFc92416c6", "src_contracts": { "Ethereum Mainnet": { - "on_ramp": "0x27C96A8a2f70a8408aD6c620717a3bDaA54bb10b", + "on_ramp": "0xc319484eF6cdA3a7f4D470e660b343FB569e9A1e", "deployed_at": 0 } }, "dest_contracts": { "Ethereum Mainnet": { - "off_ramp": "0x90902C0AEE857F3A42f2beBEa38724cE7b7a0cff", - "commit_store": "0x25adA90B241143DD5Df04Fb06C1fF6E7f7624ad9", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x1B12D218280DD1767304A00070101a91f7A61470", + "commit_store": "0x8Ad3FEFf222e2200CbC79cC3AdbaE3b64a37d1F8", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" } } }, @@ -483,127 +483,127 @@ Data = """ "fee_token": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", "arm": "0xdCD48419bD5Cd9d1b097695F2af4Ee125aADF84F", "router": "0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D", - "price_registry": "0x020082A7a9c2510e1921116001152DEE4da81985", + "price_registry": "0x8c9b2Efb7c64C394119270bfecE7f54763b958Ad", "wrapped_native": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", "src_contracts": { "Arbitrum Mainnet": { - "on_ramp": "0x925228D7B82d883Dde340A55Fe8e6dA56244A22C", + "on_ramp": "0x69eCC4E2D8ea56E2d0a05bF57f4Fd6aEE7f2c284", "deployed_at": 0 }, "Avalanche Mainnet": { - "on_ramp": "0x3df8dAe2d123081c4D5E946E655F7c109B9Dd630", + "on_ramp": "0xaFd31C0C78785aDF53E4c185670bfd5376249d8A", "deployed_at": 0 }, "BSC Mainnet": { - "on_ramp": "0x91D25A56Db77aD5147437d8B83Eb563D46eBFa69", + "on_ramp": "0x948306C220Ac325fa9392A6E601042A3CD0b480d", "deployed_at": 0 }, "Base Mainnet": { - "on_ramp": "0xe2c2AB221AA0b957805f229d2AA57fBE2f4dADf7", + "on_ramp": "0xb8a882f3B88bd52D1Ff56A873bfDB84b70431937", "deployed_at": 0 }, "Blast Mainnet": { - "on_ramp": "0x4545F9a17DA50110632C14704a15d893BF9CBD27", + "on_ramp": "0x6751cA96b769129dFE6eB8E349c310deCEDb4e36", "deployed_at": 0 }, "Celo": { - "on_ramp": "0xEd5bE9508ae56531cc0EDe6A3bD588Eb9E2e3cfa", + "on_ramp": "0x741599d9a5a1bfC40A22f530fbCd85E2718e9F90", "deployed_at": 0 }, "Gnosis Mainnet": { - "on_ramp": "0xF538dA6c673A30338269655f4e019B71ba58CFd4", + "on_ramp": "0xf50B9A46C394bD98491ce163d420222d8030F6F0", "deployed_at": 0 }, "Metis Andromeda": { - "on_ramp": "0xa5ef33B57dD8B653F9A9EA7114f46376d18264aC", + "on_ramp": "0x75d536eED32f4c8Bb39F4B0c992163f5BA49B84e", "deployed_at": 0 }, "Mode Mainnet": { - "on_ramp": "0x466a078d17e3706a9414ACc48029EE9Bae4C9b65", + "on_ramp": "0xeA6d4a24B262aB3e61a8A62f018A30beCD086f82", "deployed_at": 0 }, "Optimism Mainnet": { - "on_ramp": "0x86B47d8411006874eEf8E4584BdFD7be8e5549d1", + "on_ramp": "0x3455D8E039736944e66e19eAc77a42e8077B07bf", "deployed_at": 0 }, "Polygon Mainnet": { - "on_ramp": "0x35F0ca9Be776E4B38659944c257bDd0ba75F1B8B", + "on_ramp": "0x15a9D79d6b3485F70bF82bC49dDD1fcB37A7149c", "deployed_at": 0 }, "WeMix Mainnet": { - "on_ramp": "0xCbE7e5DA76dC99Ac317adF6d99137005FDA4E2C4", + "on_ramp": "0xdEFeADd30D5BFD403d86245b43e39a73d76423cC", "deployed_at": 0 }, "ZKSync Mainnet": { - "on_ramp": "0xD54C93A99CBCb8D865E13DA321B540171795A89f", + "on_ramp": "0x9B14AE850653dD0E30fBC93ab7f77D0d638a365B", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Mainnet": { - "off_ramp": "0xeFC4a18af59398FF23bfe7325F2401aD44286F4d", - "commit_store": "0x9B2EEd6A1e16cB50Ed4c876D2dD69468B21b7749", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xdf615eF8D4C64d0ED8Fd7824BBEd2f6a10245aC9", + "commit_store": "0xf7B343A17445F175f2Dd9f5CB29BAf0a8dE75ed3", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Avalanche Mainnet": { - "off_ramp": "0x569940e02D4425eac61A7601632eC00d69f75c17", - "commit_store": "0x2aa101BF99CaeF7fc1355D4c493a1fe187A007cE", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xd98E80C79a15E4dbaF4C40B6cCDF690fe619BFBb", + "commit_store": "0xA9f9bF2b643348c0884f2eBA4F712E833DA9a2b8", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "BSC Mainnet": { - "off_ramp": "0x7Afe7088aff57173565F4b034167643AA8b9171c", - "commit_store": "0x87c55D48DF6EF7B08153Ab079e76bFEcbb793D75", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x66d84fedED0e51aeB47ceD1BB2fc0221Ae8D7C12", + "commit_store": "0x9B9Ec8E26955c034828bBD78E22ab258d983dCdb", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Base Mainnet": { - "off_ramp": "0xdf85c8381954694E74abD07488f452b4c2Cddfb3", - "commit_store": "0x8DC27D621c41a32140e22E2a4dAf1259639BAe04", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x6B4B6359Dd5B47Cdb030E5921456D2a0625a9EbD", + "commit_store": "0xDaC3A82Cc5e7C137bF28e6EF4F68f29D66205ffe", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Blast Mainnet": { - "off_ramp": "0x1a904DbbaDdE629a1460e2F6E2E485Ce06Ed7599", - "commit_store": "0x3CB2A81bb8a188C5353CdFa9994ed8666556FC53", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xF4468E56179e6EF59d6f5B133D9355AAD91Ea9ae", + "commit_store": "0x52275dC17f9eD92230C8C4d57fD36d128701f694", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Celo": { - "off_ramp": "0xd5083684eE92dDeA117636ae5E2F1cb7fE4dfd46", - "commit_store": "0x831097033C88c82a7F1897b168Aa88cC44540C8f", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x794aE32b63b8a82a6e2Ec5017bbC6bfbddA5ce96", + "commit_store": "0x95deB0c4bB9168202d50E874865f9A1842b82D64", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Gnosis Mainnet": { - "off_ramp": "0xE93ec2A57e38C8541c893348cCafEAB01F7D47d4", - "commit_store": "0x118a9389960F86390A4F14ce4C95D6ff076C6bFC", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x70C705ff3eCAA04c8c61d581a59a168a1c49c2ec", + "commit_store": "0x9D93D536Ced80871Bf3DA5Bb47bAedE62c794f8A", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Metis Andromeda": { - "off_ramp": "0xCe6364dBe64D2789D916180131fAda2ABFF702E8", - "commit_store": "0x3d8a95adA63D406ee8232562AbD83CEdb0B90466", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x330349112e13232131Da51f9f3b153d825f65e61", + "commit_store": "0x0f89C7c0586536B618e0469402e1c8234bc52959", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Mode Mainnet": { - "off_ramp": "0xE8af3b68eDfFf65Ce48648009982380701f09B92", - "commit_store": "0x76264869a3eBF51a59FCa5ABa84ee2867c7F190e", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xb57D52F7Cb7BBD19a117585bbaf712108E56dd8f", + "commit_store": "0x01346721418045A6c07b71052e452eF8615e9084", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Optimism Mainnet": { - "off_ramp": "0xB095900fB91db00E6abD247A5A5AD1cee3F20BF7", - "commit_store": "0x4af4B497c998007eF83ad130318eB2b925a79dc8", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x562a2025E60AA19Aa03Ea41D70ea1FD3286d1D3B", + "commit_store": "0x83F3DA5aa2C7534d694B0acde7624573c830250D", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Polygon Mainnet": { - "off_ramp": "0x0af338F0E314c7551bcE0EF516d46d855b0Ee395", - "commit_store": "0xD37a60E8C36E802D2E1a6321832Ee85556Beeb76", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x718672076D6d51E4c76142B37bC99E4945d704a3", + "commit_store": "0x57b548C9c213EA2bcf60193E3D7fd2d2b53Fb9b3", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "WeMix Mainnet": { - "off_ramp": "0x3a129e6C18b23d18BA9E6Aa14Dc2e79d1f91c6c5", - "commit_store": "0x31f6ab382DDeb9A316Ab61C3945a5292a50a89AB", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xc1EcCE580B2C96f4fd202fB7c2a259ECe19a1bF2", + "commit_store": "0xA4755Cd68CA2092447c8c842659a2931f9110320", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "ZKSync Mainnet": { - "off_ramp": "0xb368c8946D9fa5A497cDe1Dff7213f9CdfD143Bf", - "commit_store": "0xa4d264470a67D9f6682EE12Bdc9c35Df44e3F194", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x6868FefbEFDc2B2FB75E6ED216dB1BeC02563D69", + "commit_store": "0x0d26BaE784c8986502E072F4e73B6168e2052045", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" } } }, @@ -616,69 +616,69 @@ Data = """ "wrapped_native": "0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d", "src_contracts": { "Arbitrum Mainnet": { - "on_ramp": "0x7A36511202f54a8A3Bc62Cc1df24bd391f7c9864", + "on_ramp": "0x140E6D5ba903F684944Dd27369d767DdEf958c9B", "deployed_at": 0 }, "Avalanche Mainnet": { - "on_ramp": "0x732753869bc6bB07Ec81A403F926bbF6fC2FeaE2", + "on_ramp": "0xB707a6D1d32CE99D5c669DeE71D30d25a066D32c", "deployed_at": 0 }, "BSC Mainnet": { - "on_ramp": "0xD5d33bc0BF395B39514B7f9f8F66ebc9D8e650Cb", + "on_ramp": "0xb485634dd2E545091722b9d4843d3644addf97e3", "deployed_at": 0 }, "Base Mainnet": { - "on_ramp": "0x400eFb50480a73FEc02b115b53F0Ec6EcFf03C67", + "on_ramp": "0xAAb6D9fc00aAc37373206e91789CcDE1E851b3E4", "deployed_at": 0 }, "Ethereum Mainnet": { - "on_ramp": "0x0F246651F1c2275B4E14d8ae166D1fd3Af05c405", + "on_ramp": "0x014ABcfDbCe9F67d0Df34574664a6C0A241Ec03A", "deployed_at": 0 }, "Optimism Mainnet": { - "on_ramp": "0x391516732884d3F8Eec3301C19b819E6e6044C17", + "on_ramp": "0x9379b446fcA75CA57834a4dA33f64ae317Be05e4", "deployed_at": 0 }, "Polygon Mainnet": { - "on_ramp": "0x566c7A2Cb557c36082301B97E998721D14E4bF7d", + "on_ramp": "0xD7a49AfEA62E77Ad6BEB2ed64673026271aae188", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Mainnet": { - "off_ramp": "0x1bee1FD97824288a36B725f9CF20E07A67d5113b", - "commit_store": "0xB3a48e8664C5dE26822ae44577b100b717C36a54", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x2C1539696E29012806a15Bcd9845Ed1278a9fd63", + "commit_store": "0x5b1762a6023157edaf2c46c818f447B1940765D6", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Avalanche Mainnet": { - "off_ramp": "0x633c19cCD7A818770f7BF59eB9C5AB632CDbc4D5", - "commit_store": "0xbbC073fb2D424eA45A571cc4dd91745E45d0aC73", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xe596D90EF0AEe10257109AC8394a85F8944bF6D0", + "commit_store": "0xd6Dc07804AE06f575C28094F99aCdDC1535904e7", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "BSC Mainnet": { - "off_ramp": "0x4D90524de5783257fd64d1a20689a5b9Bad25de0", - "commit_store": "0xAae8De9f1B7e2FFF0563c2BBf0c69593BD517b52", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x972a85d7ba0209F1896992B2687cC728cf769e50", + "commit_store": "0x5FB18729651f1EDA5ed5ac67594FD94Fa3DBcd29", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Base Mainnet": { - "off_ramp": "0x9118303DE7f4342F9B057f6EC1Be282aa543D99C", - "commit_store": "0xa75f463b8a1d8bf7694Ac13E02938894F45eFbaA", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xbeEDd1C5C13C5886c3d600e94Ff9e82C04A53C38", + "commit_store": "0x392304E3cb636f75Dc95340672F3b8A2359d5Ebc", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Ethereum Mainnet": { - "off_ramp": "0xFF61E57A2eE83FA262006C2DaF0D5fB2b36F3070", - "commit_store": "0xF433De9A293553c133E2dB90e226c2F2911f435C", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x658d9ae41A9c291De423d3B4B6C064f6dD0e7Ed2", + "commit_store": "0xd23391fCBb8a41b971f90bC6e95CC8beaD885221", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Optimism Mainnet": { - "off_ramp": "0x9D3aA479525a5BcE776dD83769e9F9b5B4dD4193", - "commit_store": "0x2B721632693A8BbABa3bA5F125C8cD33D66F28F7", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xd84E2316634ab6516Ecc829E2367633bfB3e4B6D", + "commit_store": "0x9d432DaF8aF8803baF6Cf560CF0f115c7D7b7f16", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Polygon Mainnet": { - "off_ramp": "0x9714098CDdAc380D4443293C55B6CBf6D6bbDbEb", - "commit_store": "0x4338f204C7698eE678d6c44117503f812ca1FA69", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x6d6a4a60E0E23dbea089c0fEbbA9c5912f02bc57", + "commit_store": "0x9CBe49E232aEF27B9d98aC752354879efd7b1E70", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" } } }, @@ -691,15 +691,15 @@ Data = """ "wrapped_native": "0x4200000000000000000000000000000000000001", "src_contracts": { "WeMix Mainnet": { - "on_ramp": "0x3C5Ab46fA1dB1dECD854224654313a69bf9fcAD3", + "on_ramp": "0xf3baf38136b55F656CC5fdd4417EB6C160877104", "deployed_at": 0 } }, "dest_contracts": { "WeMix Mainnet": { - "off_ramp": "0x2B555774B3D1dcbcd76efb7751F3c5FbCFABC5C4", - "commit_store": "0x213124614aAf31eBCE7c612A12aac5f8aAD77DE4", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xcB154Bb4ed63FC30C416Dd16A2d1C64D8DE8DfD5", + "commit_store": "0x6091D319080D06e1b656F83Ff001DAc124C55613", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" } } }, @@ -712,24 +712,24 @@ Data = """ "wrapped_native": "0x75cb093E4D61d2A2e65D8e0BBb01DE8d89b53481", "src_contracts": { "Arbitrum Mainnet": { - "on_ramp": "0x87353b87A373E1551D27EDacDaC1644741c6499F", + "on_ramp": "0x8d3039fE2400151c06Ae84a18CAf38dD9b6Ce58b", "deployed_at": 0 }, "Ethereum Mainnet": { - "on_ramp": "0xE43f9eD3146d76E627C2504E5140005027992De6", + "on_ramp": "0xdF5394c57A0570ECe45DE0c0fA2e722A672B9198", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Mainnet": { - "off_ramp": "0x2cc33de75dAFDb3F8F4f24244a9C420374e2C001", - "commit_store": "0x67fE38dB73be154a1f1a63221F898B9d5EE4eF63", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xc6bA5a79991b3775F28259BA551b30eCb0b6D499", + "commit_store": "0xb81b0EE9675879a2Dcaa70CCC3b2c2D38fa404b0", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Ethereum Mainnet": { - "off_ramp": "0xc2B1A8c931582D041ba5fF30AEB9fA828B30754d", - "commit_store": "0x90073Ea7A1Ee4Fe5d638B4216Bc60479Eba52001", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x1fd37Bf813D0723BEF614bC93d9D2Ce1AcB3228f", + "commit_store": "0x7C1efda9F744a2B4f88b924B03C6d6B53E3E390F", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" } } }, @@ -742,51 +742,51 @@ Data = """ "wrapped_native": "0x4200000000000000000000000000000000000006", "src_contracts": { "Arbitrum Mainnet": { - "on_ramp": "0x65Ad802d80aD6a96C5a4bc9e57E16099de99Dc7F", + "on_ramp": "0xb2e694efcDa0aeB81700019c3047F92fC3bb520E", "deployed_at": 0 }, "BSC Mainnet": { - "on_ramp": "0x8C5149ff7Cfd99dd561caE9B7abFAA0Ef79eAbeC", + "on_ramp": "0xeb7E8c40E95Cd31666359AaeB1F2CccaAB935643", "deployed_at": 0 }, "Base Mainnet": { - "on_ramp": "0x71dB32eF442c29d8cbf72a9AFcb1Ef12B35b0BF4", + "on_ramp": "0x347A070EA1B04bc2b4A8f14320688C277022C90e", "deployed_at": 0 }, "Ethereum Mainnet": { - "on_ramp": "0xbD5F9C193a7fEF5D578C55Ddfe4d08d6BCc15648", + "on_ramp": "0x7d2aF78868993a5a86676BA639eC0412709707D9", "deployed_at": 0 }, "Optimism Mainnet": { - "on_ramp": "0x659303e8d4306D3ea8676FB034d56FB6f37E19d9", + "on_ramp": "0x7AB4329D19A0255DA90Ee8dbAA60f8f0cB7950C1", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Mainnet": { - "off_ramp": "0x8d3E1b15ebC96cec1ffc092cEcAeA6c1DD00aF9b", - "commit_store": "0x1f1DEa0210aE346A20E270a1C3355d99b0B949D2", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x0Cb870C12013c2d5743585F85b298e129cE57203", + "commit_store": "0x682Af2Cfaa5aE554eF222728fF7C7168232e2Ea5", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "BSC Mainnet": { - "off_ramp": "0x7a57670Fa0Cf1Bc2665a1Ae0f5031b9f5a43dD3a", - "commit_store": "0x18ffb74D94175d00D8bB67B70737dE2cE45eed07", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xdfA601DA2163Ca2C77Eb32126E6B7A97024f6181", + "commit_store": "0xb88F947C85b1c6B1E2A0C22792BA58C40c07a644", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Base Mainnet": { - "off_ramp": "0xEfa90cE6289A2777cd5B8fb991B2D0Be44cA5067", - "commit_store": "0xACa5f0942Bb7fF297A7c25E8364373702D81bb3f", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x30612D8fb7EcD05ECb863560BA8806d88e8BbFAF", + "commit_store": "0xf84d023CCFF8b74e565117cBc034859D06EA1976", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Ethereum Mainnet": { - "off_ramp": "0xdF8f09AB4DfB49dEC8a0B8b7f1B7F4134252D3e9", - "commit_store": "0x8Ae635d264f20f1dbC0dea03712C194AdbeF50D1", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xb1caBa234721b8F12C545B3dC25B3F87f6a9c91B", + "commit_store": "0x67Ff921DA5d0B61a9b05BDFa92d9f5f992d7861a", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Optimism Mainnet": { - "off_ramp": "0xE4D6AAF678b986D3E6B7A85FA33d0519716a5525", - "commit_store": "0xBF80E30c8c013Ec0d05e2a959CF8000407C813EC", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x4adcD1FB4ec76A3c9960E048f81C19A51B2eAC49", + "commit_store": "0x7B58aF65DFD717fC0d044D860c8f9A85Ca6813D6", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" } } }, @@ -795,91 +795,91 @@ Data = """ "fee_token": "0x4200000000000000000000000000000000000006", "arm": "0x1c51b6D5BFcFB7ee82C80949DFD146dB157a7E49", "router": "0x3206695CaE29952f4b0c22a169725a865bc8Ce0f", - "price_registry": "0x9270AAA75F4B9038f4c25fEc665B02a150a90361", + "price_registry": "0xb52545aECE8C73A97E52a146757EC15b90Ed8488", "wrapped_native": "0x4200000000000000000000000000000000000006", "src_contracts": { "Arbitrum Mainnet": { - "on_ramp": "0x0C9BE7Cfd12c735E5aaE047C1dCB845d54E518C3", + "on_ramp": "0x6bA81b83091A23e8F2AA173B2b939fAf9E320DfB", "deployed_at": 0 }, "Avalanche Mainnet": { - "on_ramp": "0xD0D3E757bFBce7ae1881DDD7F6d798DDcE588445", + "on_ramp": "0xB9D655Ad5ba80036725d6c753Fa6AF0454cBF630", "deployed_at": 0 }, "BSC Mainnet": { - "on_ramp": "0xa3c9544B82846C45BE37593d5d9ACffbE61BF3A6", + "on_ramp": "0xfC51a4CF925f202d86c6092cda879689d2C17201", "deployed_at": 0 }, "Base Mainnet": { - "on_ramp": "0x0b1760A8112183303c5526C6b24569fd3A274f3B", + "on_ramp": "0xfE11cfC957cCa331192EAC60040b442303CcA0a9", "deployed_at": 0 }, "Ethereum Mainnet": { - "on_ramp": "0x55183Db1d2aE0b63e4c92A64bEF2CBfc2032B127", + "on_ramp": "0xE4C51Dc01A4E0aB14c7a7a2ed1655E9CF8A3E698", "deployed_at": 0 }, "Gnosis Mainnet": { - "on_ramp": "0x14aA3CC03583aA557DBca4ce72288Cc5F37DDE34", + "on_ramp": "0x604a9dda2e27D56cfCe457E437a61f4ED0De9dE6", "deployed_at": 0 }, "Mode Mainnet": { - "on_ramp": "0x034eA573B049210315110f7eA11c9618E32F08Ae", + "on_ramp": "0xc6d9Cb39e34D83d21A021504024887A0e96D4e94", "deployed_at": 0 }, "Polygon Mainnet": { - "on_ramp": "0x6B57145e322c877E7D91Ed8E31266eB5c02F7EfC", + "on_ramp": "0x9c725164b60E3f6d4d5b7A2841C63E9FD0988805", "deployed_at": 0 }, "WeMix Mainnet": { - "on_ramp": "0x82e9f4C5ec4a84E310d60D462a12042E5cbA0954", + "on_ramp": "0x6Dbc8D4e5556FD0B82bB0D67c94D0fA1cd288AbD", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Mainnet": { - "off_ramp": "0xaC8C94242aa8234Bf89682aBcDDf805AE8cff61D", - "commit_store": "0x55028780918330FD00a34a61D9a7Efd3f43ca845", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xEB3d6956BCf7b1E29634C8cd182fC9FA740Bce34", + "commit_store": "0x6569761680DaC4Bf940244E3cF198A069E34E91F", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Avalanche Mainnet": { - "off_ramp": "0x8dc6490A6204dF846BaBE809cB695ba17Df1F9B1", - "commit_store": "0xA190660787B6B183Dd82B243eA10e609327c7308", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xF8E38B4503418659F791F2135c4912F85BFB7988", + "commit_store": "0x23CAc55aDDF28179A999858720E9Fe686372083A", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "BSC Mainnet": { - "off_ramp": "0xE14501F2838F2fA1Ceb52E78ABdA289EcE1705EA", - "commit_store": "0xa8DD25B29787527Df283211C24Ac72B17150A696", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x51f37b538aD2Bcb9Eaf884859BF7C5Ec58AEc885", + "commit_store": "0xF472FEb09544Bf991773f4B94fe3F03e458d1b8d", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Base Mainnet": { - "off_ramp": "0xBAE6560eCa9B77Cb047158C783e36F7735C86037", - "commit_store": "0x6168aDF58e1Ad446BaD45c6275Bef60Ef4FFBAb8", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x519ee6B83f57df95486aeA6E26819cb7b4B8ee99", + "commit_store": "0xCfdF2b21D9777E2B0a221F6b6D8fe176461f058e", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Ethereum Mainnet": { - "off_ramp": "0xd2D98Be6a1C241e86C807e51cED6ABb51d044203", - "commit_store": "0x4d75A5cE454b264b187BeE9e189aF1564a68408D", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x9979c2dfEcA9051Cf7f08274d978984B2dB12C60", + "commit_store": "0x9358663E8f89df8EFE2346a3c4c1D65d03300576", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Gnosis Mainnet": { - "off_ramp": "0x4358640A2419119DBe0933b5F2c288c3EB2c082C", - "commit_store": "0x44d1a05ef6e54a3CB35a1497303bA272f15f45ed", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x01449040D92D75c58FaDc9Bc1c0eadc70C550484", + "commit_store": "0xb63230DfcE291DA76FD946EFbc966549F9300347", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Mode Mainnet": { - "off_ramp": "0xDf9717d724828537902Fb0c3B7C56c641463Fa38", - "commit_store": "0x8aEFF283381914E07Fc371601D59648ab6D2C0B1", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x5a4BEeafd345264360E6894a6bc5F54a70814E68", + "commit_store": "0x4E94a327A38E6F3509a5639dCF933CfF6DE93FFD", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Polygon Mainnet": { - "off_ramp": "0x7c6221880A1D62506b1A08Dab3Bf695A49AcDD22", - "commit_store": "0x0684076EE3595221861C50cDb9Cb66402Ec11Cb9", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x4BA0A3bD1E2b70b2fe165A53219e7eF6376849a4", + "commit_store": "0xA0f02e1F9C641C9610f688be84F889fE518b36e3", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "WeMix Mainnet": { - "off_ramp": "0x3e5B3b7559D39563a74434157b31781322dA712D", - "commit_store": "0x7954372FF6f80908e5A2dC2a19d796A1005f91D2", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x2f40dCCb74d8B2dd7af065232a06778f2D019375", + "commit_store": "0xd1111a601BAb64a6428426095206A43710CaE932", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" } } }, @@ -892,78 +892,78 @@ Data = """ "wrapped_native": "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", "src_contracts": { "Arbitrum Mainnet": { - "on_ramp": "0xD16D025330Edb91259EEA8ed499daCd39087c295", + "on_ramp": "0x13263aC754d1e29430930672E3C0019f2BC44Ba2", "deployed_at": 0 }, "Avalanche Mainnet": { - "on_ramp": "0x5FA30697e90eB30954895c45b028F7C0dDD39b12", + "on_ramp": "0x56cb9Cd82553Bd8157e6504020c38f6DA4971717", "deployed_at": 0 }, "BSC Mainnet": { - "on_ramp": "0xF5b5A2fC11BF46B1669C3B19d98B19C79109Dca9", + "on_ramp": "0x164507757F7d5Ab35C6af44EeEB099F5be29Da57", "deployed_at": 0 }, "Base Mainnet": { - "on_ramp": "0x20B028A2e0F6CCe3A11f3CE5F2B8986F932e89b4", + "on_ramp": "0xD26A4E0c664E72e3c29E634867191cB1cb9AF570", "deployed_at": 0 }, "Ethereum Mainnet": { - "on_ramp": "0xFd77c53AA4eF0E3C01f5Ac012BF7Cc7A3ECf5168", + "on_ramp": "0x1DAcBae00c779913e6E9fc1A3323FbA4847ba53C", "deployed_at": 0 }, "Gnosis Mainnet": { - "on_ramp": "0x4616621704C81801A56D29c961F9395ee153d46C", + "on_ramp": "0xcc4A8CFd756895d91B476Dd5461286b300914aBf", "deployed_at": 0 }, "Optimism Mainnet": { - "on_ramp": "0x3111cfbF5e84B5D9BD952dd8e957f4Ca75f728Cf", + "on_ramp": "0x868B71490B36674B3B9006fa8711C6fA26A26631", "deployed_at": 0 }, "WeMix Mainnet": { - "on_ramp": "0x5060eF647a1F66BE6eE27FAe3046faf8D53CeB2d", + "on_ramp": "0x9363330c6d807a1393c1fd35893c64d26931CDe6", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Mainnet": { - "off_ramp": "0xa8a9eDa2867c2E0CE0d5ECe273961F1EcC3CC25B", - "commit_store": "0xbD4480658dca8496a65046dfD1BDD44EF897Bdb5", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x60f2788225CeE4a94f8E7589931d5A14Cbc4367d", + "commit_store": "0x4DEc80ED383171EC54699B22B869bE098d3cBac9", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Avalanche Mainnet": { - "off_ramp": "0xB9e3680639c9F0C4e0b02FD81C445094426244Ae", - "commit_store": "0x8c63d4e67f7c4af6FEd2f56A34fB4e01CB807CFF", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x35c1Bb5A9c2F3fa8f8dFF470a6bE7d362CeA1ef3", + "commit_store": "0xB3324b80f50a31b12c0C733560D3aA2a32dc5C33", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "BSC Mainnet": { - "off_ramp": "0x592773924741F0Da889a0dfdab71171Dd11E054C", - "commit_store": "0xEC4d35E1A85f770f4D93BA43a462c9d87Ef7017e", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xE58074f8F56E23836f088Ac8b4f3882c1b4CAcbb", + "commit_store": "0x2110a5f138364d788FDF54eCBa25C1688181cb00", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Base Mainnet": { - "off_ramp": "0xD0FA7DE2D18A0c59D3fD7dfC7aB4e913C6Aa7b68", - "commit_store": "0xF88053B9DAC8Dd3039a4eFa8639159aaa3F2D4Cb", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xF4a9Dbb7f3FBa02e3a244B464e459C32B63857F1", + "commit_store": "0x936A0C8635D7087a2D22494762e9a697C3C3D545", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Ethereum Mainnet": { - "off_ramp": "0x45320085fF051361D301eC1044318213A5387A15", - "commit_store": "0x4Dc771B5ef21ef60c33e2987E092345f2b63aE08", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xa06e68a11d5694316Cc819f2FFD02663e3314C7C", + "commit_store": "0xB73d668B26817659E9f48F16b780480B4401cFcE", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Gnosis Mainnet": { - "off_ramp": "0x0A04eC196454825d361886cf4FA113A948164Ef8", - "commit_store": "0x74b72633b63A8f4374a12DB6F609305BC5a1b2d5", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x9e2e4e397226f347d11D3fF8469d0c3FFa750C3B", + "commit_store": "0x75faF05ec32C9dA97E99Eb6fb18b5087DecAAa82", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Optimism Mainnet": { - "off_ramp": "0xBa754ecd3CFA7E9093F688EAc3860cf9D07Fc0AC", - "commit_store": "0x04C0D5302E3D8Ca0A0019141a52a23B59cdb70e4", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x805c292775Be43b10Cc744ea7E81d9939a08cEa4", + "commit_store": "0x52faD8fb48451AA555c0f59accA1dC7C69B9681B", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "WeMix Mainnet": { - "off_ramp": "0xd7c877ea02310Cce9278D9A048Aa1Bb9aF72F00d", - "commit_store": "0x92A1C927E8E10Ab6A40E5A5154e2300D278d1a67", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xd357Bee1Ff4B1cce7dc0d953a9E5613476781732", + "commit_store": "0x784F81E5c2960a7c7e714D6BA383f0d14e93eD65", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" } } }, @@ -976,69 +976,69 @@ Data = """ "wrapped_native": "0x7D72b22a74A216Af4a002a1095C8C707d6eC1C5f", "src_contracts": { "Arbitrum Mainnet": { - "on_ramp": "0x9aBfd6f4C865610692AB6fb1Be862575809fFabf", + "on_ramp": "0xA89c8E2b85a6BeC901C29107E9B640Ff256fc762", "deployed_at": 0 }, "Avalanche Mainnet": { - "on_ramp": "0xbE0Cfae74677F8dd16a246a3a5c8cbB1973118f4", + "on_ramp": "0xEe41778FdE32C19f8f7E0C780838b1cb76bf8aEA", "deployed_at": 0 }, "BSC Mainnet": { - "on_ramp": "0x56657ec4D15C71f7F3C17ba2b21C853A24Dc5381", + "on_ramp": "0x4A62c842f06AC261c93bb5805289c613f55e2Aeb", "deployed_at": 0 }, "Ethereum Mainnet": { - "on_ramp": "0x190bcE84CF2d500B878966F4Cf98a50d78f2675E", + "on_ramp": "0x6c6Dd4fCa5A7B2F11AA3057AB573DD8878C76C5e", "deployed_at": 0 }, "Kroma Mainnet": { - "on_ramp": "0x47E9AE0A815C94836202E696748A5d5476aD8735", + "on_ramp": "0x19e7aD9B0cb28E4604f91376eE2f7dFF0E66318a", "deployed_at": 0 }, "Optimism Mainnet": { - "on_ramp": "0x70f3b0FD7e6a4B9B623e9AB859604A9EE03e48BD", + "on_ramp": "0x96c4e2B1b2c949F570D5992272B7722a3a1d1709", "deployed_at": 0 }, "Polygon Mainnet": { - "on_ramp": "0x777058C1e1dcE4eB8001F38631a1cd9450816e5a", + "on_ramp": "0x728C5d58f6079744E1e41BDAE16200f6c3725954", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Mainnet": { - "off_ramp": "0x2ba68a395B72a6E3498D312efeD755ed2f3CF223", - "commit_store": "0xdAeC234DA83F68707Bb8AcB2ee6a01a5FD4c2391", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x007b0D0e63B5939E64286F4C4afB2D52c6114025", + "commit_store": "0x4D8BaDA9006A6C1cd724ae6F2E343640a0D9706d", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Avalanche Mainnet": { - "off_ramp": "0xFac907F9a1087B846Faa75A14C5d34A8639233d8", - "commit_store": "0xF2812063446c7deD2CA306c67A68364BdDcbEfc5", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x8Ef00c4B45f7B3D895150F0C5D978AC6949Af174", + "commit_store": "0xF580F5ba66Eec295B8bE3Ea613985b6CEc65D7C8", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "BSC Mainnet": { - "off_ramp": "0x6ec9ca4Cba62cA17c55F05ad2000B46192f02035", - "commit_store": "0x84534BE763366a69710E119c100832955795B34B", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x90fC76fBd6B82eAe27b34e136271b94788237738", + "commit_store": "0xda174CA3c585b260fc5c347c88cA5946Ce0f46E8", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Ethereum Mainnet": { - "off_ramp": "0xF92Fa796F5307b029c65CA26f322a6D86f211194", - "commit_store": "0xbeC110FF43D52be2066B06525304A9924E16b73b", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x76DE34244b92aB9F4e9D550269Ef1CAdE0d1A2E9", + "commit_store": "0xcbCFFD854a2d033019B98f5583FcD5caDc2bb802", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Kroma Mainnet": { - "off_ramp": "0xF886d8DC64E544af4835cbf91e5678A54D95B80e", - "commit_store": "0x8794C9534658fdCC44f2FF6645Bf31cf9F6d2d5D", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x64F833f1347fd8Ac6b07a08adCc844FFeB8dF928", + "commit_store": "0xf79eA7f1D70640A7a8A309465ca29b35D4103c11", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Optimism Mainnet": { - "off_ramp": "0x87220D01DF0fF27149B47227897074653788fd23", - "commit_store": "0xF8dD2be2C6FA43e48A17146380CbEBBB4291807b", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xd76783CF6A98C95F5927b4b98D5E1Efb78CFc563", + "commit_store": "0x3837A341afE24A451d868966114A39715e91C6f6", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Polygon Mainnet": { - "off_ramp": "0x8f0229804513A9Bc00c1308414AB279Dbc718ae1", - "commit_store": "0x3A85D1b8641d83a87957C6ECF1b62151213e0842", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xe22ef88FccfE6C304Fd245005e959837C86B52F6", + "commit_store": "0x98Ebd40E2535D404fFB361A85bf6b82D64Bda151", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" } } }, @@ -1051,24 +1051,24 @@ Data = """ "wrapped_native": "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91", "src_contracts": { "Arbitrum Mainnet": { - "on_ramp": "0x9033687a0f03012e015f8f8f2a59da57531d2B43", + "on_ramp": "0x66EcB7c8c122d74f19Fc28b275f213Ef8991B7AB", "deployed_at": 0 }, "Ethereum Mainnet": { - "on_ramp": "0x3B80Fe300c9A611abA0496e2543B66Ff7bD4B9e9", + "on_ramp": "0xD1B33FAd3fF7a793EE39473f865630e3b6371086", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Mainnet": { - "off_ramp": "0xF0a08aC528668D4fe8C4cF235a8B82cbf242Fa9d", - "commit_store": "0x5a3C9b21b03E4eBcccb57D296e7ff54102F04424", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0xd448c815C421fFBd770C2d3B9a9cBa4E33E3885c", + "commit_store": "0xC64f4b53eDb629B3293eE806D9b2aCBd1dDE4e13", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" }, "Ethereum Mainnet": { - "off_ramp": "0x7c887B97F9Bba9355EC10e2bA949AdB491Ef44Fd", - "commit_store": "0xA42bf0c8794FA8853Ec0F1B24a489972e8CF4C30", - "receiver_dapp": "0xb509c046e1182c7b36d2d9733554bc268716803c" + "off_ramp": "0x6BACb854483Ffe310F5Ac08879868E96AE0DC000", + "commit_store": "0x117D1015FD2CBaa32A1fe0e0C913fc02B4D5f115", + "receiver_dapp": "0xB509c046e1182c7B36d2D9733554BC268716803C" } } } @@ -1081,52 +1081,80 @@ TTL = '8h' [CCIP.Env.Network] selected_networks = [ - 'ARBITRUM_MAINNET', - 'AVALANCHE_MAINNET', - 'BSC_MAINNET', - 'BASE_MAINNET', - 'ETHEREUM_MAINNET', - 'KROMA_MAINNET', - 'OPTIMISM_MAINNET', - 'POLYGON_MAINNET', - 'WEMIX_MAINNET', - ] + 'ARBITRUM_MAINNET', + 'AVALANCHE_MAINNET', + 'BASE_MAINNET', + 'BLAST_MAINNET', + 'BSC_MAINNET', + 'CELO_MAINNET', + 'ETHEREUM_MAINNET', + 'GNOSIS_MAINNET', + 'KROMA_MAINNET', + 'METIS_ANDROMEDA', + 'MODE_MAINNET', + 'OPTIMISM_MAINNET', + 'POLYGON_MAINNET', + 'WEMIX_MAINNET', + 'ZKSYNC_MAINNET', +] [CCIP.Groups.load] NetworkPairs = [ - 'ETHEREUM_MAINNET,OPTIMISM_MAINNET', - 'ETHEREUM_MAINNET,AVALANCHE_MAINNET', - 'ETHEREUM_MAINNET,POLYGON_MAINNET', - 'ETHEREUM_MAINNET,BSC_MAINNET', - 'ETHEREUM_MAINNET,ARBITRUM_MAINNET', - 'ETHEREUM_MAINNET,BASE_MAINNET', - 'ETHEREUM_MAINNET,WEMIX_MAINNET', - 'AVALANCHE_MAINNET,POLYGON_MAINNET', - 'BASE_MAINNET,OPTIMISM_MAINNET', - 'BASE_MAINNET,ARBITRUM_MAINNET', - 'AVALANCHE_MAINNET,BSC_MAINNET', - 'BSC_MAINNET,POLYGON_MAINNET', - 'OPTIMISM_MAINNET,POLYGON_MAINNET', - 'BASE_MAINNET,BSC_MAINNET', - 'POLYGON_MAINNET,ARBITRUM_MAINNET', # added as batch 1 - 'ARBITRUM_MAINNET,BSC_MAINNET', # added as batch 1 - 'ARBITRUM_MAINNET,OPTIMISM_MAINNET', # added as batch 1 - 'AVALANCHE_MAINNET,OPTIMISM_MAINNET', # added as batch 2 - 'AVALANCHE_MAINNET,ARBITRUM_MAINNET', # added as batch 2 - 'BASE_MAINNET,POLYGON_MAINNET', # added as batch 2 - 'BSC_MAINNET,OPTIMISM_MAINNET', # added as batch 2 - 'AVALANCHE_MAINNET,BASE_MAINNET', # added as batch 2 - 'WEMIX_MAINNET,KROMA_MAINNET', - 'BSC_MAINNET,WEMIX_MAINNET', # added as batch 2 - 'AVALANCHE_MAINNET,WEMIX_MAINNET', # added as batch 2 - 'POLYGON_MAINNET,WEMIX_MAINNET', # added as batch 2 - 'WEMIX_MAINNET,ARBITRUM_MAINNET', # added as batch 2 - 'OPTIMISM_MAINNET,WEMIX_MAINNET' # added as batch 2 + 'ARBITRUM_MAINNET,BSC_MAINNET', + 'ARBITRUM_MAINNET,OPTIMISM_MAINNET', + 'AVALANCHE_MAINNET,ARBITRUM_MAINNET', + 'AVALANCHE_MAINNET,BASE_MAINNET', + 'AVALANCHE_MAINNET,BSC_MAINNET', + 'AVALANCHE_MAINNET,OPTIMISM_MAINNET', + 'AVALANCHE_MAINNET,POLYGON_MAINNET', + 'AVALANCHE_MAINNET,WEMIX_MAINNET', + 'BASE_MAINNET,ARBITRUM_MAINNET', + 'BASE_MAINNET,BSC_MAINNET', + 'BASE_MAINNET,OPTIMISM_MAINNET', + 'BASE_MAINNET,POLYGON_MAINNET', + 'BLAST_MAINNET,ARBITRUM_MAINNET', + 'BLAST_MAINNET,BASE_MAINNET', + 'BLAST_MAINNET,BSC_MAINNET', + 'BSC_MAINNET,OPTIMISM_MAINNET', + 'BSC_MAINNET,POLYGON_MAINNET', + 'BSC_MAINNET,WEMIX_MAINNET', + 'ETHEREUM_MAINNET,ARBITRUM_MAINNET', + 'ETHEREUM_MAINNET,AVALANCHE_MAINNET', + 'ETHEREUM_MAINNET,BASE_MAINNET', + 'ETHEREUM_MAINNET,BLAST_MAINNET', + 'ETHEREUM_MAINNET,BSC_MAINNET', + 'ETHEREUM_MAINNET,CELO_MAINNET', + 'ETHEREUM_MAINNET,GNOSIS_MAINNET', + 'ETHEREUM_MAINNET,METIS_ANDROMEDA', + 'ETHEREUM_MAINNET,MODE_MAINNET', + 'ETHEREUM_MAINNET,OPTIMISM_MAINNET', + 'ETHEREUM_MAINNET,POLYGON_MAINNET', + 'ETHEREUM_MAINNET,WEMIX_MAINNET', + 'ETHEREUM_MAINNET,ZKSYNC_MAINNET', + 'GNOSIS_MAINNET,ARBITRUM_MAINNET', + 'GNOSIS_MAINNET,AVALANCHE_MAINNET', + 'GNOSIS_MAINNET,BASE_MAINNET', + 'GNOSIS_MAINNET,BSC_MAINNET', + 'GNOSIS_MAINNET,OPTIMISM_MAINNET', + 'GNOSIS_MAINNET,POLYGON_MAINNET', + 'METIS_ANDROMEDA,ARBITRUM_MAINNET', + 'MODE_MAINNET,ARBITRUM_MAINNET', + 'MODE_MAINNET,BASE_MAINNET', + 'MODE_MAINNET,BSC_MAINNET', + 'MODE_MAINNET,OPTIMISM_MAINNET', + 'OPTIMISM_MAINNET,POLYGON_MAINNET', + 'OPTIMISM_MAINNET,WEMIX_MAINNET', + 'POLYGON_MAINNET,ARBITRUM_MAINNET', + 'POLYGON_MAINNET,WEMIX_MAINNET', + 'WEMIX_MAINNET,ARBITRUM_MAINNET', + 'WEMIX_MAINNET,KROMA_MAINNET', + 'ZKSYNC_MAINNET,ARBITRUM_MAINNET' ] BiDirectionalLane = true -PhaseTimeout = '30m' +PhaseTimeout = '20m' ExistingDeployment = true +SkipRequestIfAnotherRequestTriggeredWithin = '40m' [CCIP.Groups.load.TokenConfig] NoOfTokensPerChain = 1 @@ -1137,7 +1165,7 @@ TimeUnit = '1h' TestDuration = '5h' TestRunName = 'Soak_test_mainnet' FailOnFirstErrorInLoad = true -SkipRequestIfAnotherRequestTriggeredWithin = '40m' + [[CCIP.Groups.load.LoadProfile.MsgProfile.MsgDetails]] MsgType = 'Data' @@ -1149,34 +1177,55 @@ AmountPerToken = 1 [CCIP.Groups.smoke] # these are all the valid network pairs NetworkPairs = [ - 'ETHEREUM_MAINNET,OPTIMISM_MAINNET', - 'ETHEREUM_MAINNET,AVALANCHE_MAINNET', - 'ETHEREUM_MAINNET,POLYGON_MAINNET', - 'ETHEREUM_MAINNET,BSC_MAINNET', - 'ETHEREUM_MAINNET,ARBITRUM_MAINNET', - 'ETHEREUM_MAINNET,BASE_MAINNET', - 'ETHEREUM_MAINNET,WEMIX_MAINNET', - 'AVALANCHE_MAINNET,POLYGON_MAINNET', - 'BASE_MAINNET,OPTIMISM_MAINNET', - 'BASE_MAINNET,ARBITRUM_MAINNET', - 'AVALANCHE_MAINNET,BSC_MAINNET', - 'BSC_MAINNET,POLYGON_MAINNET', - 'OPTIMISM_MAINNET,POLYGON_MAINNET', - 'BASE_MAINNET,BSC_MAINNET', - 'POLYGON_MAINNET,ARBITRUM_MAINNET', # added as batch 1 - 'ARBITRUM_MAINNET,BSC_MAINNET', # added as batch 1 - 'ARBITRUM_MAINNET,OPTIMISM_MAINNET', # added as batch 1 - 'AVALANCHE_MAINNET,OPTIMISM_MAINNET', # added as batch 2 - 'AVALANCHE_MAINNET,ARBITRUM_MAINNET', # added as batch 2 - 'BASE_MAINNET,POLYGON_MAINNET', # added as batch 2 - 'BSC_MAINNET,OPTIMISM_MAINNET', # added as batch 2 - 'AVALANCHE_MAINNET,BASE_MAINNET', # added as batch 2 - 'WEMIX_MAINNET,KROMA_MAINNET', - 'BSC_MAINNET,WEMIX_MAINNET', # added as batch 2 - 'AVALANCHE_MAINNET,WEMIX_MAINNET', # added as batch 2 - 'POLYGON_MAINNET,WEMIX_MAINNET', # added as batch 2 - 'WEMIX_MAINNET,ARBITRUM_MAINNET', # added as batch 2 - 'OPTIMISM_MAINNET,WEMIX_MAINNET' # added as batch 2 + 'ARBITRUM_MAINNET,BSC_MAINNET', + 'ARBITRUM_MAINNET,OPTIMISM_MAINNET', + 'AVALANCHE_MAINNET,ARBITRUM_MAINNET', + 'AVALANCHE_MAINNET,BASE_MAINNET', + 'AVALANCHE_MAINNET,BSC_MAINNET', + 'AVALANCHE_MAINNET,OPTIMISM_MAINNET', + 'AVALANCHE_MAINNET,POLYGON_MAINNET', + 'AVALANCHE_MAINNET,WEMIX_MAINNET', + 'BASE_MAINNET,ARBITRUM_MAINNET', + 'BASE_MAINNET,BSC_MAINNET', + 'BASE_MAINNET,OPTIMISM_MAINNET', + 'BASE_MAINNET,POLYGON_MAINNET', + 'BLAST_MAINNET,ARBITRUM_MAINNET', + 'BLAST_MAINNET,BASE_MAINNET', + 'BLAST_MAINNET,BSC_MAINNET', + 'BSC_MAINNET,OPTIMISM_MAINNET', + 'BSC_MAINNET,POLYGON_MAINNET', + 'BSC_MAINNET,WEMIX_MAINNET', + 'ETHEREUM_MAINNET,ARBITRUM_MAINNET', + 'ETHEREUM_MAINNET,AVALANCHE_MAINNET', + 'ETHEREUM_MAINNET,BASE_MAINNET', + 'ETHEREUM_MAINNET,BLAST_MAINNET', + 'ETHEREUM_MAINNET,BSC_MAINNET', + 'ETHEREUM_MAINNET,CELO_MAINNET', + 'ETHEREUM_MAINNET,GNOSIS_MAINNET', + 'ETHEREUM_MAINNET,METIS_ANDROMEDA', + 'ETHEREUM_MAINNET,MODE_MAINNET', + 'ETHEREUM_MAINNET,OPTIMISM_MAINNET', + 'ETHEREUM_MAINNET,POLYGON_MAINNET', + 'ETHEREUM_MAINNET,WEMIX_MAINNET', + 'ETHEREUM_MAINNET,ZKSYNC_MAINNET', + 'GNOSIS_MAINNET,ARBITRUM_MAINNET', + 'GNOSIS_MAINNET,AVALANCHE_MAINNET', + 'GNOSIS_MAINNET,BASE_MAINNET', + 'GNOSIS_MAINNET,BSC_MAINNET', + 'GNOSIS_MAINNET,OPTIMISM_MAINNET', + 'GNOSIS_MAINNET,POLYGON_MAINNET', + 'METIS_ANDROMEDA,ARBITRUM_MAINNET', + 'MODE_MAINNET,ARBITRUM_MAINNET', + 'MODE_MAINNET,BASE_MAINNET', + 'MODE_MAINNET,BSC_MAINNET', + 'MODE_MAINNET,OPTIMISM_MAINNET', + 'OPTIMISM_MAINNET,POLYGON_MAINNET', + 'OPTIMISM_MAINNET,WEMIX_MAINNET', + 'POLYGON_MAINNET,ARBITRUM_MAINNET', + 'POLYGON_MAINNET,WEMIX_MAINNET', + 'WEMIX_MAINNET,ARBITRUM_MAINNET', + 'WEMIX_MAINNET,KROMA_MAINNET', + 'ZKSYNC_MAINNET,ARBITRUM_MAINNET' ] BiDirectionalLane = true @@ -1184,7 +1233,7 @@ PhaseTimeout = '20m' LocalCluster = false ExistingDeployment = true ReuseContracts = true - +SkipRequestIfAnotherRequestTriggeredWithin = '24h' [CCIP.Groups.smoke.TokenConfig] NoOfTokensPerChain = 1 diff --git a/integration-tests/ccip-tests/testconfig/override/mainnet_1.5_B4_native_dataonly_testrouter.toml b/integration-tests/ccip-tests/testconfig/override/mainnet_1.5_B4_native_dataonly_testrouter.toml new file mode 100644 index 00000000000..8f2a6401f0c --- /dev/null +++ b/integration-tests/ccip-tests/testconfig/override/mainnet_1.5_B4_native_dataonly_testrouter.toml @@ -0,0 +1,1214 @@ +[CCIP] +[CCIP.ContractVersions] +PriceRegistry = 'latest' +OffRamp = 'latest' +OnRamp = 'latest' +TokenPool = 'latest' +CommitStore = 'latest' + +[CCIP.Deployments] +Data = """ +{ + "lane_configs": { + "Arbitrum Mainnet": { + "is_mock_arm": true, + "fee_token": "0xf97f4df75117a78c1A5a0DBb814Af92458539FB4", + "arm": "0xC2C5E22a2d9715ed5C5BCC4D8eFf5966cf260744", + "router": "0x33340200b7893fc478Eb2558FfC7B100E5B3869c", + "price_registry": "0x3971cfEf12c4CC6eD14D65B39C9EC6C740C19A40", + "wrapped_native": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", + "src_contracts": { + "Avalanche Mainnet": { + "on_ramp": "0xe80cC83B895ada027b722b78949b296Bd1fC5639", + "deployed_at": 0 + }, + "Base Mainnet": { + "on_ramp": "0xc1b6287A3292d6469F2D8545877E40A2f75CA9a6", + "deployed_at": 0 + }, + "BSC Mainnet": { + "on_ramp": "0x14bF7b1Ca6b843f386bfDfa76BFd439919b9378D", + "deployed_at": 0 + }, + "Ethereum Mainnet": { + "on_ramp": "0x67761742ac8A21Ec4D76CA18cbd701e5A6F3Bef3", + "deployed_at": 0 + }, + "Gnosis Mainnet": { + "on_ramp": "0xc7d6B885d8A4286E6311F79227430b7862311cd3", + "deployed_at": 0 + }, + "Metis Andromeda": { + "on_ramp": "0xF1e73c37CDa8E47768De2246AEf5eFD4d76330ae", + "deployed_at": 0 + }, + "Mode Mainnet": { + "on_ramp": "0xd236ea4DDE7de1e594021764E2f6Cd8e8cD7F047", + "deployed_at": 0 + }, + "Optimism Mainnet": { + "on_ramp": "0xAFECc7b67c6a8e606e94ce4e2F70D83C2206C2cb", + "deployed_at": 0 + }, + "Polygon Mainnet": { + "on_ramp": "0x6087d6C33946670232DF09Fe93eECbaEa3D6864d", + "deployed_at": 0 + } + }, + "dest_contracts": { + "Avalanche Mainnet": { + "off_ramp": "0x95095007d5Cc3E7517A1A03c9e228adA5D0bc376", + "commit_store": "0x46679C9E93B7312A9191A9aD12A73b0c86A33623", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Base Mainnet": { + "off_ramp": "0xb62178f8198905D0Fa6d640Bdb188E4E8143Ac4b", + "commit_store": "0x8F60C335a5d2BEC6B32867d3C05C377E88640AaF", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "BSC Mainnet": { + "off_ramp": "0x16B9709F8A23B9EB922E8Dde7EaB1Ede7C79F663", + "commit_store": "0x6c3fD63b9BdE38C414530727a5De858ca023cFc4", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Ethereum Mainnet": { + "off_ramp": "0x91e46cc5590A4B9182e47f40006140A7077Dec31", + "commit_store": "0x86be76A0FA2bD3ECB69330cBb4fd1f62c48F43E3", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Gnosis Mainnet": { + "off_ramp": "0xeE53872d1C695933B34cE0a11B58613CBBf37e20", + "commit_store": "0x5D88518a198b99F096d2893092a568A97F60B8d4", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Metis Andromeda": { + "off_ramp": "0xF1A4DE22FF792b0457306C39f4CB5822Ab47bdAE", + "commit_store": "0x7F20F4374f8d99201F22434ad59f96bE898A9E0B", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Mode Mainnet": { + "off_ramp": "0xa964355d8eBa62E9b043Eb27eEe6d999Ecc69429", + "commit_store": "0x72C3cdA94eCAC06f7605301dd7144815C2F05A03", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Optimism Mainnet": { + "off_ramp": "0x27a971D482335d0f8d1917451390734f7372A4a3", + "commit_store": "0x6642E640321e1Ad01eef2fC2ad5427D84A2Ee269", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Polygon Mainnet": { + "off_ramp": "0xcabc2D71dC3172a154A5A34cD706B050e0ef9b6f", + "commit_store": "0x78B15A57889200F246fc52790c4F3DfC37d82Aa2", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + } + } + }, + "Avalanche Mainnet": { + "is_native_fee_token": true, + "is_mock_arm": true, + "fee_token": "", + "arm": "0x4f6Ec25f06A114ADD3154DC17fb637F750AdaA31", + "router": "0xC485fDa586037F8a312C2492419C9ce25cF7FDD8", + "price_registry": "0x718b6f7454531F6CBdB9eC08F87C8663A7c4FAC2", + "wrapped_native": "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7", + "src_contracts": { + "Arbitrum Mainnet": { + "on_ramp": "0x4e910c8Bbe88DaDF90baa6c1B7850DbeA32c5B29", + "deployed_at": 0 + }, + "Base Mainnet": { + "on_ramp": "0x139D4108C23e66745Eda4ab47c25C83494b7C14d", + "deployed_at": 0 + }, + "BSC Mainnet": { + "on_ramp": "0xe6e161d55019AA5960DcF0Af9bB6e4d574C69F99", + "deployed_at": 0 + }, + "Ethereum Mainnet": { + "on_ramp": "0xe8784c29c583C52FA89144b9e5DD91Df2a1C2587", + "deployed_at": 0 + }, + "Gnosis Mainnet": { + "on_ramp": "0x38fd0DF16F6fD0a2C3Ec6615c73e50F5d027b8bA", + "deployed_at": 0 + }, + "Optimism Mainnet": { + "on_ramp": "0x3e3b4Fba004E7824219e79aE9f676d9D41A216Fa", + "deployed_at": 0 + }, + "Polygon Mainnet": { + "on_ramp": "0x5570a4E979d7460F13b84075ACEF69FAc73914b1", + "deployed_at": 0 + } + }, + "dest_contracts": { + "Arbitrum Mainnet": { + "off_ramp": "0x508Ea280D46E4796Ce0f1Acf8BEDa610c4238dB3", + "commit_store": "0x20bEde74Da64C9aE47FFDf4B87613752CD13bE5D", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Base Mainnet": { + "off_ramp": "0x37879EBFCb807f8C397fCe2f42DC0F5329AD6823", + "commit_store": "0xDe615EEaD232BEECF6c9b71c293A387B97814E8D", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "BSC Mainnet": { + "off_ramp": "0x6CDAa2711BdF0B719911BF00588A79FA97bf9264", + "commit_store": "0x4c05E7AB694C602De3135e025aEc7F7de06E80F7", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Ethereum Mainnet": { + "off_ramp": "0xE5F21F43937199D4D57876A83077b3923F68EB76", + "commit_store": "0xf0F791901854fAb16adeBd60F0639b960B6ea0CF", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Gnosis Mainnet": { + "off_ramp": "0x1181A59FF0BAEd1E0EA77e919185cB8C3D5D3125", + "commit_store": "0x60b2Bc7858D6296D8c4370E35a930E5ddF13085E", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Optimism Mainnet": { + "off_ramp": "0x376C0AFC9E64efE0d9202E1F02c3d7f9Dc15e404", + "commit_store": "0xF8728f8Cd9C809287e6a97B71A2cdfD2c3C034cE", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Polygon Mainnet": { + "off_ramp": "0xFf49E35626Eba28Bee1d251782AB75A6cEd91c45", + "commit_store": "0xee2570De22C0D07d0FaBC1169dC5EcA342B838Da", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + } + } + }, + "Base Mainnet": { + "is_native_fee_token": true, + "is_mock_arm": true, + "fee_token": "", + "bridge_tokens": [ + "0x88Fb150BDc53A65fe94Dea0c9BA0a6dAf8C6e196" + ], + "bridge_tokens_pools": [ + "0x1568A4131760231712E59778DAB9EFE67911f4ff" + ], + "arm": "0x91cB19E7c4Ba9B08CF544cDc9143042150B007C3", + "router": "0xcd06f191359cfA6DB55F7D38134C9f89a2D5Ba56", + "price_registry": "0xC792246cF4f41100CA3c67cbF3888D5Cf8FED50B", + "wrapped_native": "0x4200000000000000000000000000000000000006", + "src_contracts": { + "Arbitrum Mainnet": { + "on_ramp": "0x9D0ffA76C7F82C34Be313b5bFc6d42A72dA8CA69", + "deployed_at": 0 + }, + "Avalanche Mainnet": { + "on_ramp": "0x4be6E0F97EA849FF80773af7a317356E6c646FD7", + "deployed_at": 0 + }, + "BSC Mainnet": { + "on_ramp": "0xE5FD5A0ec3657Ad58E875518e73F6264E00Eb754", + "deployed_at": 0 + }, + "Ethereum Mainnet": { + "on_ramp": "0x56b30A0Dcd8dc87Ec08b80FA09502bAB801fa78e", + "deployed_at": 0 + }, + "Gnosis Mainnet": { + "on_ramp": "0xDcFB24AEbcB9Edfb6746a045DDcae402381F984B", + "deployed_at": 0 + }, + "Mode Mainnet": { + "on_ramp": "0xEB50Fc6F57AAc6bf060A2Dfc6479fED592e6e184", + "deployed_at": 0 + }, + "Optimism Mainnet": { + "on_ramp": "0x362E6bE957c18e268ad91046CA6b47EB09AD98C1", + "deployed_at": 0 + }, + "Polygon Mainnet": { + "on_ramp": "0xd3Bde678BB706Cf727A512515C254BcF021dD203", + "deployed_at": 0 + } + }, + "dest_contracts": { + "Arbitrum Mainnet": { + "off_ramp": "0x7D38c6363d5E4DFD500a691Bc34878b383F58d93", + "commit_store": "0x17891fe60a577c5E1e4a4Ddd78E642428A56039f", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Avalanche Mainnet": { + "off_ramp": "0x61C3f6d72c80A3D1790b213c4cB58c3d4aaFccDF", + "commit_store": "0x700C6715734111a6D1Cf414F46D85627b298B5dd", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "BSC Mainnet": { + "off_ramp": "0x45d524b6Fe99C005C52C65c578dc0e02d9751083", + "commit_store": "0x1ccD0D49e283789a73E882B0ED4B5b1163675c3C", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Ethereum Mainnet": { + "off_ramp": "0xCA04169671A81E4fB8768cfaD46c347ae65371F1", + "commit_store": "0xb40659aACb709D1D54c80FC0d38b15705358Ce0B", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Gnosis Mainnet": { + "off_ramp": "0x300977dBA924af14E166B31F4926892B1f310661", + "commit_store": "0x932D6D5c6647e6495Ed3473ff0F4e31a6056D837", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Mode Mainnet": { + "off_ramp": "0x639Dc04368006544eba7CbC959f3e4361bfEAB0d", + "commit_store": "0x2D3FC7f8b03718157359266ac06AF6373aFee2f1", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Optimism Mainnet": { + "off_ramp": "0x18095fbD53184A50C2BB3929a6c62Ca328732062", + "commit_store": "0xa8FA8aE51dB9661e7D1c21141d967d07110036cb", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Polygon Mainnet": { + "off_ramp": "0x74d574D11977fC8D40f8590C419504cbE178ADB7", + "commit_store": "0x565f70396Ff82C23d25Dd3E57A9A66367dccdF3B", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + } + } + }, + "BSC Mainnet": { + "is_native_fee_token": true, + "is_mock_arm": true, + "fee_token": "", + "arm": "0x56491A98199aD2e687Ea9D0cFB7b4AC57B4980Fc", + "router": "0x641Fb431CD2dA50fF40e7E0272d2B1e58c1ff236", + "price_registry": "0x2A92BCecd6e702702864E134821FD2DE73C3e180", + "wrapped_native": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", + "src_contracts": { + "Arbitrum Mainnet": { + "on_ramp": "0x5577c19bD183e39a007ce4CE236f1D91e9132D5c", + "deployed_at": 0 + }, + "Avalanche Mainnet": { + "on_ramp": "0x43F00dBf0Aa61A099c674A74FBdCb93786564950", + "deployed_at": 0 + }, + "Base Mainnet": { + "on_ramp": "0xdABb6De5eC48dd2fcF28ac85CbEFe3F19E03F1BD", + "deployed_at": 0 + }, + "Ethereum Mainnet": { + "on_ramp": "0x35C724666ba31632A56Bad4390eb69f206ab60C7", + "deployed_at": 0 + }, + "Gnosis Mainnet": { + "on_ramp": "0x83AC865c2E18f2CDc1d10126987FfC465e11c0DF", + "deployed_at": 0 + }, + "Mode Mainnet": { + "on_ramp": "0x9d4d125788A548C2f69fAC7f8C3A64FA21d18C9e", + "deployed_at": 0 + }, + "Optimism Mainnet": { + "on_ramp": "0x3A3649852A518ab180f41f28288c6c9184563616", + "deployed_at": 0 + }, + "Polygon Mainnet": { + "on_ramp": "0x1C88e3Fd2B0a8735D1b19A77AA6e2333555BB95c", + "deployed_at": 0 + } + }, + "dest_contracts": { + "Arbitrum Mainnet": { + "off_ramp": "0x2A9C65afF39758CeAa24dBD1ACd1BeB3618e6780", + "commit_store": "0x99C7C97Ed175A3f0BFd4f52526E7B1310bB3fc16", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Avalanche Mainnet": { + "off_ramp": "0xc69a550470bEbC5c3Be98A4C3dD26C6AdD90C64b", + "commit_store": "0x49FeF2978569E8061a7CA5cC676d46970613e9D0", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Base Mainnet": { + "off_ramp": "0x133672C0F0067573254dd7C8C9818a37d6208610", + "commit_store": "0xEc44EFcf3E0aC801C742e444B130918a5a3A87E9", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Ethereum Mainnet": { + "off_ramp": "0xF616733641D420207b8F30db9C4cE39684768991", + "commit_store": "0x7aa39A9c9D539b5E7388872a193b3447D34bf11F", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Gnosis Mainnet": { + "off_ramp": "0x53AF5cE4534C39582E6a5E3fD77946E0c3BFe870", + "commit_store": "0xe7a0Ffc182E2330d19fF79adEEC637094c02dcA3", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Mode Mainnet": { + "off_ramp": "0xFc2278eBc27B9d205e3DC9F1b88D6D863D71190D", + "commit_store": "0x92eeb265F465Aff3AE708117ba7aE35279227845", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Optimism Mainnet": { + "off_ramp": "0x3c5E62cdFD08e23a0961ff2A3155CaBb96cbc89D", + "commit_store": "0xDC39E05264D0C17eD16F2Db363364B127Cf56d75", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Polygon Mainnet": { + "off_ramp": "0x21159ebdA3E6A2437bCD6ef39853042ACC436D2D", + "commit_store": "0x018Bb120265672C699969a9e2193755d4CF1ca16", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + } + } + }, + "Blast Mainnet": { + "is_native_fee_token": true, + "is_mock_arm": true, + "fee_token": "", + "arm": "0xfb83C9eE574f456F5d68Da2643b1122675681B3c", + "router": "0x12e0B8E349C6fb7E6E40713E8125C3cF1127ea8C", + "price_registry": "0x4f66d9e65af0d3DC27897E29f571f933291bb07c", + "wrapped_native": "", + "src_contracts": { + "Ethereum Mainnet": { + "on_ramp": "0xBD9bf9AA79adF083BB7100848Eb15F4e8282E27e", + "deployed_at": 0 + } + }, + "dest_contracts": { + "Ethereum Mainnet": { + "off_ramp": "0x1a904DbbaDdE629a1460e2F6E2E485Ce06Ed7599", + "commit_store": "0x3CB2A81bb8a188C5353CdFa9994ed8666556FC53", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + } + } + }, + "Celo": { + "is_native_fee_token": true, + "is_mock_arm": true, + "fee_token": "", + "bridge_tokens": [ + "0xd07294e6E917e07dfDcee882dd1e2565085C2ae0" + ], + "bridge_tokens_pools": [ + "0x11825e5d99234bAB7ad1f3972fF6E55eBf3D6E20" + ], + "arm": "0xAFB3e62dD82E7648C64eFe2450D7c3B76DB24e1B", + "router": "0xfB48f15480926A4ADf9116Dca468bDd2EE6C5F62", + "price_registry": "0xD9FcEEA20dBB3Dfb91763B301819C9666429DC26", + "wrapped_native": "0x2021B12D8138e2D63cF0895eccABC0DFc92416c6", + "src_contracts": { + "Ethereum Mainnet": { + "on_ramp": "0x27C96A8a2f70a8408aD6c620717a3bDaA54bb10b", + "deployed_at": 0 + } + }, + "dest_contracts": { + "Ethereum Mainnet": { + "off_ramp": "0xd5083684eE92dDeA117636ae5E2F1cb7fE4dfd46", + "commit_store": "0x831097033C88c82a7F1897b168Aa88cC44540C8f", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + } + } + }, + "Ethereum Mainnet": { + "is_mock_arm": true, + "fee_token": "0x514910771AF9Ca656af840dff83E8264EcF986CA", + "bridge_tokens": [ + "0x514910771AF9Ca656af840dff83E8264EcF986CA" + ], + "bridge_tokens_pools": [ + "0xC2291992A08eBFDfedfE248F2CCD34Da63570DF4" + ], + "arm": "0xdCD48419bD5Cd9d1b097695F2af4Ee125aADF84F", + "router": "0x8C6d31FC27770Ebcc5593c9D10adB9211181ed46", + "price_registry": "0xEd1a8c49bbD5618fa6CC952C509557F816d2D4F5", + "wrapped_native": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "src_contracts": { + "Arbitrum Mainnet": { + "on_ramp": "0x69eCC4E2D8ea56E2d0a05bF57f4Fd6aEE7f2c284", + "deployed_at": 0 + }, + "Avalanche Mainnet": { + "on_ramp": "0xaFd31C0C78785aDF53E4c185670bfd5376249d8A", + "deployed_at": 0 + }, + "Base Mainnet": { + "on_ramp": "0xb8a882f3B88bd52D1Ff56A873bfDB84b70431937", + "deployed_at": 0 + }, + "BSC Mainnet": { + "on_ramp": "0x948306C220Ac325fa9392A6E601042A3CD0b480d", + "deployed_at": 0 + }, + "Blast Mainnet": { + "on_ramp": "0x4545F9a17DA50110632C14704a15d893BF9CBD27", + "deployed_at": 0 + }, + "Celo": { + "on_ramp": "0xEd5bE9508ae56531cc0EDe6A3bD588Eb9E2e3cfa", + "deployed_at": 0 + }, + "Gnosis Mainnet": { + "on_ramp": "0xf50B9A46C394bD98491ce163d420222d8030F6F0", + "deployed_at": 0 + }, + "linea-mainnet": { + "on_ramp": "0x626189C882A80fF0D036d8D9f6447555e81F78E9", + "deployed_at": 0 + }, + "Metis Andromeda": { + "on_ramp": "0x75d536eED32f4c8Bb39F4B0c992163f5BA49B84e", + "deployed_at": 0 + }, + "Mode Mainnet": { + "on_ramp": "0xeA6d4a24B262aB3e61a8A62f018A30beCD086f82", + "deployed_at": 0 + }, + "Optimism Mainnet": { + "on_ramp": "0x3455D8E039736944e66e19eAc77a42e8077B07bf", + "deployed_at": 0 + }, + "Polygon Mainnet": { + "on_ramp": "0x15a9D79d6b3485F70bF82bC49dDD1fcB37A7149c", + "deployed_at": 0 + }, + "scroll-mainnet": { + "on_ramp": "0x362A221C3cfd7F992DFE221687323F0BA9BA8187", + "deployed_at": 0 + }, + "wemix-mainnet": { + "on_ramp": "0xCbE7e5DA76dC99Ac317adF6d99137005FDA4E2C4", + "deployed_at": 0 + }, + "zksync-mainnet": { + "on_ramp": "0xD54C93A99CBCb8D865E13DA321B540171795A89f", + "deployed_at": 0 + } + }, + "dest_contracts": { + "Arbitrum Mainnet": { + "off_ramp": "0xdf615eF8D4C64d0ED8Fd7824BBEd2f6a10245aC9", + "commit_store": "0xf7B343A17445F175f2Dd9f5CB29BAf0a8dE75ed3", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Avalanche Mainnet": { + "off_ramp": "0xd98E80C79a15E4dbaF4C40B6cCDF690fe619BFBb", + "commit_store": "0xA9f9bF2b643348c0884f2eBA4F712E833DA9a2b8", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Base Mainnet": { + "off_ramp": "0x6B4B6359Dd5B47Cdb030E5921456D2a0625a9EbD", + "commit_store": "0xDaC3A82Cc5e7C137bF28e6EF4F68f29D66205ffe", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "BSC Mainnet": { + "off_ramp": "0x66d84fedED0e51aeB47ceD1BB2fc0221Ae8D7C12", + "commit_store": "0x9B9Ec8E26955c034828bBD78E22ab258d983dCdb", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Blast Mainnet": { + "off_ramp": "0x4e0092bBC8EfAb6Eca295caB66986193b90a1Bb9", + "commit_store": "0xd7cA96B58EE33FdB3aa1392c30eD02645b1F28e2", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Celo": { + "off_ramp": "0x90902C0AEE857F3A42f2beBEa38724cE7b7a0cff", + "commit_store": "0x25adA90B241143DD5Df04Fb06C1fF6E7f7624ad9", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Gnosis Mainnet": { + "off_ramp": "0x70C705ff3eCAA04c8c61d581a59a168a1c49c2ec", + "commit_store": "0x9D93D536Ced80871Bf3DA5Bb47bAedE62c794f8A", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "linea-mainnet": { + "off_ramp": "0x418dcbCf229897d0CCf1B8B464Db06C23879FBB4", + "commit_store": "0x9f592c28590595F3F78a8881E8Dbb9984ed705cD", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Metis Andromeda": { + "off_ramp": "0x330349112e13232131Da51f9f3b153d825f65e61", + "commit_store": "0x0f89C7c0586536B618e0469402e1c8234bc52959", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Mode Mainnet": { + "off_ramp": "0xb57D52F7Cb7BBD19a117585bbaf712108E56dd8f", + "commit_store": "0x01346721418045A6c07b71052e452eF8615e9084", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Optimism Mainnet": { + "off_ramp": "0x562a2025E60AA19Aa03Ea41D70ea1FD3286d1D3B", + "commit_store": "0x83F3DA5aa2C7534d694B0acde7624573c830250D", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Polygon Mainnet": { + "off_ramp": "0x718672076D6d51E4c76142B37bC99E4945d704a3", + "commit_store": "0x57b548C9c213EA2bcf60193E3D7fd2d2b53Fb9b3", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "scroll-mainnet": { + "off_ramp": "0x26a10137A54F4Ea01D20758Ac5AdBf9326340Fc3", + "commit_store": "0x57d6cD9CD44770C807b2763Dbe4CFDA0113dd114", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "wemix-mainnet": { + "off_ramp": "0xF92Fa796F5307b029c65CA26f322a6D86f211194", + "commit_store": "0xbeC110FF43D52be2066B06525304A9924E16b73b", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "zksync-mainnet": { + "off_ramp": "0x7c887B97F9Bba9355EC10e2bA949AdB491Ef44Fd", + "commit_store": "0xA42bf0c8794FA8853Ec0F1B24a489972e8CF4C30", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + } + } + }, + "Gnosis Mainnet": { + "is_native_fee_token": true, + "is_mock_arm": true, + "fee_token": "0x0000000000000000000000000000000000000000", + "arm": "0x2ab5ff904CFFdD37f19cC34597cF425916F2DAcA", + "router": "0xe6A934D3754797bCe4375368F5f12b94DBc19Fcc", + "price_registry": "0x03aF5C79b0D49C040413FdA1e7B2cAa54a0fa5F4", + "wrapped_native": "0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d", + "src_contracts": { + "Arbitrum Mainnet": { + "on_ramp": "0x140E6D5ba903F684944Dd27369d767DdEf958c9B", + "deployed_at": 0 + }, + "Avalanche Mainnet": { + "on_ramp": "0xB707a6D1d32CE99D5c669DeE71D30d25a066D32c", + "deployed_at": 0 + }, + "Base Mainnet": { + "on_ramp": "0xAAb6D9fc00aAc37373206e91789CcDE1E851b3E4", + "deployed_at": 0 + }, + "BSC Mainnet": { + "on_ramp": "0xb485634dd2E545091722b9d4843d3644addf97e3", + "deployed_at": 0 + }, + "Ethereum Mainnet": { + "on_ramp": "0x014ABcfDbCe9F67d0Df34574664a6C0A241Ec03A", + "deployed_at": 0 + }, + "Optimism Mainnet": { + "on_ramp": "0x9379b446fcA75CA57834a4dA33f64ae317Be05e4", + "deployed_at": 0 + }, + "Polygon Mainnet": { + "on_ramp": "0xD7a49AfEA62E77Ad6BEB2ed64673026271aae188", + "deployed_at": 0 + } + }, + "dest_contracts": { + "Arbitrum Mainnet": { + "off_ramp": "0x2C1539696E29012806a15Bcd9845Ed1278a9fd63", + "commit_store": "0x5b1762a6023157edaf2c46c818f447B1940765D6", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Avalanche Mainnet": { + "off_ramp": "0xe596D90EF0AEe10257109AC8394a85F8944bF6D0", + "commit_store": "0xd6Dc07804AE06f575C28094F99aCdDC1535904e7", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Base Mainnet": { + "off_ramp": "0xbeEDd1C5C13C5886c3d600e94Ff9e82C04A53C38", + "commit_store": "0x392304E3cb636f75Dc95340672F3b8A2359d5Ebc", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "BSC Mainnet": { + "off_ramp": "0x972a85d7ba0209F1896992B2687cC728cf769e50", + "commit_store": "0x5FB18729651f1EDA5ed5ac67594FD94Fa3DBcd29", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Ethereum Mainnet": { + "off_ramp": "0x658d9ae41A9c291De423d3B4B6C064f6dD0e7Ed2", + "commit_store": "0xd23391fCBb8a41b971f90bC6e95CC8beaD885221", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Optimism Mainnet": { + "off_ramp": "0xd84E2316634ab6516Ecc829E2367633bfB3e4B6D", + "commit_store": "0x9d432DaF8aF8803baF6Cf560CF0f115c7D7b7f16", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Polygon Mainnet": { + "off_ramp": "0x6d6a4a60E0E23dbea089c0fEbbA9c5912f02bc57", + "commit_store": "0x9CBe49E232aEF27B9d98aC752354879efd7b1E70", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + } + } + }, + "kroma-mainnet": { + "is_native_fee_token": true, + "is_mock_arm": true, + "fee_token": "", + "bridge_tokens": [ + "0xC1F6f7622ad37C3f46cDF6F8AA0344ADE80BF450" + ], + "bridge_tokens_pools": [ + "0xd9547B702673c61c84bb2dF6FDf6D2F5309fE536" + ], + "arm": "0xB59779d3364BC6d71168245f9ebb96469E5a5a98", + "router": "0xE93E8B0d1b1CEB44350C8758ed1E2799CCee31aB", + "price_registry": "0x8155B4710e7bbC90924E957104F94Afd4f95Eca2", + "wrapped_native": "", + "src_contracts": { + "wemix-mainnet": { + "on_ramp": "0x3C5Ab46fA1dB1dECD854224654313a69bf9fcAD3", + "deployed_at": 0 + } + }, + "dest_contracts": { + "wemix-mainnet": { + "off_ramp": "0xF886d8DC64E544af4835cbf91e5678A54D95B80e", + "commit_store": "0x8794C9534658fdCC44f2FF6645Bf31cf9F6d2d5D", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + } + } + }, + "linea-mainnet": { + "is_native_fee_token": true, + "is_mock_arm": true, + "fee_token": "", + "arm": "0xB75C45986892fDBFe1e4Ef9f2e83Fd65471300f3", + "router": "0xcACf1F067BF807B77AE8cadE8854236BbA67C8a7", + "price_registry": "0x3B9e77E257A9C8b5F53e88dB87874188fB558460", + "wrapped_native": "", + "src_contracts": { + "Ethereum Mainnet": { + "on_ramp": "0x69AbB6043BBEA2467f41CCD0144d1b3b4ECd20f4", + "deployed_at": 0 + }, + "scroll-mainnet": { + "on_ramp": "0x30ebb71dAa827bEAE71EE325A77Ca47dAED7Ec9B", + "deployed_at": 0 + } + }, + "dest_contracts": { + "Ethereum Mainnet": { + "off_ramp": "0x656e2aA127Cb15815a90Ef70c6AA7Ed449D689ce", + "commit_store": "0xD8850C39D6785d9DdA555b7d81df50609c73c495", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "scroll-mainnet": { + "off_ramp": "0xa3Ea5eB15711041fd28950438b5a682392b54e6C", + "commit_store": "0x9d75617B79cB12e7c3085b2DA38fa47aaD23f0bA", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + } + } + }, + "Metis Andromeda": { + "is_native_fee_token": true, + "is_mock_arm": true, + "fee_token": "", + "arm": "0xC4BFAc3D31C524A4958c5d5d1e68394d8DEbbE69", + "router": "0x4c6811BE5f08D9E748C85FDB0050DE49B21F77c9", + "price_registry": "0x2C4A017f587574b3d6EEBF6463aE6824Dc43C365", + "wrapped_native": "", + "src_contracts": { + "Arbitrum Mainnet": { + "on_ramp": "0x8d3039fE2400151c06Ae84a18CAf38dD9b6Ce58b", + "deployed_at": 0 + }, + "Ethereum Mainnet": { + "on_ramp": "0xdF5394c57A0570ECe45DE0c0fA2e722A672B9198", + "deployed_at": 0 + } + }, + "dest_contracts": { + "Arbitrum Mainnet": { + "off_ramp": "0xc6bA5a79991b3775F28259BA551b30eCb0b6D499", + "commit_store": "0xb81b0EE9675879a2Dcaa70CCC3b2c2D38fa404b0", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Ethereum Mainnet": { + "off_ramp": "0x1fd37Bf813D0723BEF614bC93d9D2Ce1AcB3228f", + "commit_store": "0x7C1efda9F744a2B4f88b924B03C6d6B53E3E390F", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + } + } + }, + "Mode Mainnet": { + "is_native_fee_token": true, + "is_mock_arm": true, + "fee_token": "", + "arm": "0x77EAF440c5d24e25D1834CBBF623bFd83b8b5dA1", + "router": "0x4F45E0061fecADa52F0d2F0328b7cA7bD6261fB5", + "price_registry": "0x0708505E66DA43B34BB0C429e0F1fE5bfC3A73cd", + "wrapped_native": "0x4200000000000000000000000000000000000006", + "src_contracts": { + "Arbitrum Mainnet": { + "on_ramp": "0xb2e694efcDa0aeB81700019c3047F92fC3bb520E", + "deployed_at": 0 + }, + "Base Mainnet": { + "on_ramp": "0x347A070EA1B04bc2b4A8f14320688C277022C90e", + "deployed_at": 0 + }, + "BSC Mainnet": { + "on_ramp": "0xeb7E8c40E95Cd31666359AaeB1F2CccaAB935643", + "deployed_at": 0 + }, + "Ethereum Mainnet": { + "on_ramp": "0x7d2aF78868993a5a86676BA639eC0412709707D9", + "deployed_at": 0 + }, + "Optimism Mainnet": { + "on_ramp": "0x7AB4329D19A0255DA90Ee8dbAA60f8f0cB7950C1", + "deployed_at": 0 + } + }, + "dest_contracts": { + "Arbitrum Mainnet": { + "off_ramp": "0x0Cb870C12013c2d5743585F85b298e129cE57203", + "commit_store": "0x682Af2Cfaa5aE554eF222728fF7C7168232e2Ea5", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Base Mainnet": { + "off_ramp": "0x30612D8fb7EcD05ECb863560BA8806d88e8BbFAF", + "commit_store": "0xf84d023CCFF8b74e565117cBc034859D06EA1976", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "BSC Mainnet": { + "off_ramp": "0xdfA601DA2163Ca2C77Eb32126E6B7A97024f6181", + "commit_store": "0xb88F947C85b1c6B1E2A0C22792BA58C40c07a644", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Ethereum Mainnet": { + "off_ramp": "0xb1caBa234721b8F12C545B3dC25B3F87f6a9c91B", + "commit_store": "0x67Ff921DA5d0B61a9b05BDFa92d9f5f992d7861a", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Optimism Mainnet": { + "off_ramp": "0x4adcD1FB4ec76A3c9960E048f81C19A51B2eAC49", + "commit_store": "0x7B58aF65DFD717fC0d044D860c8f9A85Ca6813D6", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + } + } + }, + "Optimism Mainnet": { + "is_mock_arm": true, + "fee_token": "0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6", + "bridge_tokens": [ + "0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6" + ], + "bridge_tokens_pools": [ + "0x841b32B5309ba30cFbf4534667fC3D99EdF05B7A" + ], + "arm": "0x1c51b6D5BFcFB7ee82C80949DFD146dB157a7E49", + "router": "0x0E6137E72CC322b0f3b7eD172f7BD7b5Ac798d05", + "price_registry": "0xF1cB3E957D7271Ac788010b2e6146E6ceF8FB9BA", + "wrapped_native": "0x4200000000000000000000000000000000000006", + "src_contracts": { + "Arbitrum Mainnet": { + "on_ramp": "0x6bA81b83091A23e8F2AA173B2b939fAf9E320DfB", + "deployed_at": 0 + }, + "Avalanche Mainnet": { + "on_ramp": "0xB9D655Ad5ba80036725d6c753Fa6AF0454cBF630", + "deployed_at": 0 + }, + "Base Mainnet": { + "on_ramp": "0xfE11cfC957cCa331192EAC60040b442303CcA0a9", + "deployed_at": 0 + }, + "BSC Mainnet": { + "on_ramp": "0xfC51a4CF925f202d86c6092cda879689d2C17201", + "deployed_at": 0 + }, + "Ethereum Mainnet": { + "on_ramp": "0xE4C51Dc01A4E0aB14c7a7a2ed1655E9CF8A3E698", + "deployed_at": 0 + }, + "Gnosis Mainnet": { + "on_ramp": "0x604a9dda2e27D56cfCe457E437a61f4ED0De9dE6", + "deployed_at": 0 + }, + "Mode Mainnet": { + "on_ramp": "0xc6d9Cb39e34D83d21A021504024887A0e96D4e94", + "deployed_at": 0 + }, + "Polygon Mainnet": { + "on_ramp": "0x9c725164b60E3f6d4d5b7A2841C63E9FD0988805", + "deployed_at": 0 + } + }, + "dest_contracts": { + "Arbitrum Mainnet": { + "off_ramp": "0xEB3d6956BCf7b1E29634C8cd182fC9FA740Bce34", + "commit_store": "0x6569761680DaC4Bf940244E3cF198A069E34E91F", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Avalanche Mainnet": { + "off_ramp": "0xF8E38B4503418659F791F2135c4912F85BFB7988", + "commit_store": "0x23CAc55aDDF28179A999858720E9Fe686372083A", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Base Mainnet": { + "off_ramp": "0x519ee6B83f57df95486aeA6E26819cb7b4B8ee99", + "commit_store": "0xCfdF2b21D9777E2B0a221F6b6D8fe176461f058e", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "BSC Mainnet": { + "off_ramp": "0x51f37b538aD2Bcb9Eaf884859BF7C5Ec58AEc885", + "commit_store": "0xF472FEb09544Bf991773f4B94fe3F03e458d1b8d", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Ethereum Mainnet": { + "off_ramp": "0x9979c2dfEcA9051Cf7f08274d978984B2dB12C60", + "commit_store": "0x9358663E8f89df8EFE2346a3c4c1D65d03300576", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Gnosis Mainnet": { + "off_ramp": "0x01449040D92D75c58FaDc9Bc1c0eadc70C550484", + "commit_store": "0xb63230DfcE291DA76FD946EFbc966549F9300347", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Mode Mainnet": { + "off_ramp": "0x5a4BEeafd345264360E6894a6bc5F54a70814E68", + "commit_store": "0x4E94a327A38E6F3509a5639dCF933CfF6DE93FFD", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Polygon Mainnet": { + "off_ramp": "0x4BA0A3bD1E2b70b2fe165A53219e7eF6376849a4", + "commit_store": "0xA0f02e1F9C641C9610f688be84F889fE518b36e3", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + } + } + }, + "Polygon Mainnet": { + "is_native_fee_token": true, + "is_mock_arm": true, + "fee_token": "", + "bridge_tokens": [ + "0xb0897686c545045aFc77CF20eC7A532E3120E0F1" + ], + "bridge_tokens_pools": [ + "0x086892015567fb8764d02c6845C85C25C8FcA389" + ], + "arm": "0x569a295a09634Ac9414c3efe4E8931986d68F937", + "router": "0x10ea937A855268E5336F78B262B4d82ad1Cb84BC", + "price_registry": "0xd6D571B37B26Ee1b99FDFa097034Ea4B9E3b76BA", + "wrapped_native": "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", + "src_contracts": { + "Arbitrum Mainnet": { + "on_ramp": "0x13263aC754d1e29430930672E3C0019f2BC44Ba2", + "deployed_at": 0 + }, + "Avalanche Mainnet": { + "on_ramp": "0x56cb9Cd82553Bd8157e6504020c38f6DA4971717", + "deployed_at": 0 + }, + "Base Mainnet": { + "on_ramp": "0xD26A4E0c664E72e3c29E634867191cB1cb9AF570", + "deployed_at": 0 + }, + "BSC Mainnet": { + "on_ramp": "0x164507757F7d5Ab35C6af44EeEB099F5be29Da57", + "deployed_at": 0 + }, + "Ethereum Mainnet": { + "on_ramp": "0x1DAcBae00c779913e6E9fc1A3323FbA4847ba53C", + "deployed_at": 0 + }, + "Gnosis Mainnet": { + "on_ramp": "0xcc4A8CFd756895d91B476Dd5461286b300914aBf", + "deployed_at": 0 + }, + "Optimism Mainnet": { + "on_ramp": "0x868B71490B36674B3B9006fa8711C6fA26A26631", + "deployed_at": 0 + } + }, + "dest_contracts": { + "Arbitrum Mainnet": { + "off_ramp": "0x60f2788225CeE4a94f8E7589931d5A14Cbc4367d", + "commit_store": "0x4DEc80ED383171EC54699B22B869bE098d3cBac9", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Avalanche Mainnet": { + "off_ramp": "0x35c1Bb5A9c2F3fa8f8dFF470a6bE7d362CeA1ef3", + "commit_store": "0xB3324b80f50a31b12c0C733560D3aA2a32dc5C33", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Base Mainnet": { + "off_ramp": "0xF4a9Dbb7f3FBa02e3a244B464e459C32B63857F1", + "commit_store": "0x936A0C8635D7087a2D22494762e9a697C3C3D545", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "BSC Mainnet": { + "off_ramp": "0xE58074f8F56E23836f088Ac8b4f3882c1b4CAcbb", + "commit_store": "0x2110a5f138364d788FDF54eCBa25C1688181cb00", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Ethereum Mainnet": { + "off_ramp": "0xa06e68a11d5694316Cc819f2FFD02663e3314C7C", + "commit_store": "0xB73d668B26817659E9f48F16b780480B4401cFcE", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Gnosis Mainnet": { + "off_ramp": "0x9e2e4e397226f347d11D3fF8469d0c3FFa750C3B", + "commit_store": "0x75faF05ec32C9dA97E99Eb6fb18b5087DecAAa82", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "Optimism Mainnet": { + "off_ramp": "0x805c292775Be43b10Cc744ea7E81d9939a08cEa4", + "commit_store": "0x52faD8fb48451AA555c0f59accA1dC7C69B9681B", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + } + } + }, + "scroll-mainnet": { + "is_native_fee_token": true, + "is_mock_arm": true, + "fee_token": "", + "arm": "0x323BFa80a6941C419fB6397698dA816A382CAe53", + "router": "0x9bE7a66B3Dec08e111E038Dc34bD7F1AF5cEedA5", + "price_registry": "0xd587D08b62CDE7897DA37fB1915F7F6b1D749d96", + "wrapped_native": "", + "src_contracts": { + "Ethereum Mainnet": { + "on_ramp": "0x28cCF73F7982c1786b84e243FFbD47F4fB8ae43d", + "deployed_at": 0 + }, + "linea-mainnet": { + "on_ramp": "0x05d472b114D57E6035089A58Fa997A7940D29a23", + "deployed_at": 0 + } + }, + "dest_contracts": { + "Ethereum Mainnet": { + "off_ramp": "0x77601F272dd2d6481Ac3a13942075388097245Fb", + "commit_store": "0x1c338D27F36452358611936fc8418849910B1C59", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "linea-mainnet": { + "off_ramp": "0x5834e1C639418A4973391126576f550A6996836a", + "commit_store": "0x3BD2d806e9cBD3440cb74626BE819d337b70F7De", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + } + } + }, + "wemix-mainnet": { + "is_native_fee_token": true, + "is_mock_arm": true, + "fee_token": "", + "bridge_tokens": [ + "0x80f1FcdC96B55e459BF52b998aBBE2c364935d69" + ], + "bridge_tokens_pools": [ + "0x80282dF25600c08Bde7560f6c1E509366c1BfBFC" + ], + "arm": "0x07aaC8B69A62dB5bd3d244091916EbF2fac17b76", + "router": "0x7798b795Fde864f4Cd1b124a38Ba9619B7F8A442", + "price_registry": "0x252863688762aD86868D3d3076233Eacd80c7055", + "wrapped_native": "0x7D72b22a74A216Af4a002a1095C8C707d6eC1C5f", + "src_contracts": { + "Ethereum Mainnet": { + "on_ramp": "0x190bcE84CF2d500B878966F4Cf98a50d78f2675E", + "deployed_at": 0 + }, + "kroma-mainnet": { + "on_ramp": "0x47E9AE0A815C94836202E696748A5d5476aD8735", + "deployed_at": 0 + } + }, + "dest_contracts": { + "Ethereum Mainnet": { + "off_ramp": "0x3a129e6C18b23d18BA9E6Aa14Dc2e79d1f91c6c5", + "commit_store": "0x31f6ab382DDeb9A316Ab61C3945a5292a50a89AB", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + }, + "kroma-mainnet": { + "off_ramp": "0x2B555774B3D1dcbcd76efb7751F3c5FbCFABC5C4", + "commit_store": "0x213124614aAf31eBCE7c612A12aac5f8aAD77DE4", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + } + } + }, + "zksync-mainnet": { + "is_native_fee_token": true, + "is_mock_arm": true, + "fee_token": "", + "arm": "0x2438AF3167c8f8db49215B96A9A5F5131C4B9718", + "router": "0x748Fd769d81F5D94752bf8B0875E9301d0ba71bB", + "price_registry": "0xa0C6E00a9Fa10A04989c237dF6dfDCe2AaceE4A3", + "wrapped_native": "", + "src_contracts": { + "Ethereum Mainnet": { + "on_ramp": "0x3B80Fe300c9A611abA0496e2543B66Ff7bD4B9e9", + "deployed_at": 0 + } + }, + "dest_contracts": { + "Ethereum Mainnet": { + "off_ramp": "0xb368c8946D9fa5A497cDe1Dff7213f9CdfD143Bf", + "commit_store": "0xa4d264470a67D9f6682EE12Bdc9c35Df44e3F194", + "receiver_dapp": "0x09e4897E068A5Fc4fc22D86867FC1906E6cde563" + } + } + } + } +} +""" + +[CCIP.Env] +TTL = '8h' + +[CCIP.Env.Network] +selected_networks = [ + 'ARBITRUM_MAINNET', + 'AVALANCHE_MAINNET', + 'BASE_MAINNET', +# 'BLAST_MAINNET', + 'BSC_MAINNET', +# 'CELO_MAINNET', + 'ETHEREUM_MAINNET', + 'GNOSIS_MAINNET', +# 'KROMA_MAINNET', +# 'METIS_ANDROMEDA', + 'MODE_MAINNET', + 'OPTIMISM_MAINNET', + 'POLYGON_MAINNET', +# 'WEMIX_MAINNET', +# 'ZKSYNC_MAINNET', +] + + +[CCIP.Groups.smoke] +# these are all the valid network pairs +NetworkPairs = [ +# 'WEMIX_MAINNET,ARBITRUM_MAINNET', +# 'WEMIX_MAINNET,AVALANCHE_MAINNET', +# 'WEMIX_MAINNET,BSC_MAINNET', +# 'WEMIX_MAINNET,OPTIMISM_MAINNET', +# 'WEMIX_MAINNET,ETHEREUM_MAINNET', +# 'WEMIX_MAINNET,POLYGON_MAINNET', +# 'WEMIX_MAINNET,KROMA_MAINNET', +# 'ZKSYNC_MAINNET,ETHEREUM_MAINNET', +# 'CELO_MAINNET,ETHEREUM_MAINNET', + + 'ARBITRUM_MAINNET,BSC_MAINNET', + 'ARBITRUM_MAINNET,OPTIMISM_MAINNET', + 'AVALANCHE_MAINNET,ARBITRUM_MAINNET', + 'AVALANCHE_MAINNET,BASE_MAINNET', + 'AVALANCHE_MAINNET,BSC_MAINNET', + 'AVALANCHE_MAINNET,OPTIMISM_MAINNET', + 'AVALANCHE_MAINNET,POLYGON_MAINNET', +# 'AVALANCHE_MAINNET,WEMIX_MAINNET', + 'BASE_MAINNET,ARBITRUM_MAINNET', + 'BASE_MAINNET,BSC_MAINNET', + 'BASE_MAINNET,OPTIMISM_MAINNET', + 'BASE_MAINNET,POLYGON_MAINNET', +# 'BLAST_MAINNET,ARBITRUM_MAINNET', +# 'BLAST_MAINNET,BASE_MAINNET', +# 'BLAST_MAINNET,BSC_MAINNET', + 'BSC_MAINNET,OPTIMISM_MAINNET', + 'BSC_MAINNET,POLYGON_MAINNET', +# 'BSC_MAINNET,WEMIX_MAINNET', + 'ETHEREUM_MAINNET,ARBITRUM_MAINNET', + 'ETHEREUM_MAINNET,AVALANCHE_MAINNET', + 'ETHEREUM_MAINNET,BASE_MAINNET', +# 'ETHEREUM_MAINNET,BLAST_MAINNET', + 'ETHEREUM_MAINNET,BSC_MAINNET', +# 'ETHEREUM_MAINNET,CELO_MAINNET', + 'ETHEREUM_MAINNET,GNOSIS_MAINNET', +# 'ETHEREUM_MAINNET,METIS_ANDROMEDA', + 'ETHEREUM_MAINNET,MODE_MAINNET', + 'ETHEREUM_MAINNET,OPTIMISM_MAINNET', + 'ETHEREUM_MAINNET,POLYGON_MAINNET', +# 'ETHEREUM_MAINNET,WEMIX_MAINNET', +# 'ETHEREUM_MAINNET,ZKSYNC_MAINNET', + 'GNOSIS_MAINNET,ARBITRUM_MAINNET', + 'GNOSIS_MAINNET,AVALANCHE_MAINNET', + 'GNOSIS_MAINNET,BASE_MAINNET', + 'GNOSIS_MAINNET,BSC_MAINNET', + 'GNOSIS_MAINNET,OPTIMISM_MAINNET', + 'GNOSIS_MAINNET,POLYGON_MAINNET', +# 'METIS_ANDROMEDA,ARBITRUM_MAINNET', + 'MODE_MAINNET,ARBITRUM_MAINNET', + 'MODE_MAINNET,BASE_MAINNET', + 'MODE_MAINNET,BSC_MAINNET', + 'MODE_MAINNET,OPTIMISM_MAINNET', + 'OPTIMISM_MAINNET,POLYGON_MAINNET', +# 'OPTIMISM_MAINNET,WEMIX_MAINNET', + 'POLYGON_MAINNET,ARBITRUM_MAINNET', +# 'POLYGON_MAINNET,WEMIX_MAINNET', +# 'WEMIX_MAINNET,ARBITRUM_MAINNET', +# 'WEMIX_MAINNET,KROMA_MAINNET', +# 'ZKSYNC_MAINNET,ARBITRUM_MAINNET' +] + +BiDirectionalLane = true +PhaseTimeout = '20m' +LocalCluster = false +ExistingDeployment = true +ReuseContracts = true +SkipRequestIfAnotherRequestTriggeredWithin = '24h' + +[CCIP.Groups.smoke.TokenConfig] +NoOfTokensPerChain = 1 +CCIPOwnerTokens = true + +[CCIP.Groups.smoke.MsgDetails] +MsgType = 'Data' +DestGasLimit = 0 +DataLength = 100 +NoOfTokens = 1 +AmountPerToken = 1 + +[CCIP.Groups.load] +NetworkPairs = [ + 'ARBITRUM_MAINNET,BSC_MAINNET', + 'ARBITRUM_MAINNET,OPTIMISM_MAINNET', + 'AVALANCHE_MAINNET,ARBITRUM_MAINNET', + 'AVALANCHE_MAINNET,BASE_MAINNET', + 'AVALANCHE_MAINNET,BSC_MAINNET', + 'AVALANCHE_MAINNET,OPTIMISM_MAINNET', + 'AVALANCHE_MAINNET,POLYGON_MAINNET', + 'BASE_MAINNET,ARBITRUM_MAINNET', + 'BASE_MAINNET,BSC_MAINNET', + 'BASE_MAINNET,OPTIMISM_MAINNET', + 'BASE_MAINNET,POLYGON_MAINNET', + 'BSC_MAINNET,OPTIMISM_MAINNET', + 'BSC_MAINNET,POLYGON_MAINNET', + 'ETHEREUM_MAINNET,ARBITRUM_MAINNET', + 'ETHEREUM_MAINNET,AVALANCHE_MAINNET', + 'ETHEREUM_MAINNET,BASE_MAINNET', + 'ETHEREUM_MAINNET,BSC_MAINNET', + 'ETHEREUM_MAINNET,GNOSIS_MAINNET', + 'ETHEREUM_MAINNET,MODE_MAINNET', + 'ETHEREUM_MAINNET,OPTIMISM_MAINNET', + 'ETHEREUM_MAINNET,POLYGON_MAINNET', + 'GNOSIS_MAINNET,ARBITRUM_MAINNET', + 'GNOSIS_MAINNET,AVALANCHE_MAINNET', + 'GNOSIS_MAINNET,BASE_MAINNET', + 'GNOSIS_MAINNET,BSC_MAINNET', + 'GNOSIS_MAINNET,OPTIMISM_MAINNET', + 'GNOSIS_MAINNET,POLYGON_MAINNET', + 'MODE_MAINNET,ARBITRUM_MAINNET', + 'MODE_MAINNET,BASE_MAINNET', + 'MODE_MAINNET,BSC_MAINNET', + 'MODE_MAINNET,OPTIMISM_MAINNET', + 'OPTIMISM_MAINNET,POLYGON_MAINNET', + 'POLYGON_MAINNET,ARBITRUM_MAINNET', +] + +BiDirectionalLane = true +PhaseTimeout = '50m' +LocalCluster = false +ExistingDeployment = true +ReuseContracts = true + +[CCIP.Groups.load.TokenConfig] +NoOfTokensPerChain = 1 + +[CCIP.Groups.load.LoadProfile] +RequestPerUnitTime = [1] +TimeUnit = '30m' +TestDuration = '2h' +TestRunName = 'SoakTest_mainnet_test_router' +FailOnFirstErrorInLoad = false + +[[CCIP.Groups.load.LoadProfile.MsgProfile.MsgDetails]] +MsgType = 'Data' +DestGasLimit = 0 +DataLength = 100 +NoOfTokens = 1 +AmountPerToken = 1 \ No newline at end of file diff --git a/integration-tests/ccip-tests/testconfig/tomls/beta-testnet/testnet-beta-workinglane.toml b/integration-tests/ccip-tests/testconfig/tomls/beta-testnet/testnet-beta-workinglane.toml index 592cb046ad3..5b3c1c26c79 100644 --- a/integration-tests/ccip-tests/testconfig/tomls/beta-testnet/testnet-beta-workinglane.toml +++ b/integration-tests/ccip-tests/testconfig/tomls/beta-testnet/testnet-beta-workinglane.toml @@ -13,41 +13,29 @@ Data = """ "Arbitrum Sepolia": { "is_mock_arm": true, "fee_token": "0xb1D4538B4571d411F07960EF2838Ce337FE1E80E", - "bridge_tokens": null, - "bridge_tokens_pools": null, - "price_aggregators": null, - "arm": "0x2aE6d5495fc20226F433be50e37D59c05D186AaA", - "router": "0x0fF6b6F3Ad10D66600Fd5CC25b98542A05Aa7Bc2", - "price_registry": "0x25d997d8618e1299418b3D905E40bC353ec89F61", + "arm": "0x5261Eac6b2A158b1eafed0144B4894f41b67b01f", + "router": "0x32C3C32B1b3858e45AFc53e1D0D4607463d47d1C", + "price_registry": "0x845A8190d31602fD0862467880468339E04d885b", "wrapped_native": "0xE591bf0A0CF924A0674d7792db046B23CEbF5f34", "src_contracts": { - "Base Sepolia": { - "on_ramp": "0x6BD0f1efA261Ea84DB219c1284b538A65E530ea1", - "deployed_at": 29428386 + "Avalanche Fuji": { + "on_ramp": "0x59f2492ebDfdD3E99b9198A2313AB0A4113014c8", + "deployed_at": 85949437 }, "Optimism Sepolia": { - "on_ramp": "0x94cd0d171eF08924F0008305e5Bb90b0fC1b61AB", - "deployed_at": 13945916 - }, - "Sepolia Testnet": { - "on_ramp": "0x44225eb3B73B1b52Dd2ecD258F9b63418eC6Bf79", - "deployed_at": 13730868 + "on_ramp": "0x3FF2852A4597E6Ac363340Cadbf1666C4246b4B9", + "deployed_at": 87452680 } }, "dest_contracts": { - "Base Sepolia": { - "off_ramp": "0x21560B4ACAEdb8AA2Dd935618F15da43197bdc12", - "commit_store": "0x27B882c393151ADD910F3557849AF0bb09c7d5A6", + "Avalanche Fuji": { + "off_ramp": "0x1b3841f8923195F1E438B471D0415bBE8b3c133D", + "commit_store": "0x55F4a33AC60D994c2F1A3b400Fc2C40140CF50D9", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Optimism Sepolia": { - "off_ramp": "0xAE32FD8Ae148BD88E3da6FaE8Cd7561Eed3ec5Cc", - "commit_store": "0x1f1160Ac7828B647A85c9a6b3A58A232C59D67Ab", - "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" - }, - "Sepolia Testnet": { - "off_ramp": "0xc136114F379b812345bb7e467ECDdb6D0c87De8b", - "commit_store": "0x42b3EbEA14F6CB803e3C7df84392Efb85CE90168", + "off_ramp": "0x695C84498573AEE9A2Be410Aaf7C275535A337D7", + "commit_store": "0xCBDdCEaE1d51F9C40640fa17fb7a2FeEB51DB702", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -55,47 +43,20 @@ Data = """ "Avalanche Fuji": { "is_mock_arm": true, "fee_token": "0x0b9d5D9136855f6FEc3c0993feE6E9CE8a297846", - "bridge_tokens": null, - "bridge_tokens_pools": null, - "price_aggregators": null, - "arm": "0xD4A51dC0F5C680A8A18eA4Ec3A2f25C6db9424B7", - "router": "0xa62e685aDFF45f38eC94378513D128F168964E99", - "price_registry": "0xdbeA1a10AC6a2B729bF128aE9281Ed420dbE7113", + "arm": "0xd550342aE3f8d5D3D38509900034C8b01f556f0e", + "router": "0x13b766d0fe3e01fa5b02b378DF31724dD5368B37", + "price_registry": "0xAEc164EDF7Be32c6d38565BD09c24DAAA5b5887f", "wrapped_native": "0xd00ae08403B9bbb9124bB305C09058E32C39A48c", "src_contracts": { - "BSC Testnet": { - "on_ramp": "0xe4f1F7750352f1c37C15C4A314554d6A79d7d146", - "deployed_at": 31437550 - } - }, - "dest_contracts": { - "BSC Testnet": { - "off_ramp": "0x796D720ea9D4326ff356eadE13b123B267C03C80", - "commit_store": "0xaDb37cFd91fa9b6Df1DaAcbAfB4cDFF41e06c956", - "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" - } - } - }, - "BSC Testnet": { - "is_mock_arm": true, - "fee_token": "0x84b9B910527Ad5C03A9Ca831909E21e236EA7b06", - "bridge_tokens": null, - "bridge_tokens_pools": null, - "price_aggregators": null, - "arm": "0xbBF534D89d9640e3886db25FE1ffE603Fe160D75", - "router": "0x9CdA5b77eA23459eBaf2e3092c570a6B5605850A", - "price_registry": "0x9213967a47FC3F15A16A0b813208e8Ccb63Dbba6", - "wrapped_native": "0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd", - "src_contracts": { - "Avalanche Fuji": { - "on_ramp": "0x0B4F541a7fcE5c251993Bc19D5A40B661e0463f5", - "deployed_at": 39097639 + "Arbitrum Sepolia": { + "on_ramp": "0x2Df17a22794499963EC0DDD43699B1020fdDD4d3", + "deployed_at": 36151865 } }, "dest_contracts": { - "Avalanche Fuji": { - "off_ramp": "0x41E59DCdDec18d7f79DA5F76Ce567d2c5e301E6B", - "commit_store": "0x9487C01D4b3Ae1c9Ac8740A07f3862D646548A14", + "Arbitrum Sepolia": { + "off_ramp": "0xFFBf82f59e5A7E1f92CE3565A6d6C835dEA19D1A", + "commit_store": "0x79357546378F29Ffcf3B7f3492Ee2Bcb9dB4d847", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -103,29 +64,17 @@ Data = """ "Base Sepolia": { "is_mock_arm": true, "fee_token": "0xE4aB69C077896252FAFBD49EFD26B5D171A32410", - "bridge_tokens": null, - "bridge_tokens_pools": null, - "price_aggregators": null, "arm": "0x866faB92E04bAE5EDa238A9cbFf1e56E09508Ade", "router": "0x2aE6d5495fc20226F433be50e37D59c05D186AaA", "price_registry": "0xD886E2286Fd1073df82462ea1822119600Af80b6", "wrapped_native": "0x4200000000000000000000000000000000000006", "src_contracts": { - "Arbitrum Sepolia": { - "on_ramp": "0xAE32FD8Ae148BD88E3da6FaE8Cd7561Eed3ec5Cc", - "deployed_at": 8133125 - }, "Optimism Sepolia": { "on_ramp": "0x9213967a47FC3F15A16A0b813208e8Ccb63Dbba6", "deployed_at": 11607777 } }, "dest_contracts": { - "Arbitrum Sepolia": { - "off_ramp": "0x34433469A4d6c8b1B0a1a7B91a5C5C2Dd74c67Fb", - "commit_store": "0xFEE7c8E229F538a98437b9A7D0Dd8fCd8A1Ab569", - "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" - }, "Optimism Sepolia": { "off_ramp": "0x0f30449bcCaCCaA7221B3f7C3304c4AaD68068E8", "commit_store": "0x17a5746c9cf7eAf23533F060F395B2E38eb976ea", @@ -136,75 +85,30 @@ Data = """ "Optimism Sepolia": { "is_mock_arm": true, "fee_token": "0xE4aB69C077896252FAFBD49EFD26B5D171A32410", - "bridge_tokens": null, - "bridge_tokens_pools": null, - "price_aggregators": null, - "arm": "0x2aE6d5495fc20226F433be50e37D59c05D186AaA", - "router": "0x0fF6b6F3Ad10D66600Fd5CC25b98542A05Aa7Bc2", - "price_registry": "0x3B80b7Ef5c00Eb892CBe72800C028C47AD6380EF", + "arm": "0xb665817485727D670dABD0F03A155401778C26ea", + "router": "0xF66f5c1417159eb38F622006eDE421BbF5262905", + "price_registry": "0x2dF2c61821A7BCcC851B15ee26BB06307d3bEE2d", "wrapped_native": "0x4200000000000000000000000000000000000006", "src_contracts": { "Arbitrum Sepolia": { - "on_ramp": "0x622CB640F52bFfA68b78b2BD12c1940Ca4899621", - "deployed_at": 8020540 + "on_ramp": "0x21ce68614782BF139bF21d7D2566A0d900c8638C", + "deployed_at": 18379535 }, "Base Sepolia": { "on_ramp": "0x12c164d0778E215873A062cEE2814507417339cB", "deployed_at": 13590651 - }, - "Sepolia Testnet": { - "on_ramp": "0x0c2c8D4266C98f1b9333D5E1a42f3f775A0005d4", - "deployed_at": 8020948 } }, "dest_contracts": { "Arbitrum Sepolia": { - "off_ramp": "0x37004c1245a2D5541377e87cA29699492a4114D5", - "commit_store": "0x51158Ca439feA9E809Bc063CfA6701747b05254e", + "off_ramp": "0xbeBD1F1f92a739810C102E5E5dc844E7efDbd747", + "commit_store": "0x39DEf7c3E3F2306012B96C1a4Cb1D574CA912CCa", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Base Sepolia": { "off_ramp": "0xB3F3f362FbeD49fA0086B434051C822B55BaADbD", "commit_store": "0xD4995B99c484CCABc868b26c0B2C2Ef10ecde3d7", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" - }, - "Sepolia Testnet": { - "off_ramp": "0x80C2aa80F202FeFdFEEF80f516cFd89768c54057", - "commit_store": "0xc1fE981A040D679511ccb9139ca107aCA67520ef", - "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" - } - } - }, - "Sepolia Testnet": { - "is_mock_arm": true, - "fee_token": "0x779877A7B0D9E8603169DdbD7836e478b4624789", - "bridge_tokens": null, - "bridge_tokens_pools": null, - "price_aggregators": null, - "arm": "0x9912a7389382ff55f85A29C9378B38F7B992c4aE", - "router": "0x1E1F3d8Ac7Df65fCcFcc52dbF03929cEE95430ac", - "price_registry": "0x4358e81f88bB27222779c1BC85003A11A1c66f6F", - "wrapped_native": "0x097D90c9d3E0B50Ca60e1ae45F6A81010f9FB534", - "src_contracts": { - "Arbitrum Sepolia": { - "on_ramp": "0x420a7B5ABB8CF27A70E1906F797e24509B11093D", - "deployed_at": 5275652 - }, - "Optimism Sepolia": { - "on_ramp": "0xEb4EBC1930bA81416A48a59142D89722163D85ae", - "deployed_at": 5281150 - } - }, - "dest_contracts": { - "Arbitrum Sepolia": { - "off_ramp": "0x224D1eB3aB2b7F23b66f093F9cBBC68dA77a1986", - "commit_store": "0x35c54cF12FF9B29dBa60dc23EdD1de0F13CC7fc5", - "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" - }, - "Optimism Sepolia": { - "off_ramp": "0xF21d01D6Ef822FBC56FC6c8F23f74fE3A0cb39aa", - "commit_store": "0x7F6AF440Bcc54f70Fd8AC2E534d37196c0bA1A38", - "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } } @@ -219,10 +123,8 @@ TTL = '8h' selected_networks = [ 'ARBITRUM_SEPOLIA', 'AVALANCHE_FUJI', - 'BASE_SEPOLIA', - 'BSC_TESTNET', +# 'BASE_SEPOLIA', 'OPTIMISM_SEPOLIA', - 'SEPOLIA' ] @@ -230,12 +132,14 @@ selected_networks = [ [CCIP.Groups.smoke] # these are all the valid network pairs NetworkPairs = [ - 'BSC_TESTNET,AVALANCHE_FUJI', - 'SEPOLIA,ARBITRUM_SEPOLIA', - 'BASE_SEPOLIA,OPTIMISM_SEPOLIA' +# 'ARBITRUM_SEPOLIA,AVALANCHE_FUJI', + 'ARBITRUM_SEPOLIA,OPTIMISM_SEPOLIA', + 'OPTIMISM_SEPOLIA,ARBITRUM_SEPOLIA', + 'AVALANCHE_FUJI,ARBITRUM_SEPOLIA', +# 'BASE_SEPOLIA,OPTIMISM_SEPOLIA' ] -BiDirectionalLane = true +BiDirectionalLane = false PhaseTimeout = '40m' LocalCluster = false ExistingDeployment = true @@ -255,8 +159,7 @@ AmountPerToken = 1 [CCIP.Groups.load] NetworkPairs = [ - 'AVALANCHE_FUJI,BSC_TESTNET', - 'SEPOLIA,ARBITRUM_SEPOLIA', + 'ARBITRUM_SEPOLIA,AVALANCHE_FUJI', 'BASE_SEPOLIA,OPTIMISM_SEPOLIA' ] @@ -272,7 +175,7 @@ NoOfTokensPerChain = 1 RequestPerUnitTime = [1] TimeUnit = '6m' TestDuration = '3h' -TestRunName = 'BetaSoakTest_CCIPV1dot5' +TestRunName = 'BetaSoakTest_CCIPV1dot5dot4' FailOnFirstErrorInLoad = true [[CCIP.Groups.load.LoadProfile.MsgProfile.MsgDetails]] diff --git a/integration-tests/ccip-tests/testconfig/tomls/beta-testnet/testnet-beta-workinglane_native.toml b/integration-tests/ccip-tests/testconfig/tomls/beta-testnet/testnet-beta-workinglane_native.toml index fcc063c7659..f3a43550d98 100644 --- a/integration-tests/ccip-tests/testconfig/tomls/beta-testnet/testnet-beta-workinglane_native.toml +++ b/integration-tests/ccip-tests/testconfig/tomls/beta-testnet/testnet-beta-workinglane_native.toml @@ -11,129 +11,73 @@ Data = """ { "lane_configs": { "Arbitrum Sepolia": { - "is_native_fee_token": true, "is_mock_arm": true, + "is_native_fee_token": true, "fee_token": "0xE591bf0A0CF924A0674d7792db046B23CEbF5f34", - "bridge_tokens": null, - "bridge_tokens_pools": null, - "price_aggregators": null, - "arm": "0x2aE6d5495fc20226F433be50e37D59c05D186AaA", - "router": "0x0fF6b6F3Ad10D66600Fd5CC25b98542A05Aa7Bc2", - "price_registry": "0x25d997d8618e1299418b3D905E40bC353ec89F61", + "arm": "0x5261Eac6b2A158b1eafed0144B4894f41b67b01f", + "router": "0x32C3C32B1b3858e45AFc53e1D0D4607463d47d1C", + "price_registry": "0x845A8190d31602fD0862467880468339E04d885b", "wrapped_native": "0xE591bf0A0CF924A0674d7792db046B23CEbF5f34", "src_contracts": { - "Base Sepolia": { - "on_ramp": "0x6BD0f1efA261Ea84DB219c1284b538A65E530ea1", - "deployed_at": 29428386 + "Avalanche Fuji": { + "on_ramp": "0x59f2492ebDfdD3E99b9198A2313AB0A4113014c8", + "deployed_at": 85949437 }, "Optimism Sepolia": { - "on_ramp": "0x94cd0d171eF08924F0008305e5Bb90b0fC1b61AB", - "deployed_at": 13945916 - }, - "Sepolia Testnet": { - "on_ramp": "0x44225eb3B73B1b52Dd2ecD258F9b63418eC6Bf79", - "deployed_at": 13730868 + "on_ramp": "0x3FF2852A4597E6Ac363340Cadbf1666C4246b4B9", + "deployed_at": 87452680 } }, "dest_contracts": { - "Base Sepolia": { - "off_ramp": "0x21560B4ACAEdb8AA2Dd935618F15da43197bdc12", - "commit_store": "0x27B882c393151ADD910F3557849AF0bb09c7d5A6", + "Avalanche Fuji": { + "off_ramp": "0x1b3841f8923195F1E438B471D0415bBE8b3c133D", + "commit_store": "0x55F4a33AC60D994c2F1A3b400Fc2C40140CF50D9", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Optimism Sepolia": { - "off_ramp": "0xAE32FD8Ae148BD88E3da6FaE8Cd7561Eed3ec5Cc", - "commit_store": "0x1f1160Ac7828B647A85c9a6b3A58A232C59D67Ab", - "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" - }, - "Sepolia Testnet": { - "off_ramp": "0xc136114F379b812345bb7e467ECDdb6D0c87De8b", - "commit_store": "0x42b3EbEA14F6CB803e3C7df84392Efb85CE90168", + "off_ramp": "0x695C84498573AEE9A2Be410Aaf7C275535A337D7", + "commit_store": "0xCBDdCEaE1d51F9C40640fa17fb7a2FeEB51DB702", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } }, "Avalanche Fuji": { - "is_native_fee_token": true, "is_mock_arm": true, + "is_native_fee_token": true, "fee_token": "0xd00ae08403B9bbb9124bB305C09058E32C39A48c", - "bridge_tokens": [ - "0x0b9d5D9136855f6FEc3c0993feE6E9CE8a297846" - ], - "bridge_tokens_pools": [ - "0x156943ae87AaF63eA9272902Cb05407ec7bc9464" - ], - "price_aggregators": null, - "arm": "0xD4A51dC0F5C680A8A18eA4Ec3A2f25C6db9424B7", - "router": "0xa62e685aDFF45f38eC94378513D128F168964E99", - "price_registry": "0xdbeA1a10AC6a2B729bF128aE9281Ed420dbE7113", + "arm": "0xd550342aE3f8d5D3D38509900034C8b01f556f0e", + "router": "0x13b766d0fe3e01fa5b02b378DF31724dD5368B37", + "price_registry": "0xAEc164EDF7Be32c6d38565BD09c24DAAA5b5887f", "wrapped_native": "0xd00ae08403B9bbb9124bB305C09058E32C39A48c", "src_contracts": { - "BSC Testnet": { - "on_ramp": "0xe4f1F7750352f1c37C15C4A314554d6A79d7d146", - "deployed_at": 31437550 - } - }, - "dest_contracts": { - "BSC Testnet": { - "off_ramp": "0x796D720ea9D4326ff356eadE13b123B267C03C80", - "commit_store": "0xaDb37cFd91fa9b6Df1DaAcbAfB4cDFF41e06c956", - "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" - } - } - }, - "BSC Testnet": { - "is_native_fee_token": true, - "is_mock_arm": true, - "fee_token": "0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd", - "bridge_tokens": null, - "bridge_tokens_pools": null, - "price_aggregators": null, - "arm": "0xbBF534D89d9640e3886db25FE1ffE603Fe160D75", - "router": "0x9CdA5b77eA23459eBaf2e3092c570a6B5605850A", - "price_registry": "0x9213967a47FC3F15A16A0b813208e8Ccb63Dbba6", - "wrapped_native": "0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd", - "src_contracts": { - "Avalanche Fuji": { - "on_ramp": "0x0B4F541a7fcE5c251993Bc19D5A40B661e0463f5", - "deployed_at": 39097639 + "Arbitrum Sepolia": { + "on_ramp": "0x2Df17a22794499963EC0DDD43699B1020fdDD4d3", + "deployed_at": 36151865 } }, "dest_contracts": { - "Avalanche Fuji": { - "off_ramp": "0x41E59DCdDec18d7f79DA5F76Ce567d2c5e301E6B", - "commit_store": "0x9487C01D4b3Ae1c9Ac8740A07f3862D646548A14", + "Arbitrum Sepolia": { + "off_ramp": "0xFFBf82f59e5A7E1f92CE3565A6d6C835dEA19D1A", + "commit_store": "0x79357546378F29Ffcf3B7f3492Ee2Bcb9dB4d847", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } }, "Base Sepolia": { - "is_native_fee_token": true, "is_mock_arm": true, + "is_native_fee_token": true, "fee_token": "0x4200000000000000000000000000000000000006", - "bridge_tokens": null, - "bridge_tokens_pools": null, - "price_aggregators": null, "arm": "0x866faB92E04bAE5EDa238A9cbFf1e56E09508Ade", "router": "0x2aE6d5495fc20226F433be50e37D59c05D186AaA", "price_registry": "0xD886E2286Fd1073df82462ea1822119600Af80b6", "wrapped_native": "0x4200000000000000000000000000000000000006", "src_contracts": { - "Arbitrum Sepolia": { - "on_ramp": "0xAE32FD8Ae148BD88E3da6FaE8Cd7561Eed3ec5Cc", - "deployed_at": 8133125 - }, "Optimism Sepolia": { "on_ramp": "0x9213967a47FC3F15A16A0b813208e8Ccb63Dbba6", "deployed_at": 11607777 } }, "dest_contracts": { - "Arbitrum Sepolia": { - "off_ramp": "0x34433469A4d6c8b1B0a1a7B91a5C5C2Dd74c67Fb", - "commit_store": "0xFEE7c8E229F538a98437b9A7D0Dd8fCd8A1Ab569", - "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" - }, "Optimism Sepolia": { "off_ramp": "0x0f30449bcCaCCaA7221B3f7C3304c4AaD68068E8", "commit_store": "0x17a5746c9cf7eAf23533F060F395B2E38eb976ea", @@ -142,79 +86,33 @@ Data = """ } }, "Optimism Sepolia": { - "is_native_fee_token": true, "is_mock_arm": true, + "is_native_fee_token": true, "fee_token": "0x4200000000000000000000000000000000000006", - "bridge_tokens": null, - "bridge_tokens_pools": null, - "price_aggregators": null, - "arm": "0x2aE6d5495fc20226F433be50e37D59c05D186AaA", - "router": "0x0fF6b6F3Ad10D66600Fd5CC25b98542A05Aa7Bc2", - "price_registry": "0x3B80b7Ef5c00Eb892CBe72800C028C47AD6380EF", + "arm": "0xb665817485727D670dABD0F03A155401778C26ea", + "router": "0xF66f5c1417159eb38F622006eDE421BbF5262905", + "price_registry": "0x2dF2c61821A7BCcC851B15ee26BB06307d3bEE2d", "wrapped_native": "0x4200000000000000000000000000000000000006", "src_contracts": { "Arbitrum Sepolia": { - "on_ramp": "0x622CB640F52bFfA68b78b2BD12c1940Ca4899621", - "deployed_at": 8020540 + "on_ramp": "0x21ce68614782BF139bF21d7D2566A0d900c8638C", + "deployed_at": 18379535 }, "Base Sepolia": { "on_ramp": "0x12c164d0778E215873A062cEE2814507417339cB", "deployed_at": 13590651 - }, - "Sepolia Testnet": { - "on_ramp": "0x0c2c8D4266C98f1b9333D5E1a42f3f775A0005d4", - "deployed_at": 8020948 } }, "dest_contracts": { "Arbitrum Sepolia": { - "off_ramp": "0x37004c1245a2D5541377e87cA29699492a4114D5", - "commit_store": "0x51158Ca439feA9E809Bc063CfA6701747b05254e", + "off_ramp": "0xbeBD1F1f92a739810C102E5E5dc844E7efDbd747", + "commit_store": "0x39DEf7c3E3F2306012B96C1a4Cb1D574CA912CCa", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Base Sepolia": { "off_ramp": "0xB3F3f362FbeD49fA0086B434051C822B55BaADbD", "commit_store": "0xD4995B99c484CCABc868b26c0B2C2Ef10ecde3d7", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" - }, - "Sepolia Testnet": { - "off_ramp": "0x80C2aa80F202FeFdFEEF80f516cFd89768c54057", - "commit_store": "0xc1fE981A040D679511ccb9139ca107aCA67520ef", - "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" - } - } - }, - "Sepolia Testnet": { - "is_native_fee_token": true, - "is_mock_arm": true, - "fee_token": "0x097D90c9d3E0B50Ca60e1ae45F6A81010f9FB534", - "bridge_tokens": null, - "bridge_tokens_pools": null, - "price_aggregators": null, - "arm": "0x9912a7389382ff55f85A29C9378B38F7B992c4aE", - "router": "0x1E1F3d8Ac7Df65fCcFcc52dbF03929cEE95430ac", - "price_registry": "0x4358e81f88bB27222779c1BC85003A11A1c66f6F", - "wrapped_native": "0x097D90c9d3E0B50Ca60e1ae45F6A81010f9FB534", - "src_contracts": { - "Arbitrum Sepolia": { - "on_ramp": "0x420a7B5ABB8CF27A70E1906F797e24509B11093D", - "deployed_at": 5275652 - }, - "Optimism Sepolia": { - "on_ramp": "0xEb4EBC1930bA81416A48a59142D89722163D85ae", - "deployed_at": 5281150 - } - }, - "dest_contracts": { - "Arbitrum Sepolia": { - "off_ramp": "0x224D1eB3aB2b7F23b66f093F9cBBC68dA77a1986", - "commit_store": "0x35c54cF12FF9B29dBa60dc23EdD1de0F13CC7fc5", - "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" - }, - "Optimism Sepolia": { - "off_ramp": "0xF21d01D6Ef822FBC56FC6c8F23f74fE3A0cb39aa", - "commit_store": "0x7F6AF440Bcc54f70Fd8AC2E534d37196c0bA1A38", - "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } } @@ -229,26 +127,24 @@ TTL = '8h' selected_networks = [ 'ARBITRUM_SEPOLIA', 'AVALANCHE_FUJI', - 'BASE_SEPOLIA', - 'BSC_TESTNET', + # 'BASE_SEPOLIA', 'OPTIMISM_SEPOLIA', - 'SEPOLIA', ] -[CCIP.Env.NewCLCluster.Common.ChainlinkImage] -version = "sha-17ce920" [CCIP.Groups.smoke] # these are all the valid network pairs NetworkPairs = [ - 'AVALANCHE_FUJI,BSC_TESTNET', - 'SEPOLIA,ARBITRUM_SEPOLIA', - 'BASE_SEPOLIA,OPTIMISM_SEPOLIA', + # 'ARBITRUM_SEPOLIA,AVALANCHE_FUJI', + 'ARBITRUM_SEPOLIA,OPTIMISM_SEPOLIA', + 'OPTIMISM_SEPOLIA,ARBITRUM_SEPOLIA', + 'AVALANCHE_FUJI,ARBITRUM_SEPOLIA', + # 'BASE_SEPOLIA,OPTIMISM_SEPOLIA' ] -BiDirectionalLane = true -PhaseTimeout = '30m' +BiDirectionalLane = false +PhaseTimeout = '40m' LocalCluster = false ExistingDeployment = true ReuseContracts = true @@ -267,8 +163,7 @@ AmountPerToken = 1 [CCIP.Groups.load] NetworkPairs = [ - 'AVALANCHE_FUJI,BSC_TESTNET', - 'SEPOLIA,ARBITRUM_SEPOLIA', + 'ARBITRUM_SEPOLIA,AVALANCHE_FUJI', 'BASE_SEPOLIA,OPTIMISM_SEPOLIA' ] @@ -284,7 +179,7 @@ NoOfTokensPerChain = 1 RequestPerUnitTime = [1] TimeUnit = '6m' TestDuration = '3h' -TestRunName = 'BetaSoakTest_V2.14.0-1.5.1' +TestRunName = 'BetaSoakTest_CCIPV1dot5dot4' FailOnFirstErrorInLoad = true [[CCIP.Groups.load.LoadProfile.MsgProfile.MsgDetails]] diff --git a/integration-tests/ccip-tests/testconfig/tomls/ccip-default.toml b/integration-tests/ccip-tests/testconfig/tomls/ccip-default.toml index 89858a94ddb..41367c45fb0 100644 --- a/integration-tests/ccip-tests/testconfig/tomls/ccip-default.toml +++ b/integration-tests/ccip-tests/testconfig/tomls/ccip-default.toml @@ -218,6 +218,10 @@ BlockHistorySize = 200 EIP1559FeeCapBufferBlocks = 0 """ +# Run by default using latest version from `ccip-develop` branch, override this value to use a specific version +[CCIP.Env.NewCLCluster.Common.ChainlinkImage] +version = "ccip-develop" + # the following configs are specific to each test type, smoke, load , chaos, etc... [CCIP.Groups] [CCIP.Groups.smoke] @@ -228,9 +232,8 @@ EIP1559FeeCapBufferBlocks = 0 KeepEnvAlive = false # if true, the test will not tear down the test environment after the test is finished CommitAndExecuteOnSameDON = true # if true, and the test is building the env from scratch, same chainlink nodes will be used for Commit and Execution jobs. -AllowOutOfOrder = false # if true, all the lanes will allow out of order execution and it -# overrides settings from lane_config. To allow out of order execution per lane, then send "allow_out_of_order":true, similar to is_native_fee_token variable. # Otherwise Commit and execution jobs will be set up in different nodes based on the number of nodes specified in NoOfCommitNodes and CCIP.Env.NewCLCluster.NoOfNodes +AllowOutOfOrder = false # if true, all lanes will set all transactions to allow out of order execution. This setting overrides individual settings from lane_config. To allow out of order execution per lane, then send "allow_out_of_order":true, similar to is_native_fee_token variable. BiDirectionalLane = true # True uses both the lanes. If bidirectional is false only one way lane is set up. NoOfCommitNodes = 5 # no of chainlink nodes with Commit job PhaseTimeout = '10m' # Duration to wait for the each phase validation(SendRequested, Commit, RMN Blessing, Execution) to time-out. @@ -361,7 +364,7 @@ CCIPOwnerTokens = false # if true, the test will use deploy the tokens by the CC # Uncomment the following if you want to run your tests with updated OCR params # otherwise test will use default OCR params from - -# https://github.com/smartcontractkit/chainlink/blob/develop/integration-tests/ccip-tests/contracts/contract_deployer.go#L729-L751 +# https://github.com/smartcontractkit/ccip/blob/ccip-develop/integration-tests/ccip-tests/contracts/contract_deployer.go#L729-L751 ## OCR Params #CommitInflightExpiry = '2m' #ExecInflightExpiry = '2m' diff --git a/integration-tests/ccip-tests/testconfig/tomls/ccip1.4-stress/baseline.toml b/integration-tests/ccip-tests/testconfig/tomls/ccip1.4-stress/baseline.toml index d48c0b0f797..d78cd125958 100644 --- a/integration-tests/ccip-tests/testconfig/tomls/ccip1.4-stress/baseline.toml +++ b/integration-tests/ccip-tests/testconfig/tomls/ccip1.4-stress/baseline.toml @@ -1,5 +1,5 @@ ## Baseline performance test on simulated environment (with chaos) -## 40 chains / 400 lanes +## 30 chains / 300 lanes ## historyDepth 200 / finalityDepth 200 ## block_time = 1s ## throughput 1msg / 5s @@ -7,8 +7,15 @@ ## ## make test_load_ccip testimage=.dkr.ecr..amazonaws.com/chainlink-ccip-tests:ccip-develop \ ## testname=TestLoadCCIPStableRequestTriggeringWithNetworkChaos \ -## override_toml=./testconfig/tomls/ccip-1.4-stress/baseline.toml \ -## secret_toml=./testconfig/tomls/secrets.toml +## override_toml=./testconfig/tomls/ccip-1.4-stress/baseline.toml + +## Adjust this value depending on what you want to test. +# Using releases and git tag requires changing the image name to the correct one in `~/.testsecrets`, e.g. +# E2E_TEST_CHAINLINK_IMAGE="public.ecr.aws/w0i8p0z9/chainlink-ccip" +# If you want to use a specific commit or a branch you need to switch to the internal ECR in `~/.testsecrets` +# E2E_TEST_CHAINLINK_IMAGE=".dkr.ecr..amazonaws.com/chainlink-ccip" +[CCIP.Env.NewCLCluster.Common.ChainlinkImage] +version = "2.14.0-ccip1.5.0" [CCIP] [CCIP.ContractVersions] @@ -19,10 +26,10 @@ TokenPool = '1.4.0' CommitStore = '1.2.0' [CCIP.Env] -TTL = '8h' +TTL = '10h' [CCIP.Env.Network] -selected_networks= ['PRIVATE-CHAIN-1', 'PRIVATE-CHAIN-2'] +selected_networks = ['PRIVATE-CHAIN-1', 'PRIVATE-CHAIN-2'] [CCIP.Env.Network.EVMNetworks.PRIVATE-CHAIN-1] evm_name = 'private-chain-1' @@ -66,7 +73,7 @@ block_time = 1 [CCIP.Env.NewCLCluster] NoOfNodes = 17 NodeMemory = '10Gi' -NodeCPU = '6' +NodeCPU = '4' DBMemory = '16Gi' DBCPU = '4' DBStorageClass = 'gp3' @@ -124,6 +131,8 @@ DeltaReconcile = '5s' """ CommonChainConfigTOML = """ +LogPollInterval = '1s' + [HeadTracker] HistoryDepth = 200 @@ -139,9 +148,9 @@ KeepEnvAlive = true NoOfCommitNodes = 16 PhaseTimeout = '40m' NodeFunding = 1000.0 -NoOfRoutersPerPair = 2 -NoOfNetworks = 40 -MaxNoOfLanes = 400 +NoOfRoutersPerPair = 1 +NoOfNetworks = 30 +MaxNoOfLanes = 300 [CCIP.Groups.load.OffRampConfig] BatchGasLimit = 11000000 @@ -150,11 +159,11 @@ BatchGasLimit = 11000000 TimeoutForPriceUpdate = '15m' NoOfTokensPerChain = 10 NoOfTokensWithDynamicPrice = 10 -DynamicPriceUpdateInterval ='15s' +DynamicPriceUpdateInterval = '15s' CCIPOwnerTokens = true [CCIP.Groups.load.LoadProfile] -TestDuration = '4h' +TestDuration = '6h' TimeUnit = '5s' RequestPerUnitTime = [1] OptimizeSpace = true @@ -162,7 +171,7 @@ NetworkChaosDelay = '100ms' # to represent 20%, 60%, 15%, 5% of the total messages [CCIP.Groups.load.LoadProfile.MsgProfile] -Frequencies = [4,12,3,1] +Frequencies = [4, 12, 3, 1] [[CCIP.Groups.load.LoadProfile.MsgProfile.MsgDetails]] MsgType = 'Token' @@ -186,4 +195,4 @@ DataLength = 10000 [[CCIP.Groups.load.LoadProfile.MsgProfile.MsgDetails]] MsgType = 'Data' DestGasLimit = 2500000 -DataLength = 10000 +DataLength = 10000 \ No newline at end of file diff --git a/integration-tests/ccip-tests/testconfig/tomls/lbtc_mock_deployment_with_32bytes_data.toml b/integration-tests/ccip-tests/testconfig/tomls/lbtc_mock_deployment_with_32bytes_data.toml new file mode 100644 index 00000000000..6f755456932 --- /dev/null +++ b/integration-tests/ccip-tests/testconfig/tomls/lbtc_mock_deployment_with_32bytes_data.toml @@ -0,0 +1,11 @@ +[CCIP] +[CCIP.Groups] +[CCIP.Groups.smoke] +LBTCMockDeployment = true +LBTCDestPoolDataAs32Bytes = true + +[CCIP.Groups.smoke.TokenConfig] +NoOfTokensPerChain = 1 + +[CCIP.Groups.smoke.MsgDetails] +NoOfTokens = 1 \ No newline at end of file diff --git a/integration-tests/ccip-tests/testconfig/tomls/lbtc_mock_deployment_with_non32bytes_data.toml b/integration-tests/ccip-tests/testconfig/tomls/lbtc_mock_deployment_with_non32bytes_data.toml new file mode 100644 index 00000000000..21210acbaf6 --- /dev/null +++ b/integration-tests/ccip-tests/testconfig/tomls/lbtc_mock_deployment_with_non32bytes_data.toml @@ -0,0 +1,11 @@ +[CCIP] +[CCIP.Groups] +[CCIP.Groups.smoke] +LBTCMockDeployment = true +LBTCDestPoolDataAs32Bytes = false + +[CCIP.Groups.smoke.TokenConfig] +NoOfTokensPerChain = 1 + +[CCIP.Groups.smoke.MsgDetails] +NoOfTokens = 1 \ No newline at end of file diff --git a/integration-tests/ccip-tests/testconfig/tomls/prod-testnet/load-prod-testnet.toml b/integration-tests/ccip-tests/testconfig/tomls/prod-testnet/load-prod-testnet.toml index f13965d5e67..c6902eaf490 100644 --- a/integration-tests/ccip-tests/testconfig/tomls/prod-testnet/load-prod-testnet.toml +++ b/integration-tests/ccip-tests/testconfig/tomls/prod-testnet/load-prod-testnet.toml @@ -1,898 +1,169 @@ [CCIP] [CCIP.ContractVersions] -PriceRegistry = '1.2.0' -OffRamp = '1.2.0' -OnRamp = '1.2.0' -TokenPool = '1.4.0' -CommitStore = '1.2.0' +PriceRegistry = 'latest' +OffRamp = 'latest' +OnRamp = 'latest' +CommitStore = 'latest' +TokenPool = 'latest' [CCIP.Deployments] Data = """ { "lane_configs": { - "Arbitrum Sepolia": { - "is_native_fee_token": true, - "fee_token": "0xb1D4538B4571d411F07960EF2838Ce337FE1E80E", - "bridge_tokens": [ - ], - "bridge_tokens_pools": [ - ], - "price_aggregators": null, - "arm": "0x5EF7a726Fd21Fd9D77D34E3C56cfDD8691F7F0ac", - "router": "0x2a9C5afB0d0e4BAb2BCdaE109EC4b0c4Be15a165", - "price_registry": "0x89D5b13908b9063abCC6791dc724bF7B7c93634C", - "wrapped_native": "0xE591bf0A0CF924A0674d7792db046B23CEbF5f34", - "src_contracts": { - "Avalanche Fuji": { - "on_ramp": "0x1Cb56374296ED19E86F68fA437ee679FD7798DaA", - "deployed_at": 33999325 - }, - "Base Sepolia": { - "on_ramp": "0x7854E73C73e7F9bb5b0D5B4861E997f4C6E8dcC6", - "deployed_at": 9199926 - }, - "Gnosis Chiado": { - "on_ramp": "0x973CbE752258D32AE82b60CD1CB656Eebb588dF0", - "deployed_at": 42809650 - }, - "Optimism Sepolia": { - "on_ramp": "0x701Fe16916dd21EFE2f535CA59611D818B017877", - "deployed_at": 35180131 - }, - "Sepolia Testnet": { - "on_ramp": "0x4205E1Ca0202A248A5D42F5975A8FE56F3E302e9", - "deployed_at": 35180131 - }, - "WeMix Testnet": { - "on_ramp": "0xBD4106fBE4699FE212A34Cc21b10BFf22b02d959", - "deployed_at": 18816676 - } - }, - "dest_contracts": { - "Avalanche Fuji": { - "off_ramp": "0xcab0EF91Bee323d1A617c0a027eE753aFd6997E4", - "commit_store": "0x0d90b9b96cBFa0D01635ce12982ccE1b70827c7a", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Base Sepolia": { - "off_ramp": "0xc1982985720B959E66c19b64F783361Eb9B60F26", - "commit_store": "0x28F66bB336f6db713d6ad2a3bd1B7a531282A159", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Gnosis Chiado": { - "off_ramp": "0x935C26F9a9122E5F9a27f2d3803e74c75B94f5a3", - "commit_store": "0xEdb963Ec5c2E5AbdFdCF137eF44A445a7fa4787A", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Optimism Sepolia": { - "off_ramp": "0xfD404A89e1d195F0c65be1A9042C77745197659e", - "commit_store": "0x84B7B012c95f8A152B44Ab3e952f2dEE424fA8e1", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Sepolia Testnet": { - "off_ramp": "0x1c71f141b4630EBE52d6aF4894812960abE207eB", - "commit_store": "0xaB0c8Ba51E7Fa3E5693a4Fbb39473520FD85d173", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "WeMix Testnet": { - "off_ramp": "0x262e16C8D42aa07bE13e58F81e7D9F62F6DE2830", - "commit_store": "0xc132eFAf929299E5ee704Fa6D9796CFa23Bb8b2C", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - } - } - }, "Avalanche Fuji": { - "fee_token": "0x0b9d5D9136855f6FEc3c0993feE6E9CE8a297846", - "bridge_tokens": [ - ], - "bridge_tokens_pools": [ - ], - "price_aggregators": null, - "arm": "0x0ea0D7B2b78DD3A926fC76d6875a287F0AEB158F", + "is_native_fee_token": true, + "fee_token": "0xd00ae08403B9bbb9124bB305C09058E32C39A48c", + "arm": "0x7e28DD790214139798446A121cFe950B51304684", "router": "0xF694E193200268f9a4868e4Aa017A0118C9a8177", "price_registry": "0x19e157E5fb1DAec1aE4BaB113fdf077F980704AA", "wrapped_native": "0xd00ae08403B9bbb9124bB305C09058E32C39A48c", "src_contracts": { - "Arbitrum Sepolia": { - "on_ramp": "0x8bB16BEDbFd62D1f905ACe8DBBF2954c8EEB4f66", - "deployed_at": 31888860 - }, - "BSC Testnet": { - "on_ramp": "0xF25ECF1Aad9B2E43EDc2960cF66f325783245535", - "deployed_at": 33214865 - }, "Base Sepolia": { - "on_ramp": "0x1A674645f3EB4147543FCA7d40C5719cbd997362", - "deployed_at": 31235262 - }, - "Gnosis Chiado": { - "on_ramp": "0x1532e5b204ee2b2244170c78E743CB9c168F4DF9", - "deployed_at": 32817266 + "on_ramp": "0x0aEc1AC9F6D0c21332d7a66dDF1Fbcb32cF3B0B3", + "deployed_at": 0 }, "Optimism Sepolia": { - "on_ramp": "0xC334DE5b020e056d0fE766dE46e8d9f306Ffa1E2", - "deployed_at": 30396804 - }, - "Polygon Amoy": { - "on_ramp": "0x610F76A35E17DA4542518D85FfEa12645eF111Fc", - "deployed_at": 31982368 + "on_ramp": "0x2a9EFdc9F93D9b822129038EFCa4B63Adf3f7FB5", + "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0x5724B4Cc39a9690135F7273b44Dfd3BA6c0c69aD", - "deployed_at": 33214865 - }, - "WeMix Testnet": { - "on_ramp": "0x677B5ab5C8522d929166c064d5700F147b15fa33", - "deployed_at": 30436465 + "on_ramp": "0x75b9a75Ee1fFef6BE7c4F842a041De7c6153CF4E", + "deployed_at": 0 } }, "dest_contracts": { - "Arbitrum Sepolia": { - "off_ramp": "0x90A74072e7B0c2d59e13aB4d8f93c8198c413194", - "commit_store": "0xf3458CFd2fdf4a6CF0Ce296d520DD21eB194828b", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "BSC Testnet": { - "off_ramp": "0x10b28009E5D776F1f5AAA73941CE8953B8f42d26", - "commit_store": "0xacDD582F271eCF22FAd6764cCDe1c4a534b732A8", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, "Base Sepolia": { - "off_ramp": "0xdBdE8510226d1E060A3bf982b67705C67f5697e2", - "commit_store": "0x8Ee73BC9492b4182D289E5C1e66e40CD876CC00F", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Gnosis Chiado": { - "off_ramp": "0x56dF55aF5F0A4689f3364230587a68eD6A314fAd", - "commit_store": "0xabA7ff98094c4cc7A075812EefF2CD21f6400235", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" + "off_ramp": "0xf8de9d5924CFD28e31a53B63B4903436D9818d69", + "commit_store": "0xDD7CfECE1bb4e8aC2E8b8281CFE1D44247119471", + "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Optimism Sepolia": { - "off_ramp": "0x3d7CbC95DCC33257F14D6Eb780c88Bd56C6335BB", - "commit_store": "0x1fcDC02edDfb405f378ba53cF9E6104feBcB7542", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Polygon Amoy": { - "off_ramp": "0x3e33290B90fD0FF30a3FA138934DF028E4eCA348", - "commit_store": "0xCFe3556Aa42d40be09BD23aa80448a19443BE5B1", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Sepolia Testnet": { - "off_ramp": "0x9e5e4324F8608D54A50a317832d456a392E4F8C2", - "commit_store": "0x92A51eD3F041B39EbD1e464C1f7cb1e8f8A8c63f", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "WeMix Testnet": { - "off_ramp": "0xD0D338318bC6837b091FC7AB5F2a94B7783507d5", - "commit_store": "0xd9D479208235c7355848ff4aF26eB5aacfDC30c6", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - } - } - }, - "BSC Testnet": { - "is_native_fee_token": true, - "fee_token": "0x84b9B910527Ad5C03A9Ca831909E21e236EA7b06", - "bridge_tokens": [ - ], - "bridge_tokens_pools": [ - ], - "price_aggregators": null, - "arm": "0xF9a21B587111e7E8745Fb8b13750014f19DB0014", - "router": "0xE1053aE1857476f36A3C62580FF9b016E8EE8F6f", - "price_registry": "0xCCDf022c9d31DC26Ebab4FB92432724a5b79809a", - "wrapped_native": "0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd", - "src_contracts": { - "Avalanche Fuji": { - "on_ramp": "0xa2515683E99F50ADbE177519A46bb20FfdBaA5de", - "deployed_at": 40500000 - }, - "Base Sepolia": { - "on_ramp": "0x3E807220Ca84b997c0d1928162227b46C618e0c5", - "deployed_at": 37115558 - }, - "Gnosis Chiado": { - "on_ramp": "0x8735f991d41eA9cA9D2CC75cD201e4B7C866E63e", - "deployed_at": 40228352 - }, - "Polygon Amoy": { - "on_ramp": "0xf37CcbfC04adc1B56a46B36F811D52C744a1AF78", - "deployed_at": 39572254 - }, - "Sepolia Testnet": { - "on_ramp": "0xB1DE44B04C00eaFe9915a3C07a0CaeA4410537dF", - "deployed_at": 38150066 - }, - "WeMix Testnet": { - "on_ramp": "0x89268Afc1BEA0782a27ba84124E3F42b196af927", - "deployed_at": 38184995 - } - }, - "dest_contracts": { - "Avalanche Fuji": { - "off_ramp": "0x6e6fFCb6B4BED91ff0CC8C2e57EC029dA7DB80C2", - "commit_store": "0x38Bc38Bd824b6eE87571f9D3CFbe6D6E28E3Dc62", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Base Sepolia": { - "off_ramp": "0x2C61FD7E93Dc79422861282145c59B56dFbc3a8c", - "commit_store": "0x42fAe5B3605804CF6d08632d7A25864e24F792Ae", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Gnosis Chiado": { - "off_ramp": "0x71a44a60832B0F8B63232C9516e7E6aEc3A373Dc", - "commit_store": "0xAC24299a91b72d1Cb5B31147e3CF54964D896974", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Polygon Amoy": { - "off_ramp": "0x63440C7747d37bc6154b5538AE32b54FE0965AfA", - "commit_store": "0xAD22fA198CECfC534927aE1D480c460d5bB3460F", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" + "off_ramp": "0x1DF9D94C6916918C935E60d2Cb4Ed265Bf778005", + "commit_store": "0xE7eeBE5882609d28C015d0A89DE1ba4f506F4a03", + "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0xf1c128Fe52Ea78CcAAB407509292E61ce38C1523", - "commit_store": "0x59dFD870dC4bd76A7B879A4f705Fdcd2595f85f9", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "WeMix Testnet": { - "off_ramp": "0xfd9B19c3725da5B517aA705B848ff3f21F98280e", - "commit_store": "0x3c1F1412563188aBc8FE3fd53E8F1Cb601CaB4f9", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" + "off_ramp": "0x01e3D835b4C4697D7F81B9d7Abc89A6E478E4a2f", + "commit_store": "0x4EC313c1Eb620432f42FB5f4Df27f8A566523c1C", + "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } }, "Base Sepolia": { "is_native_fee_token": true, - "fee_token": "0xE4aB69C077896252FAFBD49EFD26B5D171A32410", - "bridge_tokens": [ - ], - "bridge_tokens_pools": [ - ], - "price_aggregators": null, - "arm": "0x5aA82cA372782d6CC33AA4C830Df2a91017A7e1b", + "fee_token": "0x4200000000000000000000000000000000000006", + "arm": "0x7827dD0481EE18DB646bD250d20A8eA43da52146", "router": "0xD3b06cEbF099CE7DA4AcCf578aaebFDBd6e88a93", "price_registry": "0x4D20536e60832bE579Cd38E89Dc03d11E1741FbA", "wrapped_native": "0x4200000000000000000000000000000000000006", "src_contracts": { - "Arbitrum Sepolia": { - "on_ramp": "0x58622a80c6DdDc072F2b527a99BE1D0934eb2b50", - "deployed_at": 5146539 - }, "Avalanche Fuji": { - "on_ramp": "0xAbA09a1b7b9f13E05A6241292a66793Ec7d43357", - "deployed_at": 7810235 - }, - "BSC Testnet": { - "on_ramp": "0xD806966beAB5A3C75E5B90CDA4a6922C6A9F0c9d", - "deployed_at": 5144127 - }, - "Gnosis Chiado": { - "on_ramp": "0x2Eff2d1BF5C557d6289D208a7a43608f5E3FeCc2", - "deployed_at": 9817141 + "on_ramp": "0x212e8Fd9cCC330ab54E8141FA7d33967eF1eDafF", + "deployed_at": 0 }, "Optimism Sepolia": { - "on_ramp": "0x3b39Cd9599137f892Ad57A4f54158198D445D147", - "deployed_at": 5147649 + "on_ramp": "0x2945D35F428CE564F5455AD0AF28BDFCa67e76Ab", + "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0x6486906bB2d85A6c0cCEf2A2831C11A2059ebfea", - "deployed_at": 7810235 - }, - "ethereum-testnet-sepolia-mode-1": { - "on_ramp": "0x3d0115386C01436870a2c47e6297962284E70BA6", - "deployed_at": 10409731 + "on_ramp": "0x29A1F4ecE9246F0042A9062FB89803fA8B1830cB", + "deployed_at": 0 } }, "dest_contracts": { - "Arbitrum Sepolia": { - "off_ramp": "0xd364C06ac99a82a00d3eFF9F2F78E4Abe4b9baAA", - "commit_store": "0xdE8d0f47a71eA3fDFBD3162271652f2847939097", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, "Avalanche Fuji": { - "off_ramp": "0xAd91214efFee446500940c764DF77AF18427294F", - "commit_store": "0x1242b6c5e0e349b8d4BCf0938f961C4B4f7EA3Fa", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "BSC Testnet": { - "off_ramp": "0xd5E9508921434e8758f4540D55c1c066b7cc1598", - "commit_store": "0x1a86b29364D1B3fA3386329A361aA98A104b2742", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Gnosis Chiado": { - "off_ramp": "0x9Bb7e398ef9Acfe9cA584C39B1E233Cba62BB9f7", - "commit_store": "0x1F4B82cDebaC5e3a0Dd53183D47e51808B4a64cB", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" + "off_ramp": "0x3Ab3a3d35cAC95FfcFCcc127eF01eA8D87b0A64e", + "commit_store": "0x51313B8C068B5227fa7364E6eCB1382Fb751976F", + "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Optimism Sepolia": { - "off_ramp": "0x86a3910908eCaAA31Fcd9F0fC8841D8E98f1511d", - "commit_store": "0xE99a87C9b5ed4D2b6060195DEea5106ffF655736", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" + "off_ramp": "0x8718d1cc138421Dbc1B489CB7884FF68DE7ad867", + "commit_store": "0x3291D453c880E5b59EEd04E600c85268Cd378b7f", + "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0x189F61D9B886Dd2975D5Abc893c8Cf5f5effda71", - "commit_store": "0xEE7e27346DCD1e711348D0F7f7ECB53a9a3a08a7", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "ethereum-testnet-sepolia-mode-1": { - "off_ramp": "0xB26647A23e8b4284375e5C74b77c9557aE709D03", - "commit_store": "0x4b4fEB401d3E613e1D6242E155C83A80BF9ac2C9", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - } - } - }, - "Gnosis Chiado": { - "is_native_fee_token": true, - "fee_token": "0xDCA67FD8324990792C0bfaE95903B8A64097754F", - "bridge_tokens": [ - ], - "bridge_tokens_pools": [ - ], - "price_aggregators": null, - "arm": "0xb6f1Fe2CDE891eFd5Efd2A563C4C2F2549163718", - "router": "0x19b1bac554111517831ACadc0FD119D23Bb14391", - "price_registry": "0x2F4ACd1f8986c6B1788159C4c9a5fC3fceCCE363", - "wrapped_native": "0x18c8a7ec7897177E4529065a7E7B0878358B3BfF", - "src_contracts": { - "Arbitrum Sepolia": { - "on_ramp": "0x473b49fb592B54a4BfCD55d40E048431982879C9", - "deployed_at": 9718588 - }, - "Avalanche Fuji": { - "on_ramp": "0x610F76A35E17DA4542518D85FfEa12645eF111Fc", - "deployed_at": 9718676 - }, - "BSC Testnet": { - "on_ramp": "0xE48E6AA1fc7D0411acEA95F8C6CaD972A37721D4", - "deployed_at": 9718302 - }, - "Base Sepolia": { - "on_ramp": "0x41b4A51cAfb699D9504E89d19D71F92E886028a8", - "deployed_at": 9718513 - }, - "Optimism Sepolia": { - "on_ramp": "0xAae733212981e06D9C978Eb5148F8af03F54b6EF", - "deployed_at": 9718420 - }, - "Polygon Amoy": { - "on_ramp": "0x01800fCDd892e37f7829937271840A6F041bE62E", - "deployed_at": 9718194 - }, - "Sepolia Testnet": { - "on_ramp": "0x4ac7FBEc2A7298AbDf0E0F4fDC45015836C4bAFe", - "deployed_at": 8487681 - } - }, - "dest_contracts": { - "Arbitrum Sepolia": { - "off_ramp": "0x9aA82DBB53bf02096B771D40e9432A323a78fB26", - "commit_store": "0x5CdbA91aBC0cD81FC56bc10Ad1835C9E5fB38e5F", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Avalanche Fuji": { - "off_ramp": "0x3e33290B90fD0FF30a3FA138934DF028E4eCA348", - "commit_store": "0xCFe3556Aa42d40be09BD23aa80448a19443BE5B1", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "BSC Testnet": { - "off_ramp": "0xbc4AD54e91b213D4279af92c0C5518c0b96cf62D", - "commit_store": "0xff84e8Dd4Fd17eaBb23b6AeA6e1981830e54389C", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Base Sepolia": { - "off_ramp": "0x4117953A5ceeF12f5B8C1E973b470ab83a8CebA6", - "commit_store": "0x94ad41296186E81f31e1ed0B1BcF5fa9e1721C27", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Optimism Sepolia": { - "off_ramp": "0x33d2898F8fb7714FD1661791766f40754982a343", - "commit_store": "0x55d6Df194472f02CD481e506A277c4A29D0D1bCc", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Polygon Amoy": { - "off_ramp": "0x450543b1d85ca79885851D7b74dc982981b78229", - "commit_store": "0x23B79d940A769FE31b4C867A8BAE80117f24Ca81", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Sepolia Testnet": { - "off_ramp": "0xbf9036529123DE264bFA0FC7362fE25B650D4B16", - "commit_store": "0x5f7F1abD5c5EdaF2636D58B980e85355AF0Ef80d", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - } - } - }, - "Kroma Sepolia": { - "is_native_fee_token": true, - "fee_token": "0xa75cCA5b404ec6F4BB6EC4853D177FE7057085c8", - "bridge_tokens": [ - ], - "bridge_tokens_pools": [ - ], - "price_aggregators": null, - "arm": "0x1E4e4e0d6f6631A45C616F71a1A5cF208DB9eCDe", - "router": "0xA8C0c11bf64AF62CDCA6f93D3769B88BdD7cb93D", - "price_registry": "0xa1ed3A3aA29166C9c8448654A8cA6b7916BC8379", - "wrapped_native": "0x4200000000000000000000000000000000000001", - "src_contracts": { - "WeMix Testnet": { - "on_ramp": "0x6ea155Fc77566D9dcE01B8aa5D7968665dc4f0C5", - "deployed_at": 10290904 - } - }, - "dest_contracts": { - "WeMix Testnet": { - "off_ramp": "0xB602B6E5Caf08ac0C920EAE585aed100a8cF6f3B", - "commit_store": "0x89D5b13908b9063abCC6791dc724bF7B7c93634C", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" + "off_ramp": "0x0ecA23Ef70B828fEDd0A84d2692cB0527B52396A", + "commit_store": "0xA7F84Ec616F8e9Fa593339944E76bda90A9737fE", + "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } }, "Optimism Sepolia": { "is_native_fee_token": true, - "fee_token": "0xE4aB69C077896252FAFBD49EFD26B5D171A32410", - "bridge_tokens": [ - ], - "bridge_tokens_pools": [ - ], - "price_aggregators": null, - "arm": "0xf06Ff5D2084295909119ca541E93635E7D582FFc", + "fee_token": "0x4200000000000000000000000000000000000006", + "arm": "0xF51366F72184E22cF4a7a8362508DB0d3370392d", "router": "0x114A20A10b43D4115e5aeef7345a1A71d2a60C57", "price_registry": "0x782a7Ba95215f2F7c3dD4C153cbB2Ae3Ec2d3215", "wrapped_native": "0x4200000000000000000000000000000000000006", "src_contracts": { - "Arbitrum Sepolia": { - "on_ramp": "0x1a86b29364D1B3fA3386329A361aA98A104b2742", - "deployed_at": 10841494 - }, "Avalanche Fuji": { - "on_ramp": "0x6b38CC6Fa938D5AB09Bdf0CFe580E226fDD793cE", - "deployed_at": 8677537 + "on_ramp": "0x91a144F570ABA7FB7079Fb187A267390E0cc7367", + "deployed_at": 0 }, "Base Sepolia": { - "on_ramp": "0xe284D2315a28c4d62C419e8474dC457b219DB969", - "deployed_at": 7130524 - }, - "Gnosis Chiado": { - "on_ramp": "0x835a5b8e6CA17c2bB5A336c93a4E22478E6F1C8A", - "deployed_at": 11799783 - }, - "Polygon Amoy": { - "on_ramp": "0x2Cf26fb01E9ccDb831414B766287c0A9e4551089", - "deployed_at": 10813146 + "on_ramp": "0x6D22953cdEf8B0C9F0976Cfa52c33B198fEc5881", + "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0xC8b93b46BF682c39B3F65Aa1c135bC8A95A5E43a", - "deployed_at": 12165583 - }, - "WeMix Testnet": { - "on_ramp": "0xc7E53f6aB982af7A7C3e470c8cCa283d3399BDAd", - "deployed_at": 8733017 + "on_ramp": "0x54b32C2aCb4451c6cF66bcbd856d8A7Cc2263531", + "deployed_at": 0 } }, "dest_contracts": { - "Arbitrum Sepolia": { - "off_ramp": "0xDc2c7A3d8068C6F09F0F3648d24C84e372F6014d", - "commit_store": "0xb1aFb5cbE3c29b5Db71F21442BA9EfD450BC23C3", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, "Avalanche Fuji": { - "off_ramp": "0x1F350718e015EB20E5065C09F4A7a3f66888aEeD", - "commit_store": "0x98650A8EB59f75D93563aB34FcF603b1A30e4CBF", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" + "off_ramp": "0xCb2266c2118b1f30D15CBeB3a885531ABaA1b556", + "commit_store": "0x5Ded92E2CF71a8fF7644a67850F061c38B31BfB4", + "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Base Sepolia": { - "off_ramp": "0x0a750ca77369e03613d7640548F4b2b1c695c3Bb", - "commit_store": "0x8fEBC74C26129C8d7E60288C6dCCc75eb494aA3C", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Gnosis Chiado": { - "off_ramp": "0xCE2CE7F940B7c839384e5D7e079A6aE80e8AD6dB", - "commit_store": "0x1b9D78Ec1CEEC439F0b7eA6C428A1a607D9FA7e4", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Polygon Amoy": { - "off_ramp": "0xD667b5706592D0b040C78fEe5EE17D243b7dCB41", - "commit_store": "0x96101BA5250EE9295c193693C1e08A55bC593664", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" + "off_ramp": "0x960c62A491C30d0a60fD74a59d35B9C02697AdaA", + "commit_store": "0x06963745B3839B998288D1a46a46Ec25991A3D5E", + "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0x260AF9b83e0d2Bb6C9015fC9f0BfF8858A0CCE68", - "commit_store": "0x7a0bB92Bc8663abe6296d0162A9b41a2Cb2E0358", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "WeMix Testnet": { - "off_ramp": "0x9C08B7712af0344188aa5087D9e6aD0f47191037", - "commit_store": "0x4BE6DB0B884169a6A207fe5cad01eB4C025a13dB", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - } - } - }, - "Polygon Amoy": { - "is_native_fee_token": true, - "fee_token": "0x0Fd9e8d3aF1aaee056EB9e802c3A762a667b1904", - "bridge_tokens": [ - ], - "bridge_tokens_pools": [ - ], - "price_aggregators": null, - "arm": "0x50b023c5b33AEe5Adef15C2E95C2fEC690a52fa1", - "router": "0x9C32fCB86BF0f4a1A8921a9Fe46de3198bb884B2", - "price_registry": "0xfb2f2A207dC428da81fbAFfDDe121761f8Be1194", - "wrapped_native": "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9", - "src_contracts": { - "Avalanche Fuji": { - "on_ramp": "0x8Fb98b3837578aceEA32b454f3221FE18D7Ce903", - "deployed_at": 6004551 - }, - "BSC Testnet": { - "on_ramp": "0xC6683ac4a0F62803Bec89a5355B36495ddF2C38b", - "deployed_at": 6005330 - }, - "Gnosis Chiado": { - "on_ramp": "0x2331F6D614C9Fd613Ff59a1aB727f1EDf6c37A68", - "deployed_at": 6897885 - }, - "Optimism Sepolia": { - "on_ramp": "0xA52cDAeb43803A80B3c0C2296f5cFe57e695BE11", - "deployed_at": 6004902 - }, - "Sepolia Testnet": { - "on_ramp": "0x35347A2fC1f2a4c5Eae03339040d0b83b09e6FDA", - "deployed_at": 6004056 - }, - "WeMix Testnet": { - "on_ramp": "0x26546096F64B5eF9A1DcDAe70Df6F4f8c2E10C61", - "deployed_at": 6005611 - } - }, - "dest_contracts": { - "Avalanche Fuji": { - "off_ramp": "0xa733ce82a84335b2E9D864312225B0F3D5d80600", - "commit_store": "0x09B0F93fC2111aE439e853884173AC5b2F809885", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "BSC Testnet": { - "off_ramp": "0x948dfaa4842fc23e0e362Fe8D4396AaE4E6DF7EA", - "commit_store": "0x7F4e739D40E58BBd59dAD388171d18e37B26326f", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Gnosis Chiado": { - "off_ramp": "0x17c542a28e08AEF5697251601C7b2B621d153D42", - "commit_store": "0x811250c20fAB9a1b7ca245453aC214ba637fBEB5", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Optimism Sepolia": { - "off_ramp": "0xfFdE9E8c34A27BEBeaCcAcB7b3044A0A364455C9", - "commit_store": "0x74ED442ad211050e9C05Dc9A267E037E3d74A03B", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Sepolia Testnet": { - "off_ramp": "0xFb04129aD1EEDB741CC705ebC1978a7aB63e51f6", - "commit_store": "0x63f875240149d29136053C954Ca164a9BfA81F77", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "WeMix Testnet": { - "off_ramp": "0xdE8451E952Eb43350614839cCAA84f7C8701a09C", - "commit_store": "0xaCdaBa07ECad81dc634458b98673931DD9d3Bc14", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" + "off_ramp": "0x2aF9B10A5972D0c36f4d8F85773052c104E319B2", + "commit_store": "0x82FCF55b9e9bAb3066c2863F12a02bBc2Ba33F2F", + "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } }, "Sepolia Testnet": { "is_native_fee_token": true, - "fee_token": "0x779877A7B0D9E8603169DdbD7836e478b4624789", - "bridge_tokens": [ - ], - "bridge_tokens_pools": [ - ], - "price_aggregators": null, - "arm": "0xB4d360459F32Dd641Ef5A6985fFbAC5c4e5521aA", + "fee_token": "0x097D90c9d3E0B50Ca60e1ae45F6A81010f9FB534", + "arm": "0x27Da8735d8d1402cEc072C234759fbbB4dABBC4A", "router": "0x0BF3dE8c5D3e8A2B34D2BEeB17ABfCeBaf363A59", "price_registry": "0x9EF7D57a4ea30b9e37794E55b0C75F2A70275dCc", "wrapped_native": "0x097D90c9d3E0B50Ca60e1ae45F6A81010f9FB534", "src_contracts": { - "Arbitrum Sepolia": { - "on_ramp": "0xe4Dd3B16E09c016402585a8aDFdB4A18f772a07e", - "deployed_at": 5737506 - }, "Avalanche Fuji": { - "on_ramp": "0x0477cA0a35eE05D3f9f424d88bC0977ceCf339D4", - "deployed_at": 5944649 - }, - "BSC Testnet": { - "on_ramp": "0xD990f8aFA5BCB02f95eEd88ecB7C68f5998bD618", - "deployed_at": 5383500 + "on_ramp": "0x12492154714fBD28F28219f6fc4315d19de1025B", + "deployed_at": 0 }, "Base Sepolia": { - "on_ramp": "0x2B70a05320cB069e0fB55084D402343F832556E7", - "deployed_at": 5619657 - }, - "Gnosis Chiado": { - "on_ramp": "0x3E842E3A79A00AFdd03B52390B1caC6306Ea257E", - "deployed_at": 5386355 + "on_ramp": "0x8F35B097022135E0F46831f798a240Cc8c4b0B01", + "deployed_at": 0 }, "Optimism Sepolia": { - "on_ramp": "0x69CaB5A0a08a12BaFD8f5B195989D709E396Ed4d", - "deployed_at": 5937506 - }, - "Polygon Amoy": { - "on_ramp": "0x9f656e0361Fb5Df2ac446102c8aB31855B591692", - "deployed_at": 5723315 - }, - "WeMix Testnet": { - "on_ramp": "0xedFc22336Eb0B9B11Ff37C07777db27BCcDe3C65", - "deployed_at": 5393931 - }, - "celo-testnet-alfajores": { - "on_ramp": "0x3C86d16F52C10B2ff6696a0e1b8E0BcfCC085948", - "deployed_at": 5704643 - }, - "ethereum-testnet-sepolia-blast-1": { - "on_ramp": "0xDB75E9D9ca7577CcBd7232741be954cf26194a66", - "deployed_at": 6040848 - }, - "ethereum-testnet-sepolia-metis-1": { - "on_ramp": "0x1C4640914cd57c5f02a68048A0fbb0E12d904223", - "deployed_at": 6002793 - }, - "ethereum-testnet-sepolia-mode-1": { - "on_ramp": "0xc630fbD4D0F6AEB00aD0793FB827b54fBB78e981", - "deployed_at": 5970819 + "on_ramp": "0xACDfd7a98d853FA3914047Cd46e7f5D53BBC9FbB", + "deployed_at": 0 } }, "dest_contracts": { - "Arbitrum Sepolia": { - "off_ramp": "0xF18896AB20a09A29e64fdEbA99FDb8EC328f43b1", - "commit_store": "0x93Ff9Dd39Dc01eac1fc4d2c9211D95Ee458CAB94", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, "Avalanche Fuji": { - "off_ramp": "0x000b26f604eAadC3D874a4404bde6D64a97d95ca", - "commit_store": "0x2dD9273F8208B8393350508131270A6574A69784", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "BSC Testnet": { - "off_ramp": "0xdE2d8E126e08d675fCD7fFa5a6CE49925f3Dc692", - "commit_store": "0x0050ac355a82caB31194507f94174297bf0655A7", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" + "off_ramp": "0x1DEBa99dC8e2A77832461BD386d83D9FCb133137", + "commit_store": "0x139E06b6dBB1a0C41A1686C091795879c943765A", + "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Base Sepolia": { - "off_ramp": "0x31c0B81832B333419f0DfD36A69F502cF9094aed", - "commit_store": "0xDFcde9d698a2B32DB2537DC9B752Cadd1D846a52", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Gnosis Chiado": { - "off_ramp": "0x7db0115A0b3AAb01d30bf81123c5DD7B0C41Add5", - "commit_store": "0x6640723Ea801178c4383FA016b9781e7ef1016EF", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" + "off_ramp": "0x662738DC7DE4f7eC63d9f73Cdf9BeA5A58DdcC15", + "commit_store": "0x1e46bAC486Dd878cD57B62845530A52343e39693", + "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Optimism Sepolia": { - "off_ramp": "0xD50590D4438411EDe47029b0FD7901A7145E5Df6", - "commit_store": "0xe85EEE9Fd434A7b8a586Ee086E828abF41839479", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Polygon Amoy": { - "off_ramp": "0x5032cbC0C4aEeD25bb6E45D8B3fAF05DB0688C5d", - "commit_store": "0xe6201C9996Cc7B6E828E10CbE937E693d577D318", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "WeMix Testnet": { - "off_ramp": "0x46b639a3C1a4CBfD326b94a2dB7415c27157282f", - "commit_store": "0x7b74554678816b045c1e7409327E086bD436aa46", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "celo-testnet-alfajores": { - "off_ramp": "0xB435E0f73c18C5a12C324CA1d02F81F2C3e6e761", - "commit_store": "0xbc5d74957F171e75F92c8F0E1C317A25a56a416D", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "ethereum-testnet-sepolia-blast-1": { - "off_ramp": "0x4e897e5cF3aC307F0541B2151A88bCD781c153a3", - "commit_store": "0xB656652841F347178e193951C4663652aCe36B74", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "ethereum-testnet-sepolia-metis-1": { - "off_ramp": "0x4DB693A93E9d5196ECD42EC56CDEAe99dFC652ED", - "commit_store": "0xBfACd78F1412B6f93Ac23409bf456aFec1ABd845", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "ethereum-testnet-sepolia-mode-1": { - "off_ramp": "0xbEfd8D65F6643De54F0b1268A3bf4618ff85dcB4", - "commit_store": "0x0C161D3470b45Cc677661654C30ce4AdE6aCD288", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - } - } - }, - "WeMix Testnet": { - "is_native_fee_token": true, - "fee_token": "0x3580c7A817cCD41f7e02143BFa411D4EeAE78093", - "bridge_tokens": [ - ], - "bridge_tokens_pools": [ - ], - "price_aggregators": null, - "arm": "0x46fF31494651593973D9b38a872ED5B06f45A693", - "router": "0xA8C0c11bf64AF62CDCA6f93D3769B88BdD7cb93D", - "price_registry": "0x89D17571DB7C9540eeB36760E3c749C8fb984569", - "wrapped_native": "0xbE3686643c05f00eC46e73da594c78098F7a9Ae7", - "src_contracts": { - "Arbitrum Sepolia": { - "on_ramp": "0xA9DE3F7A617D67bC50c56baaCb9E0373C15EbfC6", - "deployed_at": 51216113 - }, - "Avalanche Fuji": { - "on_ramp": "0xC4aC84da458ba8e40210D2dF94C76E9a41f70069", - "deployed_at": 51214769 - }, - "BSC Testnet": { - "on_ramp": "0x5AD6eed6Be0ffaDCA4105050CF0E584D87E0c2F1", - "deployed_at": 51213771 - }, - "Kroma Sepolia": { - "on_ramp": "0x428C4dc89b6Bf908B82d77C9CBceA786ea8cc7D0", - "deployed_at": 51239062 - }, - "Optimism Sepolia": { - "on_ramp": "0x1961a7De751451F410391c251D4D4F98D71B767D", - "deployed_at": 51216748 - }, - "Polygon Amoy": { - "on_ramp": "0xd55148e841e76265B484d399eC71b7076ecB1216", - "deployed_at": 55378685 - }, - "Sepolia Testnet": { - "on_ramp": "0x4d57C6d8037C65fa66D6231844785a428310a735", - "deployed_at": 51239309 - } - }, - "dest_contracts": { - "Arbitrum Sepolia": { - "off_ramp": "0xeB1dFaB2464Bf0574D43e764E0c758f92e7ecAFb", - "commit_store": "0xcEaCa2B7890065c485f3E58657358a185Ad33791", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Avalanche Fuji": { - "off_ramp": "0x98e811Df9D2512f1aaf58D534607F583D6c54A4F", - "commit_store": "0x8e538351F6E5B2daF3c90C565C3738bca69a2716", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "BSC Testnet": { - "off_ramp": "0xB0e7f0fCcD3c961C473E7c44D939C1cDb4Cec1cB", - "commit_store": "0x4B56D8d53f1A6e0117B09700067De99581aA5542", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Kroma Sepolia": { - "off_ramp": "0xD685D2d224dd6D0Db2D56497db6270D77D9a7966", - "commit_store": "0x7e062D6880779a0347e7742058C1b1Ee4AA0B137", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Optimism Sepolia": { - "off_ramp": "0xA5f97Bc69Bf06e7C37B93265c5457420A92c5F4b", - "commit_store": "0xd48b9213583074f518D8f4336FDf35370D450132", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Polygon Amoy": { - "off_ramp": "0x6c8f5999B06FDE17B11E4e3C1062b761766F960f", - "commit_store": "0x957c3c2056192e58A8485eF31165fC490d474239", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Sepolia Testnet": { - "off_ramp": "0x8AB103843ED9D28D2C5DAf5FdB9c3e1CE2B6c876", - "commit_store": "0x7d5297c5506ee2A7Ef121Da9bE02b6a6AD30b392", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - } - } - }, - "celo-testnet-alfajores": { - "is_native_fee_token": true, - "fee_token": "0x32E08557B14FaD8908025619797221281D439071", - "bridge_tokens": [ - ], - "bridge_tokens_pools": [ - ], - "price_aggregators": null, - "arm": "0xbE8FD4b84ca8CC2cFAeeEf8dc1388E44860eeEeb", - "router": "0xb00E95b773528E2Ea724DB06B75113F239D15Dca", - "price_registry": "0x8F048206D11B2c69b8963E2EBd5968D141e022f4", - "wrapped_native": "0x99604d0e2EfE7ABFb58BdE565b5330Bb46Ab3Dca", - "src_contracts": { - "Sepolia Testnet": { - "on_ramp": "0x16a020c4bbdE363FaB8481262D30516AdbcfcFc8", - "deployed_at": 23561364 - } - }, - "dest_contracts": { - "Sepolia Testnet": { - "off_ramp": "0xa1b97F92D806BA040daf419AFC2765DC723683a4", - "commit_store": "0xcd92C0599Ac515e7588865cC45Eee21A74816aFc", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - } - } - }, - "ethereum-testnet-sepolia-blast-1": { - "is_native_fee_token": true, - "fee_token": "0x02c359ebf98fc8BF793F970F9B8302bb373BdF32", - "bridge_tokens": [ - ], - "bridge_tokens_pools": [ - ], - "price_aggregators": null, - "arm": "0x9C32fCB86BF0f4a1A8921a9Fe46de3198bb884B2", - "router": "0xfb2f2A207dC428da81fbAFfDDe121761f8Be1194", - "price_registry": "0xc8acE9dF450FaD007755C6C9AB4f0e9c8626E29C", - "wrapped_native": "0x4200000000000000000000000000000000000023", - "src_contracts": { - "Sepolia Testnet": { - "on_ramp": "0x85Ef19FC4C63c70744995DC38CAAEC185E0c619f", - "deployed_at": 6429339 - } - }, - "dest_contracts": { - "Sepolia Testnet": { - "off_ramp": "0x92cD24C278D34C726f377703E50875d8f9535dC2", - "commit_store": "0xcE1b4D50CeD56850182Bd58Ace91171cB249B873", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - } - } - }, - "ethereum-testnet-sepolia-metis-1": { - "is_native_fee_token": true, - "fee_token": "0x9870D6a0e05F867EAAe696e106741843F7fD116D", - "bridge_tokens": [ - ], - "bridge_tokens_pools": [ - ], - "price_aggregators": null, - "arm": "0x26546096F64B5eF9A1DcDAe70Df6F4f8c2E10C61", - "router": "0xaCdaBa07ECad81dc634458b98673931DD9d3Bc14", - "price_registry": "0x5DCE866b3ae6E0Ed153f0e149D7203A1B266cdF5", - "wrapped_native": "0x5c48e07062aC4E2Cf4b9A768a711Aef18e8fbdA0", - "src_contracts": { - "Sepolia Testnet": { - "on_ramp": "0x2Eff2d1BF5C557d6289D208a7a43608f5E3FeCc2", - "deployed_at": 858864 - } - }, - "dest_contracts": { - "Sepolia Testnet": { - "off_ramp": "0x9Bb7e398ef9Acfe9cA584C39B1E233Cba62BB9f7", - "commit_store": "0x1F4B82cDebaC5e3a0Dd53183D47e51808B4a64cB", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - } - } - }, - "ethereum-testnet-sepolia-mode-1": { - "is_native_fee_token": true, - "fee_token": "0x925a4bfE64AE2bFAC8a02b35F78e60C29743755d", - "bridge_tokens": [ - ], - "bridge_tokens_pools": [ - ], - "price_aggregators": null, - "arm": "0x11545812A8d64e4A3A0Ec36b6F70D87b42Ce4a01", - "router": "0xc49ec0eB4beb48B8Da4cceC51AA9A5bD0D0A4c43", - "price_registry": "0xa733ce82a84335b2E9D864312225B0F3D5d80600", - "wrapped_native": "0x4200000000000000000000000000000000000006", - "src_contracts": { - "Base Sepolia": { - "on_ramp": "0x73f7E074bd7291706a0C5412f51DB46441B1aDCB", - "deployed_at": 14359909 - }, - "Sepolia Testnet": { - "on_ramp": "0xfFdE9E8c34A27BEBeaCcAcB7b3044A0A364455C9", - "deployed_at": 14359680 - } - }, - "dest_contracts": { - "Base Sepolia": { - "off_ramp": "0x137a38c6b1Ad20101F93516aB2159Df525309168", - "commit_store": "0x8F43d867969F14619895d71E0A5b89E0bb20bF70", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" - }, - "Sepolia Testnet": { - "off_ramp": "0xcD44cec849B6a8eBd5551D6DFeEcA452257Dfe4d", - "commit_store": "0xbA66f08733E6715D33edDfb5a5947676bb45d0e0", - "receiver_dapp": "0x1A2A69e3eB1382FE34Bc579AdD5Bae39e31d4A2c" + "off_ramp": "0xbfa6f6AAE31acB3A285e80026d6475C1a50d1d0F", + "commit_store": "0xB5FbA97Dc61ec68771a92a15360d9C32c9d054E7", + "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } } @@ -901,26 +172,20 @@ Data = """ """ [CCIP.Env] -TTL = '8h' +TTL = '2h' [CCIP.Env.Network] selected_networks = [ - 'ARBITRUM_SEPOLIA', - 'AVALANCHE_FUJI', - 'OPTIMISM_SEPOLIA', - 'BASE_SEPOLIA', - 'BSC_TESTNET', - 'WEMIX_TESTNET', - 'SEPOLIA', - 'POLYGON_AMOY', - 'KROMA_SEPOLIA', - 'BLAST_SEPOLIA' + 'AVALANCHE_FUJI', + 'OPTIMISM_SEPOLIA', + 'BASE_SEPOLIA', + 'SEPOLIA', ] [CCIP.Groups.load] NetworkPairs = [ - 'AVALANCHE_FUJI,SEPOLIA', - 'OPTIMISM_SEPOLIA,BASE_SEPOLIA' + 'AVALANCHE_FUJI,SEPOLIA', + 'OPTIMISM_SEPOLIA,BASE_SEPOLIA' ] BiDirectionalLane = true @@ -929,15 +194,21 @@ ExistingDeployment = true NoOfTokensPerChain = 1 +# 1msg/5sec = 12msg/min [CCIP.Groups.load.LoadProfile] -RequestPerUnitTime = [1] -TimeUnit = '5s' +RequestPerUnitTime = [12] +TimeUnit = '1m' TestDuration = '1h' TestRunName = 'ccip-prod-testnet-stress' +# There is slower exec rounds in Sepolia/Ethereum, therefore reducing the frequency +# 1msg/12sec = 5msg/min +[CCIP.Groups.load.LoadProfile.FrequencyByDestination.sepolia-testnet] +RequestPerUnitTime = [5] + # to represent 20%, 60%, 15%, 5% of the total messages [CCIP.Groups.load.LoadProfile.MsgProfile] -Frequencies = [4,12,3,1] +Frequencies = [4, 12, 3, 1] [[CCIP.Groups.load.LoadProfile.MsgProfile.MsgDetails]] MsgType = 'Token' diff --git a/integration-tests/ccip-tests/testconfig/tomls/prod-testnet/smoke-release-testing_native.toml b/integration-tests/ccip-tests/testconfig/tomls/prod-testnet/smoke-release-testing_native.toml index 24e7cbc9c88..6281274eacf 100644 --- a/integration-tests/ccip-tests/testconfig/tomls/prod-testnet/smoke-release-testing_native.toml +++ b/integration-tests/ccip-tests/testconfig/tomls/prod-testnet/smoke-release-testing_native.toml @@ -14,71 +14,74 @@ Data = """ "Arbitrum Sepolia": { "is_native_fee_token": true, "fee_token": "0xE591bf0A0CF924A0674d7792db046B23CEbF5f34", - "bridge_tokens": [ - "0xA8C0c11bf64AF62CDCA6f93D3769B88BdD7cb93D" - ], - "bridge_tokens_pools": [ - "0x99685281Ec520a003F1A726A5a8078c2124c1477" - ], "arm": "0xbcBDf0aDEDC9a33ED5338Bdb4B6F7CE664DC2e8B", "router": "0x2a9C5afB0d0e4BAb2BCdaE109EC4b0c4Be15a165", "price_registry": "0x89D5b13908b9063abCC6791dc724bF7B7c93634C", "wrapped_native": "0xE591bf0A0CF924A0674d7792db046B23CEbF5f34", "src_contracts": { "Avalanche Fuji": { - "on_ramp": "0x1Cb56374296ED19E86F68fA437ee679FD7798DaA", + "on_ramp": "0x20C8c9F13C6AA402F2545AD15fB7a9CdE9108618", "deployed_at": 0 }, "Base Sepolia": { - "on_ramp": "0x7854E73C73e7F9bb5b0D5B4861E997f4C6E8dcC6", + "on_ramp": "0xF1623862e4c9f9Fba1Ac0181C4fF53B4f958F065", "deployed_at": 0 }, "Gnosis Chiado": { - "on_ramp": "0x973CbE752258D32AE82b60CD1CB656Eebb588dF0", + "on_ramp": "0xEfe02eB139D2A82e38184d28E3b65bb176F26ebD", + "deployed_at": 0 + }, + "Metis Sepolia": { + "on_ramp": "0x46a79a6a4B07FD3FC14ea8299A99FE29576776E2", "deployed_at": 0 }, "Optimism Sepolia": { - "on_ramp": "0x701Fe16916dd21EFE2f535CA59611D818B017877", + "on_ramp": "0x0B0c08Bb2fA2EbDe25817009ee39eA1ad9bCaC58", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0x4205E1Ca0202A248A5D42F5975A8FE56F3E302e9", + "on_ramp": "0x64d78F20aD987c7D52FdCB8FB0777bD00de53210", "deployed_at": 0 }, "WeMix Testnet": { - "on_ramp": "0xBD4106fBE4699FE212A34Cc21b10BFf22b02d959", + "on_ramp": "0x2F3Daf77A663603826c7750E956b6555DE6f8250", "deployed_at": 0 } }, "dest_contracts": { "Avalanche Fuji": { - "off_ramp": "0xcab0EF91Bee323d1A617c0a027eE753aFd6997E4", - "commit_store": "0x0d90b9b96cBFa0D01635ce12982ccE1b70827c7a", + "off_ramp": "0x7245a5947E2F32B66aF74F4dAF91718ea19afaDf", + "commit_store": "0x490AC77BbB26f4FFf876Ded07bCAE6DBe685be98", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Base Sepolia": { - "off_ramp": "0xc1982985720B959E66c19b64F783361Eb9B60F26", - "commit_store": "0x28F66bB336f6db713d6ad2a3bd1B7a531282A159", + "off_ramp": "0xF2aB55Ed448A6fAD75013900568B6a927f52e5e0", + "commit_store": "0x833E5995A7422120f445f9B8dD1b9BD1037c68E5", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Gnosis Chiado": { - "off_ramp": "0x935C26F9a9122E5F9a27f2d3803e74c75B94f5a3", - "commit_store": "0xEdb963Ec5c2E5AbdFdCF137eF44A445a7fa4787A", + "off_ramp": "0xc1Cb31493fB2386aDC1Ea01F935F2bd8a8dCA388", + "commit_store": "0xe21896657A65c8959F16E1c3Ee5713E85d9EA020", + "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" + }, + "Metis Sepolia": { + "off_ramp": "0xc47143147Fd62A09618C695c7C03714aCe8db1Cf", + "commit_store": "0x2F42e7B22eE5885158916624Ff00608f4C82313D", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Optimism Sepolia": { - "off_ramp": "0xfD404A89e1d195F0c65be1A9042C77745197659e", - "commit_store": "0x84B7B012c95f8A152B44Ab3e952f2dEE424fA8e1", + "off_ramp": "0x4a7E91EF68758aaC66AeD656267bbCD0f9b6c019", + "commit_store": "0xb0A09D6A15FF7A0142DF3F62b2C4D1e11D763Ed0", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0x1c71f141b4630EBE52d6aF4894812960abE207eB", - "commit_store": "0xaB0c8Ba51E7Fa3E5693a4Fbb39473520FD85d173", + "off_ramp": "0xBed6e9131916d724418C8a6FE810F727302a5c00", + "commit_store": "0xdDb61B6bDa1B46d88f556440fABFe219F6da4F3a", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "WeMix Testnet": { - "off_ramp": "0x262e16C8D42aa07bE13e58F81e7D9F62F6DE2830", - "commit_store": "0xc132eFAf929299E5ee704Fa6D9796CFa23Bb8b2C", + "off_ramp": "0x11d486E92d291704D1E25cDbAeee687237247826", + "commit_store": "0xece9353095aC79Db9DD5bf2022690Fa6BffeBCAc", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -86,89 +89,83 @@ Data = """ "Avalanche Fuji": { "is_native_fee_token": true, "fee_token": "0xd00ae08403B9bbb9124bB305C09058E32C39A48c", - "bridge_tokens": [ - "0xD21341536c5cF5EB1bcb58f6723cE26e8D8E90e4" - ], - "bridge_tokens_pools": [ - "0xEC1062cbDf4fBf31B3A6Aac62B6F6F123bb70E12" - ], "arm": "0x7e28DD790214139798446A121cFe950B51304684", "router": "0xF694E193200268f9a4868e4Aa017A0118C9a8177", "price_registry": "0x19e157E5fb1DAec1aE4BaB113fdf077F980704AA", "wrapped_native": "0xd00ae08403B9bbb9124bB305C09058E32C39A48c", "src_contracts": { "Arbitrum Sepolia": { - "on_ramp": "0x8bB16BEDbFd62D1f905ACe8DBBF2954c8EEB4f66", + "on_ramp": "0xa9946BA30DAeC98745755e4410d6e8E894Edc53B", "deployed_at": 0 }, "BSC Testnet": { - "on_ramp": "0xF25ECF1Aad9B2E43EDc2960cF66f325783245535", + "on_ramp": "0x906BC7D10947A94ba0252e8C2E34868A466c03ED", "deployed_at": 0 }, "Base Sepolia": { - "on_ramp": "0x1A674645f3EB4147543FCA7d40C5719cbd997362", + "on_ramp": "0x0aEc1AC9F6D0c21332d7a66dDF1Fbcb32cF3B0B3", "deployed_at": 0 }, "Gnosis Chiado": { - "on_ramp": "0x1532e5b204ee2b2244170c78E743CB9c168F4DF9", + "on_ramp": "0x3dda45E731EC1db18B95651d1AF1868aa878468D", "deployed_at": 0 }, "Optimism Sepolia": { - "on_ramp": "0xC334DE5b020e056d0fE766dE46e8d9f306Ffa1E2", + "on_ramp": "0x2a9EFdc9F93D9b822129038EFCa4B63Adf3f7FB5", "deployed_at": 0 }, "Polygon Amoy": { - "on_ramp": "0x610F76A35E17DA4542518D85FfEa12645eF111Fc", + "on_ramp": "0xA82b9ACAcFA6FaB1FD721e7a748A30E3001351F9", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0x5724B4Cc39a9690135F7273b44Dfd3BA6c0c69aD", + "on_ramp": "0x75b9a75Ee1fFef6BE7c4F842a041De7c6153CF4E", "deployed_at": 0 }, "WeMix Testnet": { - "on_ramp": "0x677B5ab5C8522d929166c064d5700F147b15fa33", + "on_ramp": "0x1ff99E67986E83bb5BA34143BaA2735853e5738c", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Sepolia": { - "off_ramp": "0x90A74072e7B0c2d59e13aB4d8f93c8198c413194", - "commit_store": "0xf3458CFd2fdf4a6CF0Ce296d520DD21eB194828b", + "off_ramp": "0xd88CBA0612f2Ce611BF6d073A94C8FD7E70B4fBd", + "commit_store": "0x9b8279E352bC167F714eef96A4C436bE996643cE", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "BSC Testnet": { - "off_ramp": "0x10b28009E5D776F1f5AAA73941CE8953B8f42d26", - "commit_store": "0xacDD582F271eCF22FAd6764cCDe1c4a534b732A8", + "off_ramp": "0x9c40A73F5C7454BB7C178AFa56Ee30bFB2DCf7E6", + "commit_store": "0xE5611af1d63340b711B0468a976651Fb79B17870", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Base Sepolia": { - "off_ramp": "0xdBdE8510226d1E060A3bf982b67705C67f5697e2", - "commit_store": "0x8Ee73BC9492b4182D289E5C1e66e40CD876CC00F", + "off_ramp": "0xf8de9d5924CFD28e31a53B63B4903436D9818d69", + "commit_store": "0xDD7CfECE1bb4e8aC2E8b8281CFE1D44247119471", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Gnosis Chiado": { - "off_ramp": "0x56dF55aF5F0A4689f3364230587a68eD6A314fAd", - "commit_store": "0xabA7ff98094c4cc7A075812EefF2CD21f6400235", + "off_ramp": "0x3F5035039C23cDAF032C64c084Dc70F811E62ddD", + "commit_store": "0xf5B0245c7B9e15f0cB0B85FF2B6799a45D61CbaA", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Optimism Sepolia": { - "off_ramp": "0x3d7CbC95DCC33257F14D6Eb780c88Bd56C6335BB", - "commit_store": "0x1fcDC02edDfb405f378ba53cF9E6104feBcB7542", + "off_ramp": "0x1DF9D94C6916918C935E60d2Cb4Ed265Bf778005", + "commit_store": "0xE7eeBE5882609d28C015d0A89DE1ba4f506F4a03", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Polygon Amoy": { - "off_ramp": "0x3e33290B90fD0FF30a3FA138934DF028E4eCA348", - "commit_store": "0xCFe3556Aa42d40be09BD23aa80448a19443BE5B1", + "off_ramp": "0xbeD7F478Ef5627FB2B891fDA29Ca0131f6796D9D", + "commit_store": "0x27a319f58c01380056c86938798aCEAA1AC529e2", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0x9e5e4324F8608D54A50a317832d456a392E4F8C2", - "commit_store": "0x92A51eD3F041B39EbD1e464C1f7cb1e8f8A8c63f", + "off_ramp": "0x01e3D835b4C4697D7F81B9d7Abc89A6E478E4a2f", + "commit_store": "0x4EC313c1Eb620432f42FB5f4Df27f8A566523c1C", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "WeMix Testnet": { - "off_ramp": "0xD0D338318bC6837b091FC7AB5F2a94B7783507d5", - "commit_store": "0xd9D479208235c7355848ff4aF26eB5aacfDC30c6", + "off_ramp": "0x15CcAbf0e3484D4872e25b883163D8cB724d4832", + "commit_store": "0x859f3477B7b4ECc19aDD8cCb19740932F21bD76b", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -176,71 +173,74 @@ Data = """ "BSC Testnet": { "is_native_fee_token": true, "fee_token": "0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd", - "bridge_tokens": [ - "0xbFA2ACd33ED6EEc0ed3Cc06bF1ac38d22b36B9e9" - ], - "bridge_tokens_pools": [ - "0x31eDe84776DA37e2404eE88d71c234e92cB672e5" - ], "arm": "0x7D899D26F2E94fFcd4b440C3008B0C6BEfcD3cca", "router": "0xE1053aE1857476f36A3C62580FF9b016E8EE8F6f", "price_registry": "0xCCDf022c9d31DC26Ebab4FB92432724a5b79809a", "wrapped_native": "0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd", "src_contracts": { "Avalanche Fuji": { - "on_ramp": "0xa2515683E99F50ADbE177519A46bb20FfdBaA5de", + "on_ramp": "0x2A6f8Ed2e7b222163ef6EcC2327171B479399ab2", "deployed_at": 0 }, "Base Sepolia": { - "on_ramp": "0x3E807220Ca84b997c0d1928162227b46C618e0c5", + "on_ramp": "0x97856Bf888F6eEDBBd322B28133BCcF9CA9038f6", + "deployed_at": 0 + }, + "Blast Sepolia": { + "on_ramp": "0xd0049BfFc8e2689Df9236FfA393Ccbf7eae4FbbC", "deployed_at": 0 }, "Gnosis Chiado": { - "on_ramp": "0x8735f991d41eA9cA9D2CC75cD201e4B7C866E63e", + "on_ramp": "0x98dEa9e498F2A7aF6c74C915c88A17FbA09b73C2", "deployed_at": 0 }, "Polygon Amoy": { - "on_ramp": "0xf37CcbfC04adc1B56a46B36F811D52C744a1AF78", + "on_ramp": "0x363EB789fE31F08547a847D8C38d9b55C7Cf1903", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0xB1DE44B04C00eaFe9915a3C07a0CaeA4410537dF", + "on_ramp": "0xC1C6438D60AbE9bF4b1F10460184CE9bD312e328", "deployed_at": 0 }, "WeMix Testnet": { - "on_ramp": "0x89268Afc1BEA0782a27ba84124E3F42b196af927", + "on_ramp": "0xbc85704EDb79ea84E9D3C18965F7f6A16B0a0440", "deployed_at": 0 } }, "dest_contracts": { "Avalanche Fuji": { - "off_ramp": "0x6e6fFCb6B4BED91ff0CC8C2e57EC029dA7DB80C2", - "commit_store": "0x38Bc38Bd824b6eE87571f9D3CFbe6D6E28E3Dc62", + "off_ramp": "0x95b66acfaaDF122f4EccE52C0aD4Fd997DD1150C", + "commit_store": "0x3af04b1c1e79A6B8A4577Bb47EC33eD2E66AeB47", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Base Sepolia": { - "off_ramp": "0x2C61FD7E93Dc79422861282145c59B56dFbc3a8c", - "commit_store": "0x42fAe5B3605804CF6d08632d7A25864e24F792Ae", + "off_ramp": "0x0a5147e1Ac38C79c77031194ef64C8B5353F6EE9", + "commit_store": "0x103864D60b33a479EA7D0e23a37e0ce07198f0A9", + "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" + }, + "Blast Sepolia": { + "off_ramp": "0xe1e8473218acCB82FBc24Ccd3C5D2dF166cd04f3", + "commit_store": "0x020B047A5Ca88fDB1ad3bAD9A082760fC7F770b6", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Gnosis Chiado": { - "off_ramp": "0x71a44a60832B0F8B63232C9516e7E6aEc3A373Dc", - "commit_store": "0xAC24299a91b72d1Cb5B31147e3CF54964D896974", + "off_ramp": "0x1F7FEBCBb10420E039C333A60A444c1a442d826C", + "commit_store": "0x23Ae763a64D39d6038431a64Bbc4A670C89d82b9", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Polygon Amoy": { - "off_ramp": "0x63440C7747d37bc6154b5538AE32b54FE0965AfA", - "commit_store": "0xAD22fA198CECfC534927aE1D480c460d5bB3460F", + "off_ramp": "0xAAe325adbc9C5a28e4e94Fef170D55de2CA9aA01", + "commit_store": "0xD173Df3A1b23ec42eA5C4669b9c956Bef230efd1", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0xf1c128Fe52Ea78CcAAB407509292E61ce38C1523", - "commit_store": "0x59dFD870dC4bd76A7B879A4f705Fdcd2595f85f9", + "off_ramp": "0xB513523aee87f838e78b32d2Bacaaf2e94D9f0f9", + "commit_store": "0x21A49164890576504C1f1c4DC9442c42C98771D7", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "WeMix Testnet": { - "off_ramp": "0xfd9B19c3725da5B517aA705B848ff3f21F98280e", - "commit_store": "0x3c1F1412563188aBc8FE3fd53E8F1Cb601CaB4f9", + "off_ramp": "0xc985571900DCa62387f93F882AB550472531f5DB", + "commit_store": "0xac5DACfAb1a512E33c49EFE42502863FC1a4BAB3", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -248,80 +248,74 @@ Data = """ "Base Sepolia": { "is_native_fee_token": true, "fee_token": "0x4200000000000000000000000000000000000006", - "bridge_tokens": [ - "0x88A2d74F47a237a62e7A51cdDa67270CE381555e" - ], - "bridge_tokens_pools": [ - "0x875207858c691F192C606068f417dCf666b2EC6B" - ], "arm": "0x7827dD0481EE18DB646bD250d20A8eA43da52146", "router": "0xD3b06cEbF099CE7DA4AcCf578aaebFDBd6e88a93", "price_registry": "0x4D20536e60832bE579Cd38E89Dc03d11E1741FbA", "wrapped_native": "0x4200000000000000000000000000000000000006", "src_contracts": { "Arbitrum Sepolia": { - "on_ramp": "0x58622a80c6DdDc072F2b527a99BE1D0934eb2b50", + "on_ramp": "0xb52eF669d3fCeBee1f31418Facc02a16A6F6B0e5", "deployed_at": 0 }, "Avalanche Fuji": { - "on_ramp": "0xAbA09a1b7b9f13E05A6241292a66793Ec7d43357", + "on_ramp": "0x212e8Fd9cCC330ab54E8141FA7d33967eF1eDafF", "deployed_at": 0 }, "BSC Testnet": { - "on_ramp": "0xD806966beAB5A3C75E5B90CDA4a6922C6A9F0c9d", + "on_ramp": "0xd54B44811AE99a18Cb95B4704ba04a65C0163751", "deployed_at": 0 }, "Gnosis Chiado": { - "on_ramp": "0x2Eff2d1BF5C557d6289D208a7a43608f5E3FeCc2", + "on_ramp": "0xdd0Ee1F20E93a93634AAcE56105E19423881Df56", "deployed_at": 0 }, "Mode Sepolia": { - "on_ramp": "0x3d0115386C01436870a2c47e6297962284E70BA6", + "on_ramp": "0xc59689dFDEF9D953cEFbb58912b304bb38408476", "deployed_at": 0 }, "Optimism Sepolia": { - "on_ramp": "0x3b39Cd9599137f892Ad57A4f54158198D445D147", + "on_ramp": "0x2945D35F428CE564F5455AD0AF28BDFCa67e76Ab", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0x6486906bB2d85A6c0cCEf2A2831C11A2059ebfea", + "on_ramp": "0x29A1F4ecE9246F0042A9062FB89803fA8B1830cB", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Sepolia": { - "off_ramp": "0xd364C06ac99a82a00d3eFF9F2F78E4Abe4b9baAA", - "commit_store": "0xdE8d0f47a71eA3fDFBD3162271652f2847939097", + "off_ramp": "0x814E735c5DD19240c85E2513DD926Bc3a39f7140", + "commit_store": "0xFc24B204bfA5C65eD8e2Fc02fDe4FeCb62eA8Ac5", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Avalanche Fuji": { - "off_ramp": "0xAd91214efFee446500940c764DF77AF18427294F", - "commit_store": "0x1242b6c5e0e349b8d4BCf0938f961C4B4f7EA3Fa", + "off_ramp": "0x3Ab3a3d35cAC95FfcFCcc127eF01eA8D87b0A64e", + "commit_store": "0x51313B8C068B5227fa7364E6eCB1382Fb751976F", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "BSC Testnet": { - "off_ramp": "0xd5E9508921434e8758f4540D55c1c066b7cc1598", - "commit_store": "0x1a86b29364D1B3fA3386329A361aA98A104b2742", + "off_ramp": "0x827CF69409307Cd4c979e652894C297ad5124ab7", + "commit_store": "0x547eBe6077305c3fdF8dA66c66cc14b0779CE00C", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Gnosis Chiado": { - "off_ramp": "0x9Bb7e398ef9Acfe9cA584C39B1E233Cba62BB9f7", - "commit_store": "0x1F4B82cDebaC5e3a0Dd53183D47e51808B4a64cB", + "off_ramp": "0x8bB08Bc19771C69E739a2078894523b3DC05a05e", + "commit_store": "0xf163Da63bDB8b9C355d41C755E03125988650109", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Mode Sepolia": { - "off_ramp": "0xB26647A23e8b4284375e5C74b77c9557aE709D03", - "commit_store": "0x4b4fEB401d3E613e1D6242E155C83A80BF9ac2C9", + "off_ramp": "0x11E16c71D76E43acbcb496A70966380d905B1E32", + "commit_store": "0xEe19f039FaE3EF0F94971f0B7B187223D952ac13", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Optimism Sepolia": { - "off_ramp": "0x86a3910908eCaAA31Fcd9F0fC8841D8E98f1511d", - "commit_store": "0xE99a87C9b5ed4D2b6060195DEea5106ffF655736", + "off_ramp": "0x8718d1cc138421Dbc1B489CB7884FF68DE7ad867", + "commit_store": "0x3291D453c880E5b59EEd04E600c85268Cd378b7f", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0x189F61D9B886Dd2975D5Abc893c8Cf5f5effda71", - "commit_store": "0xEE7e27346DCD1e711348D0F7f7ECB53a9a3a08a7", + "off_ramp": "0x0ecA23Ef70B828fEDd0A84d2692cB0527B52396A", + "commit_store": "0xA7F84Ec616F8e9Fa593339944E76bda90A9737fE", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -329,26 +323,29 @@ Data = """ "Blast Sepolia": { "is_native_fee_token": true, "fee_token": "0x4200000000000000000000000000000000000023", - "bridge_tokens": [ - "0x8D122C3e8ce9C8B62b87d3551bDfD8C259Bb0771" - ], - "bridge_tokens_pools": [ - "0xFb04129aD1EEDB741CC705ebC1978a7aB63e51f6" - ], "arm": "0x09c1Ed4b112Fb33e594F2aACfEF407e2F14d7F9b", "router": "0xfb2f2A207dC428da81fbAFfDDe121761f8Be1194", "price_registry": "0xc8acE9dF450FaD007755C6C9AB4f0e9c8626E29C", "wrapped_native": "0x4200000000000000000000000000000000000023", "src_contracts": { + "BSC Testnet": { + "on_ramp": "0x6eA6f63b689b5597A0C06a5Eb8DcDFD86383857A", + "deployed_at": 0 + }, "Sepolia Testnet": { - "on_ramp": "0x85Ef19FC4C63c70744995DC38CAAEC185E0c619f", + "on_ramp": "0x154aDEF773a848da8229D81De73a7b0844400ebd", "deployed_at": 0 } }, "dest_contracts": { + "BSC Testnet": { + "off_ramp": "0xd9dE4aCD27E814bfe70CA33d2A4d079e740626Bd", + "commit_store": "0xe8fF7e22c54f76F453d6072A9d3a12B1D9AbA137", + "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" + }, "Sepolia Testnet": { - "off_ramp": "0x92cD24C278D34C726f377703E50875d8f9535dC2", - "commit_store": "0xcE1b4D50CeD56850182Bd58Ace91171cB249B873", + "off_ramp": "0x46DD4e3e2b8a18409646F1C15bf3799a481e67f6", + "commit_store": "0x8250f9E992dda66791dd8b5d356B867ae53382cF", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -356,26 +353,20 @@ Data = """ "Celo Alfajores": { "is_native_fee_token": true, "fee_token": "0x99604d0e2EfE7ABFb58BdE565b5330Bb46Ab3Dca", - "bridge_tokens": [ - "0x7e503dd1dAF90117A1b79953321043d9E6815C72" - ], - "bridge_tokens_pools": [ - "0xC6683ac4a0F62803Bec89a5355B36495ddF2C38b" - ], "arm": "0xEbe35aA4F5e707485484c992AF2069a457b9bBB1", "router": "0xb00E95b773528E2Ea724DB06B75113F239D15Dca", "price_registry": "0x8F048206D11B2c69b8963E2EBd5968D141e022f4", "wrapped_native": "0x99604d0e2EfE7ABFb58BdE565b5330Bb46Ab3Dca", "src_contracts": { "Sepolia Testnet": { - "on_ramp": "0x16a020c4bbdE363FaB8481262D30516AdbcfcFc8", + "on_ramp": "0x68A4f57A499563192C606a898BAf503A43fcDB4D", "deployed_at": 0 } }, "dest_contracts": { "Sepolia Testnet": { - "off_ramp": "0xa1b97F92D806BA040daf419AFC2765DC723683a4", - "commit_store": "0xcd92C0599Ac515e7588865cC45Eee21A74816aFc", + "off_ramp": "0xF6dB68333D14f6a0c1123cc420ea60980aEDA0Eb", + "commit_store": "0x8f9B63c40891CdF7d1C795625d4260a29bE2bBa0", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -383,80 +374,74 @@ Data = """ "Gnosis Chiado": { "is_native_fee_token": true, "fee_token": "0x18c8a7ec7897177E4529065a7E7B0878358B3BfF", - "bridge_tokens": [ - "0xA189971a2c5AcA0DFC5Ee7a2C44a2Ae27b3CF389" - ], - "bridge_tokens_pools": [ - "0xF9a21B587111e7E8745Fb8b13750014f19DB0014" - ], "arm": "0xfE4fB161D870D0F672Ed9C5A898569603f77983F", "router": "0x19b1bac554111517831ACadc0FD119D23Bb14391", "price_registry": "0x2F4ACd1f8986c6B1788159C4c9a5fC3fceCCE363", "wrapped_native": "0x18c8a7ec7897177E4529065a7E7B0878358B3BfF", "src_contracts": { "Arbitrum Sepolia": { - "on_ramp": "0x473b49fb592B54a4BfCD55d40E048431982879C9", + "on_ramp": "0x94967Ea06C6543Aaba5B90C52B655003ef82e521", "deployed_at": 0 }, "Avalanche Fuji": { - "on_ramp": "0x610F76A35E17DA4542518D85FfEa12645eF111Fc", + "on_ramp": "0x4f3576585e7fCCE5Fc502Bcf3CAdaD22E1194834", "deployed_at": 0 }, "BSC Testnet": { - "on_ramp": "0xE48E6AA1fc7D0411acEA95F8C6CaD972A37721D4", + "on_ramp": "0xB2642B54580140C375c9024e273C575a5f53d02d", "deployed_at": 0 }, "Base Sepolia": { - "on_ramp": "0x41b4A51cAfb699D9504E89d19D71F92E886028a8", + "on_ramp": "0x0E9504907be794620229C196F82CB062A66B7480", "deployed_at": 0 }, "Optimism Sepolia": { - "on_ramp": "0xAae733212981e06D9C978Eb5148F8af03F54b6EF", + "on_ramp": "0xeb86B5b6f5C66eCb58e4Cf98E607b238126505DC", "deployed_at": 0 }, "Polygon Amoy": { - "on_ramp": "0x01800fCDd892e37f7829937271840A6F041bE62E", + "on_ramp": "0xd86F5DF82A2500137Ddeef963028d60E3b5A354D", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0x4ac7FBEc2A7298AbDf0E0F4fDC45015836C4bAFe", + "on_ramp": "0x03691D63C687D09368360e957AFB2F7B4d1651d4", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Sepolia": { - "off_ramp": "0x9aA82DBB53bf02096B771D40e9432A323a78fB26", - "commit_store": "0x5CdbA91aBC0cD81FC56bc10Ad1835C9E5fB38e5F", + "off_ramp": "0x3633Cce99186217d4C7ed64FD455d218b8Cd5D4c", + "commit_store": "0x6e096286548451828c97F1B3E49C402a4934F39a", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Avalanche Fuji": { - "off_ramp": "0x3e33290B90fD0FF30a3FA138934DF028E4eCA348", - "commit_store": "0xCFe3556Aa42d40be09BD23aa80448a19443BE5B1", + "off_ramp": "0x5E4DB2A3c965B9B2A850a75697Bb6a00b4e35ac5", + "commit_store": "0x2489c5a802fE63943f7E3185A0362327B55DDF67", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "BSC Testnet": { - "off_ramp": "0xbc4AD54e91b213D4279af92c0C5518c0b96cf62D", - "commit_store": "0xff84e8Dd4Fd17eaBb23b6AeA6e1981830e54389C", + "off_ramp": "0x2BA72Ba392C08750328635E36757A2c29a9165CA", + "commit_store": "0x08ebd7Cf4ABDC819c74cB45CbA4e291728538D7C", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Base Sepolia": { - "off_ramp": "0x4117953A5ceeF12f5B8C1E973b470ab83a8CebA6", - "commit_store": "0x94ad41296186E81f31e1ed0B1BcF5fa9e1721C27", + "off_ramp": "0x269D28B25Ee081ae5340e2BFE99850E92F1cd522", + "commit_store": "0x8dC9329BD221C89c4989d98c38Ff2Cc3dF92d14b", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Optimism Sepolia": { - "off_ramp": "0x33d2898F8fb7714FD1661791766f40754982a343", - "commit_store": "0x55d6Df194472f02CD481e506A277c4A29D0D1bCc", + "off_ramp": "0xd93B571ae9CaF43d70b2b53fFD55e035Db641e31", + "commit_store": "0x42C1093b9DdE8d0CD58859C610dc239B66bE26de", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Polygon Amoy": { - "off_ramp": "0x450543b1d85ca79885851D7b74dc982981b78229", - "commit_store": "0x23B79d940A769FE31b4C867A8BAE80117f24Ca81", + "off_ramp": "0x87F9b8382611ACD01d5696a1f5b05B888e55B0Cc", + "commit_store": "0x29AC46227908d31A9BdDe82c0A4a6c52D802f145", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0xbf9036529123DE264bFA0FC7362fE25B650D4B16", - "commit_store": "0x5f7F1abD5c5EdaF2636D58B980e85355AF0Ef80d", + "off_ramp": "0x9aa734100C425309091dAE18154e0356B82d477a", + "commit_store": "0x7cDd533B82f4c32FAE7f551C37b1490909817C45", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -464,26 +449,20 @@ Data = """ "Kroma Sepolia": { "is_native_fee_token": true, "fee_token": "0x4200000000000000000000000000000000000001", - "bridge_tokens": [ - "0x6AC3e353D1DDda24d5A5416024d6E436b8817A4e" - ], - "bridge_tokens_pools": [ - "0x0eE8add19554C7bb1920A183Ed47b4FAB9Eb7601" - ], "arm": "0x08f9Af992368FAc58C936A2c5eBc9092894CEa9b", "router": "0xA8C0c11bf64AF62CDCA6f93D3769B88BdD7cb93D", "price_registry": "0xa1ed3A3aA29166C9c8448654A8cA6b7916BC8379", "wrapped_native": "0x4200000000000000000000000000000000000001", "src_contracts": { "WeMix Testnet": { - "on_ramp": "0x6ea155Fc77566D9dcE01B8aa5D7968665dc4f0C5", + "on_ramp": "0xa81418c332d3E04338B058Ab39b1baf53029F638", "deployed_at": 0 } }, "dest_contracts": { "WeMix Testnet": { - "off_ramp": "0xB602B6E5Caf08ac0C920EAE585aed100a8cF6f3B", - "commit_store": "0x89D5b13908b9063abCC6791dc724bF7B7c93634C", + "off_ramp": "0x42Dde725C4f05C237a00B582Bb7457e208d3A17C", + "commit_store": "0xb116E9a90534354dA59CF93a87c1E9711c0Aaa2c", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -491,26 +470,29 @@ Data = """ "Metis Sepolia": { "is_native_fee_token": true, "fee_token": "0x5c48e07062aC4E2Cf4b9A768a711Aef18e8fbdA0", - "bridge_tokens": [ - "0x20Aa09AAb761e2E600d65c6929A9fd1E59821D3f" - ], - "bridge_tokens_pools": [ - "0xdE8451E952Eb43350614839cCAA84f7C8701a09C" - ], "arm": "0xf0607A9BDdB5F54dB59ACaA0837aFec2D1c95df6", "router": "0xaCdaBa07ECad81dc634458b98673931DD9d3Bc14", "price_registry": "0x5DCE866b3ae6E0Ed153f0e149D7203A1B266cdF5", "wrapped_native": "0x5c48e07062aC4E2Cf4b9A768a711Aef18e8fbdA0", "src_contracts": { + "Arbitrum Sepolia": { + "on_ramp": "0x2eb69889cc979c0Be120813FcE2f1558efF4ceB5", + "deployed_at": 0 + }, "Sepolia Testnet": { - "on_ramp": "0x2Eff2d1BF5C557d6289D208a7a43608f5E3FeCc2", + "on_ramp": "0xE0dFc15C0CDf607b2088D0B641E00eA0B418124C", "deployed_at": 0 } }, "dest_contracts": { + "Arbitrum Sepolia": { + "off_ramp": "0x839b5dEA3e084790F580E9DfCE8CCfDf49c5835e", + "commit_store": "0xdF38C8aD34C379165f98A75a6894790bB5a16b1D", + "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" + }, "Sepolia Testnet": { - "off_ramp": "0x9Bb7e398ef9Acfe9cA584C39B1E233Cba62BB9f7", - "commit_store": "0x1F4B82cDebaC5e3a0Dd53183D47e51808B4a64cB", + "off_ramp": "0x72130De9A85e9C61151253aFF8801Bb3242A00a9", + "commit_store": "0x8F6D64280C379F680Ff0c3278f340D72a465FAAc", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -518,35 +500,29 @@ Data = """ "Mode Sepolia": { "is_native_fee_token": true, "fee_token": "0x4200000000000000000000000000000000000006", - "bridge_tokens": [ - "0xB9d4e1141E67ECFedC8A8139b5229b7FF2BF16F5" - ], - "bridge_tokens_pools": [ - "0x20bBc874bE3Cd94C3E4689EDD5D89dD1cE8Cb7C4" - ], "arm": "0x9eC8a0AbC75ce08978FAf67958482461bCd93B18", "router": "0xc49ec0eB4beb48B8Da4cceC51AA9A5bD0D0A4c43", "price_registry": "0xa733ce82a84335b2E9D864312225B0F3D5d80600", "wrapped_native": "0x4200000000000000000000000000000000000006", "src_contracts": { "Base Sepolia": { - "on_ramp": "0x73f7E074bd7291706a0C5412f51DB46441B1aDCB", + "on_ramp": "0x48ACE2319f643584B77C21476a6c664D7F13a107", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0xfFdE9E8c34A27BEBeaCcAcB7b3044A0A364455C9", + "on_ramp": "0xb821885731414497d705dc56325f18AA33e612dC", "deployed_at": 0 } }, "dest_contracts": { "Base Sepolia": { - "off_ramp": "0x137a38c6b1Ad20101F93516aB2159Df525309168", - "commit_store": "0x8F43d867969F14619895d71E0A5b89E0bb20bF70", + "off_ramp": "0xC6b69Fa9eeBc55e64eBc68371Fbd41ff73756F17", + "commit_store": "0xaA6691EA9110409a29C2E665174b4b2fe694cE67", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0xcD44cec849B6a8eBd5551D6DFeEcA452257Dfe4d", - "commit_store": "0xbA66f08733E6715D33edDfb5a5947676bb45d0e0", + "off_ramp": "0x35dE2C381a2fF8a26c8ae94145be3A9cA8C83600", + "commit_store": "0xE7e60DAee094416b8ab2083047a893c4c4290c48", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -554,80 +530,74 @@ Data = """ "Optimism Sepolia": { "is_native_fee_token": true, "fee_token": "0x4200000000000000000000000000000000000006", - "bridge_tokens": [ - "0x8aF4204e30565DF93352fE8E1De78925F6664dA7" - ], - "bridge_tokens_pools": [ - "0x3Cc9364260D80F09ccAC1eE6B07366dB598900E6" - ], "arm": "0xF51366F72184E22cF4a7a8362508DB0d3370392d", "router": "0x114A20A10b43D4115e5aeef7345a1A71d2a60C57", "price_registry": "0x782a7Ba95215f2F7c3dD4C153cbB2Ae3Ec2d3215", "wrapped_native": "0x4200000000000000000000000000000000000006", "src_contracts": { "Arbitrum Sepolia": { - "on_ramp": "0x1a86b29364D1B3fA3386329A361aA98A104b2742", + "on_ramp": "0x6B36c9CD74E760088817a047C3460dEdFfe9a11A", "deployed_at": 0 }, "Avalanche Fuji": { - "on_ramp": "0x6b38CC6Fa938D5AB09Bdf0CFe580E226fDD793cE", + "on_ramp": "0x91a144F570ABA7FB7079Fb187A267390E0cc7367", "deployed_at": 0 }, "Base Sepolia": { - "on_ramp": "0xe284D2315a28c4d62C419e8474dC457b219DB969", + "on_ramp": "0x6D22953cdEf8B0C9F0976Cfa52c33B198fEc5881", "deployed_at": 0 }, "Gnosis Chiado": { - "on_ramp": "0x835a5b8e6CA17c2bB5A336c93a4E22478E6F1C8A", + "on_ramp": "0xec7D9A84A6d4556056975BE50Cdc97bAa9313632", "deployed_at": 0 }, "Polygon Amoy": { - "on_ramp": "0x2Cf26fb01E9ccDb831414B766287c0A9e4551089", + "on_ramp": "0x9E09C2A7D6B9F88c62f0E2Af4cd62dF3F4c326F1", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0xC8b93b46BF682c39B3F65Aa1c135bC8A95A5E43a", + "on_ramp": "0x54b32C2aCb4451c6cF66bcbd856d8A7Cc2263531", "deployed_at": 0 }, "WeMix Testnet": { - "on_ramp": "0xc7E53f6aB982af7A7C3e470c8cCa283d3399BDAd", + "on_ramp": "0xB9Ef21C04d8340b223e9C1d7a09f332609c70300", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Sepolia": { - "off_ramp": "0xDc2c7A3d8068C6F09F0F3648d24C84e372F6014d", - "commit_store": "0xb1aFb5cbE3c29b5Db71F21442BA9EfD450BC23C3", + "off_ramp": "0xF35e2d1457749374453e44B06268aD3f78b133b3", + "commit_store": "0x4bd755d86E25dD4093CAa5639CfDab81571259CA", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Avalanche Fuji": { - "off_ramp": "0x1F350718e015EB20E5065C09F4A7a3f66888aEeD", - "commit_store": "0x98650A8EB59f75D93563aB34FcF603b1A30e4CBF", + "off_ramp": "0xCb2266c2118b1f30D15CBeB3a885531ABaA1b556", + "commit_store": "0x5Ded92E2CF71a8fF7644a67850F061c38B31BfB4", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Base Sepolia": { - "off_ramp": "0x0a750ca77369e03613d7640548F4b2b1c695c3Bb", - "commit_store": "0x8fEBC74C26129C8d7E60288C6dCCc75eb494aA3C", + "off_ramp": "0x960c62A491C30d0a60fD74a59d35B9C02697AdaA", + "commit_store": "0x06963745B3839B998288D1a46a46Ec25991A3D5E", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Gnosis Chiado": { - "off_ramp": "0xCE2CE7F940B7c839384e5D7e079A6aE80e8AD6dB", - "commit_store": "0x1b9D78Ec1CEEC439F0b7eA6C428A1a607D9FA7e4", + "off_ramp": "0x7d6721c2E85560F0A233255D3d332AcF6f850d96", + "commit_store": "0xaC00661cAB5161d9B4746DFb7A028d97981aB2c5", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Polygon Amoy": { - "off_ramp": "0xD667b5706592D0b040C78fEe5EE17D243b7dCB41", - "commit_store": "0x96101BA5250EE9295c193693C1e08A55bC593664", + "off_ramp": "0x4cEeFa55AF23dFD27Cf926e8eFB1D1bCcD24526E", + "commit_store": "0xaD3943BdECbf4ae7d6E51aB0FD06bbC604bB7b95", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0x260AF9b83e0d2Bb6C9015fC9f0BfF8858A0CCE68", - "commit_store": "0x7a0bB92Bc8663abe6296d0162A9b41a2Cb2E0358", + "off_ramp": "0x2aF9B10A5972D0c36f4d8F85773052c104E319B2", + "commit_store": "0x82FCF55b9e9bAb3066c2863F12a02bBc2Ba33F2F", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "WeMix Testnet": { - "off_ramp": "0x9C08B7712af0344188aa5087D9e6aD0f47191037", - "commit_store": "0x4BE6DB0B884169a6A207fe5cad01eB4C025a13dB", + "off_ramp": "0x0FA15Bc42D4999d964CBf0161489Bd392DEE834e", + "commit_store": "0x37760F99a5b91884C9D89a06408f532aEbb0e674", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -635,71 +605,65 @@ Data = """ "Polygon Amoy": { "is_native_fee_token": true, "fee_token": "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9", - "bridge_tokens": [ - "0xcab0EF91Bee323d1A617c0a027eE753aFd6997E4" - ], - "bridge_tokens_pools": [ - "0x3064fB3EA546EE09A63AB3bD93E83D8B8525C636" - ], "arm": "0x8b88C39D2875157aB4CE4AD3814409523d539ee1", "router": "0x9C32fCB86BF0f4a1A8921a9Fe46de3198bb884B2", "price_registry": "0xfb2f2A207dC428da81fbAFfDDe121761f8Be1194", "wrapped_native": "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9", "src_contracts": { "Avalanche Fuji": { - "on_ramp": "0x8Fb98b3837578aceEA32b454f3221FE18D7Ce903", + "on_ramp": "0xad6A94CFB51e7DE30FD21F417E4cBf70D3AdaD30", "deployed_at": 0 }, "BSC Testnet": { - "on_ramp": "0xC6683ac4a0F62803Bec89a5355B36495ddF2C38b", + "on_ramp": "0x28EC0a9C90360F55C2a9DaD5901b074C257904ca", "deployed_at": 0 }, "Gnosis Chiado": { - "on_ramp": "0x2331F6D614C9Fd613Ff59a1aB727f1EDf6c37A68", + "on_ramp": "0x9DF611536f124278Ce968c476BDb10A66E54ecfE", "deployed_at": 0 }, "Optimism Sepolia": { - "on_ramp": "0xA52cDAeb43803A80B3c0C2296f5cFe57e695BE11", + "on_ramp": "0x600f00aef9b8ED8EDBd7284B5F04a1932c3408aF", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0x35347A2fC1f2a4c5Eae03339040d0b83b09e6FDA", + "on_ramp": "0x719Aef2C63376AdeCD62D2b59D54682aFBde914a", "deployed_at": 0 }, "WeMix Testnet": { - "on_ramp": "0x26546096F64B5eF9A1DcDAe70Df6F4f8c2E10C61", + "on_ramp": "0x7D6c93E49E46cc983a677c283EAb27CbbC94e3C4", "deployed_at": 0 } }, "dest_contracts": { "Avalanche Fuji": { - "off_ramp": "0xa733ce82a84335b2E9D864312225B0F3D5d80600", - "commit_store": "0x09B0F93fC2111aE439e853884173AC5b2F809885", + "off_ramp": "0xAc56Df7F5fbde0DeeB1C0d397A150EDD5EE68625", + "commit_store": "0x8AF56D1c76B8c8CeE451a0a654D130e4050B993e", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "BSC Testnet": { - "off_ramp": "0x948dfaa4842fc23e0e362Fe8D4396AaE4E6DF7EA", - "commit_store": "0x7F4e739D40E58BBd59dAD388171d18e37B26326f", + "off_ramp": "0x40Ba47ea59D80DDd35E3a997AA520FBa0553dddc", + "commit_store": "0x8afe532517b39bA109d1A768E1Ad8b5C6485abF5", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Gnosis Chiado": { - "off_ramp": "0x17c542a28e08AEF5697251601C7b2B621d153D42", - "commit_store": "0x811250c20fAB9a1b7ca245453aC214ba637fBEB5", + "off_ramp": "0x7B968B2aDFd31765dAAD80d66c83F9D7006BFFd5", + "commit_store": "0xBc70551B5624BaF8cdCB84136198561C9cf5C176", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Optimism Sepolia": { - "off_ramp": "0xfFdE9E8c34A27BEBeaCcAcB7b3044A0A364455C9", - "commit_store": "0x74ED442ad211050e9C05Dc9A267E037E3d74A03B", + "off_ramp": "0xAA755Ef570986feEb6522377077e549e3013843E", + "commit_store": "0x5C7827EcE6a51AdaC36ef71aC01706deb1C7130d", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0xFb04129aD1EEDB741CC705ebC1978a7aB63e51f6", - "commit_store": "0x63f875240149d29136053C954Ca164a9BfA81F77", + "off_ramp": "0x7Ad494C173f5845c6B4028a06cDcC6d3108bc960", + "commit_store": "0x104A1c8b05D37fE732094595Fe696AFc7EAB8668", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "WeMix Testnet": { - "off_ramp": "0xdE8451E952Eb43350614839cCAA84f7C8701a09C", - "commit_store": "0xaCdaBa07ECad81dc634458b98673931DD9d3Bc14", + "off_ramp": "0xa85481273f8C112e96ED7476202F06D6131cf069", + "commit_store": "0x9FdF1D555e37dB09B0d151FEa53c134C88C4DeFd", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -707,134 +671,128 @@ Data = """ "Sepolia Testnet": { "is_native_fee_token": true, "fee_token": "0x097D90c9d3E0B50Ca60e1ae45F6A81010f9FB534", - "bridge_tokens": [ - "0xFd57b4ddBf88a4e07fF4e34C487b99af2Fe82a05" - ], - "bridge_tokens_pools": [ - "0x38d1ef9619Cd40cf5482C045660Ae7C82Ada062c" - ], "arm": "0x27Da8735d8d1402cEc072C234759fbbB4dABBC4A", "router": "0x0BF3dE8c5D3e8A2B34D2BEeB17ABfCeBaf363A59", "price_registry": "0x9EF7D57a4ea30b9e37794E55b0C75F2A70275dCc", "wrapped_native": "0x097D90c9d3E0B50Ca60e1ae45F6A81010f9FB534", "src_contracts": { "Arbitrum Sepolia": { - "on_ramp": "0xe4Dd3B16E09c016402585a8aDFdB4A18f772a07e", + "on_ramp": "0xBc09627e58989Ba8F1eDA775e486467d2A00944F", "deployed_at": 0 }, "Avalanche Fuji": { - "on_ramp": "0x0477cA0a35eE05D3f9f424d88bC0977ceCf339D4", + "on_ramp": "0x12492154714fBD28F28219f6fc4315d19de1025B", "deployed_at": 0 }, "BSC Testnet": { - "on_ramp": "0xD990f8aFA5BCB02f95eEd88ecB7C68f5998bD618", + "on_ramp": "0x7a75b3818412fe0028590feE8270ba9E3fd01DBe", "deployed_at": 0 }, "Base Sepolia": { - "on_ramp": "0x2B70a05320cB069e0fB55084D402343F832556E7", + "on_ramp": "0x8F35B097022135E0F46831f798a240Cc8c4b0B01", "deployed_at": 0 }, "Blast Sepolia": { - "on_ramp": "0xDB75E9D9ca7577CcBd7232741be954cf26194a66", + "on_ramp": "0x4ADA60556dA05FcF53a79359e37a3E13FebA22Bf", "deployed_at": 0 }, "Celo Alfajores": { - "on_ramp": "0x3C86d16F52C10B2ff6696a0e1b8E0BcfCC085948", + "on_ramp": "0x1163D1F7D75eEb1C4f4c6912d3cF9642027aFD30", "deployed_at": 0 }, "Gnosis Chiado": { - "on_ramp": "0x3E842E3A79A00AFdd03B52390B1caC6306Ea257E", + "on_ramp": "0x831A7DbE6af8601427A0ADa89b642d4b59007eED", "deployed_at": 0 }, "Metis Sepolia": { - "on_ramp": "0x1C4640914cd57c5f02a68048A0fbb0E12d904223", + "on_ramp": "0xabB5A4f99DFEb4a3912e8Acc0660A008c76dA8c3", "deployed_at": 0 }, "Mode Sepolia": { - "on_ramp": "0xc630fbD4D0F6AEB00aD0793FB827b54fBB78e981", + "on_ramp": "0x2Eb0842925fb7aA6045e951e98e8b4b3aFFaBB54", "deployed_at": 0 }, "Optimism Sepolia": { - "on_ramp": "0x69CaB5A0a08a12BaFD8f5B195989D709E396Ed4d", + "on_ramp": "0xACDfd7a98d853FA3914047Cd46e7f5D53BBC9FbB", "deployed_at": 0 }, "Polygon Amoy": { - "on_ramp": "0x9f656e0361Fb5Df2ac446102c8aB31855B591692", + "on_ramp": "0xf9765c80F6448e6d4d02BeF4a6b4152131A2F513", "deployed_at": 0 }, "WeMix Testnet": { - "on_ramp": "0xedFc22336Eb0B9B11Ff37C07777db27BCcDe3C65", + "on_ramp": "0xd72c3c132B76F5D232C37dF3bF8f04392D552e0F", "deployed_at": 0 }, "ZKSync Sepolia": { - "on_ramp": "0x1Acb3A885feA37bdA30AB99b99327b14391f500F", + "on_ramp": "0xA2865E4f36760f5fa5c8F958336120f2DF0d974b", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Sepolia": { - "off_ramp": "0xF18896AB20a09A29e64fdEbA99FDb8EC328f43b1", - "commit_store": "0x93Ff9Dd39Dc01eac1fc4d2c9211D95Ee458CAB94", + "off_ramp": "0xD2f5edfD4561d6E7599F6c6888Bd353cAFd0c55E", + "commit_store": "0x240420BC6bCDc067e668c7492D69fe06B3CF80cE", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Avalanche Fuji": { - "off_ramp": "0x000b26f604eAadC3D874a4404bde6D64a97d95ca", - "commit_store": "0x2dD9273F8208B8393350508131270A6574A69784", + "off_ramp": "0x1DEBa99dC8e2A77832461BD386d83D9FCb133137", + "commit_store": "0x139E06b6dBB1a0C41A1686C091795879c943765A", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "BSC Testnet": { - "off_ramp": "0xdE2d8E126e08d675fCD7fFa5a6CE49925f3Dc692", - "commit_store": "0x0050ac355a82caB31194507f94174297bf0655A7", + "off_ramp": "0x04305BD9D9CA6730517f79c3D9c6828BC2D25Ecb", + "commit_store": "0x32edD59840CD9e474A280cf1707439F2Bd5872d4", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Base Sepolia": { - "off_ramp": "0x31c0B81832B333419f0DfD36A69F502cF9094aed", - "commit_store": "0xDFcde9d698a2B32DB2537DC9B752Cadd1D846a52", + "off_ramp": "0x662738DC7DE4f7eC63d9f73Cdf9BeA5A58DdcC15", + "commit_store": "0x1e46bAC486Dd878cD57B62845530A52343e39693", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Blast Sepolia": { - "off_ramp": "0x4e897e5cF3aC307F0541B2151A88bCD781c153a3", - "commit_store": "0xB656652841F347178e193951C4663652aCe36B74", + "off_ramp": "0x049A424cF894709f044bc70177F8F6b792adc3F6", + "commit_store": "0x496fE96E440Fc683478a08Df92A1c5E23E412b1C", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Celo Alfajores": { - "off_ramp": "0xB435E0f73c18C5a12C324CA1d02F81F2C3e6e761", - "commit_store": "0xbc5d74957F171e75F92c8F0E1C317A25a56a416D", + "off_ramp": "0x4F146d34Be5E273e576ef158Bd7070eC22708D20", + "commit_store": "0xEeB665281c7ab51d25423898f730Ab078c69dd42", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Gnosis Chiado": { - "off_ramp": "0x7db0115A0b3AAb01d30bf81123c5DD7B0C41Add5", - "commit_store": "0x6640723Ea801178c4383FA016b9781e7ef1016EF", + "off_ramp": "0xB424365EEEEA58A36C7EC858f926f4e8275dDEb3", + "commit_store": "0xE95c2135e3330E953BB49068d32Fcba368Acd456", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Metis Sepolia": { - "off_ramp": "0x4DB693A93E9d5196ECD42EC56CDEAe99dFC652ED", - "commit_store": "0xBfACd78F1412B6f93Ac23409bf456aFec1ABd845", + "off_ramp": "0x46DE6201c258f5948135cd0262f91e48Cb8e3828", + "commit_store": "0x3A27Fd059A4eF0e96B0643283A44a56A8d6CF34A", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Mode Sepolia": { - "off_ramp": "0xbEfd8D65F6643De54F0b1268A3bf4618ff85dcB4", - "commit_store": "0x0C161D3470b45Cc677661654C30ce4AdE6aCD288", + "off_ramp": "0x052E52fdd48719A6084366eA184FC44cb8C25DC2", + "commit_store": "0xBBb9baA314eB023E3F9291Aaf4107B6708341B50", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Optimism Sepolia": { - "off_ramp": "0xD50590D4438411EDe47029b0FD7901A7145E5Df6", - "commit_store": "0xe85EEE9Fd434A7b8a586Ee086E828abF41839479", + "off_ramp": "0xbfa6f6AAE31acB3A285e80026d6475C1a50d1d0F", + "commit_store": "0xB5FbA97Dc61ec68771a92a15360d9C32c9d054E7", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Polygon Amoy": { - "off_ramp": "0x5032cbC0C4aEeD25bb6E45D8B3fAF05DB0688C5d", - "commit_store": "0xe6201C9996Cc7B6E828E10CbE937E693d577D318", + "off_ramp": "0xC3e550B6aaFA5539df8bbCc5B0991e587f438e75", + "commit_store": "0xd57866D97ca26dfaE34088a3EeE4657BAFaac5f9", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "WeMix Testnet": { - "off_ramp": "0x46b639a3C1a4CBfD326b94a2dB7415c27157282f", - "commit_store": "0x7b74554678816b045c1e7409327E086bD436aa46", + "off_ramp": "0x445F41C6aa7e910021786e860d7cfe3E7fcC6640", + "commit_store": "0x307dDE3c696E399b5837456FbCe03b1Ad76D46E3", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "ZKSync Sepolia": { - "off_ramp": "0xBaABd4166C892a1081a26535875A8fA3f22937b2", - "commit_store": "0xfda2e83F4D3f42B7629134ecD6E4b29FB8A7A07B", + "off_ramp": "0x9f5dC467A5c97068A1c2987486B8b768275627eD", + "commit_store": "0x6e4601DA99a046e4bde60d051568E3E1F35E3097", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -842,80 +800,74 @@ Data = """ "WeMix Testnet": { "is_native_fee_token": true, "fee_token": "0xbE3686643c05f00eC46e73da594c78098F7a9Ae7", - "bridge_tokens": [ - "0xF4E4057FbBc86915F4b2d63EEFFe641C03294ffc" - ], - "bridge_tokens_pools": [ - "0x82A92B2863F93Be70D20660088Ec060720bA2fdb" - ], "arm": "0x8f6cb63eD5e379722580DFF0A051C140C64F9619", "router": "0xA8C0c11bf64AF62CDCA6f93D3769B88BdD7cb93D", "price_registry": "0x89D17571DB7C9540eeB36760E3c749C8fb984569", "wrapped_native": "0xbE3686643c05f00eC46e73da594c78098F7a9Ae7", "src_contracts": { "Arbitrum Sepolia": { - "on_ramp": "0xA9DE3F7A617D67bC50c56baaCb9E0373C15EbfC6", + "on_ramp": "0xa5Be8C619F61505548992D9820c5c485b030C7B0", "deployed_at": 0 }, "Avalanche Fuji": { - "on_ramp": "0xC4aC84da458ba8e40210D2dF94C76E9a41f70069", + "on_ramp": "0x7802B6804bbE7486229ac6D3519f0057c50b40a9", "deployed_at": 0 }, "BSC Testnet": { - "on_ramp": "0x5AD6eed6Be0ffaDCA4105050CF0E584D87E0c2F1", + "on_ramp": "0xd25B8c70CB43022Bdc3aC417E2Cf5159294d95A1", "deployed_at": 0 }, "Kroma Sepolia": { - "on_ramp": "0x428C4dc89b6Bf908B82d77C9CBceA786ea8cc7D0", + "on_ramp": "0x1De2Ca07eEee7F524Fe5edA6C8FFFb79F67b05E9", "deployed_at": 0 }, "Optimism Sepolia": { - "on_ramp": "0x1961a7De751451F410391c251D4D4F98D71B767D", + "on_ramp": "0xB37607C6BD4562F32967dE87D14663D59e3f655d", "deployed_at": 0 }, "Polygon Amoy": { - "on_ramp": "0xd55148e841e76265B484d399eC71b7076ecB1216", + "on_ramp": "0x0c972752F9aC3255cE45b440f9bBC6500676c4e6", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0x4d57C6d8037C65fa66D6231844785a428310a735", + "on_ramp": "0x1CD55c65f85681Dfae47c62e6D93340D25006BbB", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Sepolia": { - "off_ramp": "0xeB1dFaB2464Bf0574D43e764E0c758f92e7ecAFb", - "commit_store": "0xcEaCa2B7890065c485f3E58657358a185Ad33791", + "off_ramp": "0xB5492C8A71130B486fAD1091Db683584767A3957", + "commit_store": "0x1e151ED27E2F48EcFBd5b4374d0fc4869e07c397", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Avalanche Fuji": { - "off_ramp": "0x98e811Df9D2512f1aaf58D534607F583D6c54A4F", - "commit_store": "0x8e538351F6E5B2daF3c90C565C3738bca69a2716", + "off_ramp": "0x60536c757c2BBf72cC68A1933F7e336d03Bb68fe", + "commit_store": "0x2fF725556A04b47eB40BbA11d9F51e8fbbee9F07", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "BSC Testnet": { - "off_ramp": "0xB0e7f0fCcD3c961C473E7c44D939C1cDb4Cec1cB", - "commit_store": "0x4B56D8d53f1A6e0117B09700067De99581aA5542", + "off_ramp": "0xb858077FbE1E55cD7a9092Eb6d5403e068c14EAf", + "commit_store": "0x0EF13C7c95C27A9EA477363a26a09Cff44ba38F9", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Kroma Sepolia": { - "off_ramp": "0xD685D2d224dd6D0Db2D56497db6270D77D9a7966", - "commit_store": "0x7e062D6880779a0347e7742058C1b1Ee4AA0B137", + "off_ramp": "0x78d8154e1216F4791086bFa078Aaf07dcD2bD3C6", + "commit_store": "0xe67AAfbE6025e730Cf47a414BEFf2106FF231dB1", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Optimism Sepolia": { - "off_ramp": "0xA5f97Bc69Bf06e7C37B93265c5457420A92c5F4b", - "commit_store": "0xd48b9213583074f518D8f4336FDf35370D450132", + "off_ramp": "0x995Fc17FC12b67f75D3cBf3bC71BD9af65671E78", + "commit_store": "0xD0825e3D8e61b67a06A93426749d38bCF73Ddb02", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Polygon Amoy": { - "off_ramp": "0x6c8f5999B06FDE17B11E4e3C1062b761766F960f", - "commit_store": "0x957c3c2056192e58A8485eF31165fC490d474239", + "off_ramp": "0xd7b5B4F8FF7a87cC92f7B3058365862859d9E057", + "commit_store": "0xa8f2bb4e831caA5E2794AaD014030E378208d4Bc", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0x8AB103843ED9D28D2C5DAf5FdB9c3e1CE2B6c876", - "commit_store": "0x7d5297c5506ee2A7Ef121Da9bE02b6a6AD30b392", + "off_ramp": "0xa7E2F97Be7798327A49CACD022f33c0E7EfD4897", + "commit_store": "0x6fe69eE4eC9FD768193a40129A3Ba3dF140b2208", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -929,14 +881,14 @@ Data = """ "wrapped_native": "0x4317b2eCD41851173175005783322D29E9bAee9E", "src_contracts": { "Sepolia Testnet": { - "on_ramp": "0x79a9a5e9e318e8e109776569574814bbf935125a", + "on_ramp": "0xC38536521fde8556351aB7C4D3ea23b64AFbBbab", "deployed_at": 0 } }, "dest_contracts": { "Sepolia Testnet": { - "off_ramp": "0x18FF69051479796175852578725Fc74F58E963F8", - "commit_store": "0xF694b4FD7889480dca3CD41244e8e3395a9EFBa0", + "off_ramp": "0x19Ea9A42cd3682928aF19990dDb3904250D00a1D", + "commit_store": "0x20BF9037927bFadaF028D43ae07d1afccfB8fa85", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -1006,7 +958,7 @@ NetworkPairs = [ 'BASE_SEPOLIA,OPTIMISM_SEPOLIA', 'BASE_SEPOLIA,GNOSIS_CHIADO', - 'KROMA_SEPOLIA,WEMIX_TESTNET', +# 'KROMA_SEPOLIA,WEMIX_TESTNET', 'OPTIMISM_SEPOLIA,POLYGON_AMOY', 'OPTIMISM_SEPOLIA,WEMIX_TESTNET', diff --git a/integration-tests/ccip-tests/testconfig/tomls/prod-testnet/smoke-release-testing_token_transfer_native.toml b/integration-tests/ccip-tests/testconfig/tomls/prod-testnet/smoke-release-testing_token_transfer_native.toml index b1549377fda..17372a68681 100644 --- a/integration-tests/ccip-tests/testconfig/tomls/prod-testnet/smoke-release-testing_token_transfer_native.toml +++ b/integration-tests/ccip-tests/testconfig/tomls/prod-testnet/smoke-release-testing_token_transfer_native.toml @@ -26,59 +26,68 @@ Data = """ "wrapped_native": "0xE591bf0A0CF924A0674d7792db046B23CEbF5f34", "src_contracts": { "Avalanche Fuji": { - "on_ramp": "0x1Cb56374296ED19E86F68fA437ee679FD7798DaA", + "on_ramp": "0x20C8c9F13C6AA402F2545AD15fB7a9CdE9108618", "deployed_at": 0 }, "Base Sepolia": { - "on_ramp": "0x7854E73C73e7F9bb5b0D5B4861E997f4C6E8dcC6", + "on_ramp": "0xF1623862e4c9f9Fba1Ac0181C4fF53B4f958F065", "deployed_at": 0 }, "Gnosis Chiado": { - "on_ramp": "0x973CbE752258D32AE82b60CD1CB656Eebb588dF0", + "on_ramp": "0xEfe02eB139D2A82e38184d28E3b65bb176F26ebD", + "deployed_at": 0 + }, + "Metis Sepolia": { + "on_ramp": "0x46a79a6a4B07FD3FC14ea8299A99FE29576776E2", "deployed_at": 0 }, "Optimism Sepolia": { - "on_ramp": "0x701Fe16916dd21EFE2f535CA59611D818B017877", + "on_ramp": "0x0B0c08Bb2fA2EbDe25817009ee39eA1ad9bCaC58", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0x4205E1Ca0202A248A5D42F5975A8FE56F3E302e9", + "on_ramp": "0x64d78F20aD987c7D52FdCB8FB0777bD00de53210", "deployed_at": 0 }, "WeMix Testnet": { - "on_ramp": "0xBD4106fBE4699FE212A34Cc21b10BFf22b02d959", + "on_ramp": "0x2F3Daf77A663603826c7750E956b6555DE6f8250", "deployed_at": 0 } }, "dest_contracts": { "Avalanche Fuji": { - "off_ramp": "0xcab0EF91Bee323d1A617c0a027eE753aFd6997E4", - "commit_store": "0x0d90b9b96cBFa0D01635ce12982ccE1b70827c7a", + "off_ramp": "0x7245a5947E2F32B66aF74F4dAF91718ea19afaDf", + "commit_store": "0x490AC77BbB26f4FFf876Ded07bCAE6DBe685be98", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Base Sepolia": { - "off_ramp": "0xc1982985720B959E66c19b64F783361Eb9B60F26", - "commit_store": "0x28F66bB336f6db713d6ad2a3bd1B7a531282A159", + "off_ramp": "0xF2aB55Ed448A6fAD75013900568B6a927f52e5e0", + "commit_store": "0x833E5995A7422120f445f9B8dD1b9BD1037c68E5", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Gnosis Chiado": { - "off_ramp": "0x935C26F9a9122E5F9a27f2d3803e74c75B94f5a3", - "commit_store": "0xEdb963Ec5c2E5AbdFdCF137eF44A445a7fa4787A", + "off_ramp": "0xc1Cb31493fB2386aDC1Ea01F935F2bd8a8dCA388", + "commit_store": "0xe21896657A65c8959F16E1c3Ee5713E85d9EA020", + "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" + }, + "Metis Sepolia": { + "off_ramp": "0xc47143147Fd62A09618C695c7C03714aCe8db1Cf", + "commit_store": "0x2F42e7B22eE5885158916624Ff00608f4C82313D", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Optimism Sepolia": { - "off_ramp": "0xfD404A89e1d195F0c65be1A9042C77745197659e", - "commit_store": "0x84B7B012c95f8A152B44Ab3e952f2dEE424fA8e1", + "off_ramp": "0x4a7E91EF68758aaC66AeD656267bbCD0f9b6c019", + "commit_store": "0xb0A09D6A15FF7A0142DF3F62b2C4D1e11D763Ed0", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0x1c71f141b4630EBE52d6aF4894812960abE207eB", - "commit_store": "0xaB0c8Ba51E7Fa3E5693a4Fbb39473520FD85d173", + "off_ramp": "0xBed6e9131916d724418C8a6FE810F727302a5c00", + "commit_store": "0xdDb61B6bDa1B46d88f556440fABFe219F6da4F3a", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "WeMix Testnet": { - "off_ramp": "0x262e16C8D42aa07bE13e58F81e7D9F62F6DE2830", - "commit_store": "0xc132eFAf929299E5ee704Fa6D9796CFa23Bb8b2C", + "off_ramp": "0x11d486E92d291704D1E25cDbAeee687237247826", + "commit_store": "0xece9353095aC79Db9DD5bf2022690Fa6BffeBCAc", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -98,77 +107,77 @@ Data = """ "wrapped_native": "0xd00ae08403B9bbb9124bB305C09058E32C39A48c", "src_contracts": { "Arbitrum Sepolia": { - "on_ramp": "0x8bB16BEDbFd62D1f905ACe8DBBF2954c8EEB4f66", + "on_ramp": "0xa9946BA30DAeC98745755e4410d6e8E894Edc53B", "deployed_at": 0 }, "BSC Testnet": { - "on_ramp": "0xF25ECF1Aad9B2E43EDc2960cF66f325783245535", + "on_ramp": "0x906BC7D10947A94ba0252e8C2E34868A466c03ED", "deployed_at": 0 }, "Base Sepolia": { - "on_ramp": "0x1A674645f3EB4147543FCA7d40C5719cbd997362", + "on_ramp": "0x0aEc1AC9F6D0c21332d7a66dDF1Fbcb32cF3B0B3", "deployed_at": 0 }, "Gnosis Chiado": { - "on_ramp": "0x1532e5b204ee2b2244170c78E743CB9c168F4DF9", + "on_ramp": "0x3dda45E731EC1db18B95651d1AF1868aa878468D", "deployed_at": 0 }, "Optimism Sepolia": { - "on_ramp": "0xC334DE5b020e056d0fE766dE46e8d9f306Ffa1E2", + "on_ramp": "0x2a9EFdc9F93D9b822129038EFCa4B63Adf3f7FB5", "deployed_at": 0 }, "Polygon Amoy": { - "on_ramp": "0x610F76A35E17DA4542518D85FfEa12645eF111Fc", + "on_ramp": "0xA82b9ACAcFA6FaB1FD721e7a748A30E3001351F9", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0x5724B4Cc39a9690135F7273b44Dfd3BA6c0c69aD", + "on_ramp": "0x75b9a75Ee1fFef6BE7c4F842a041De7c6153CF4E", "deployed_at": 0 }, "WeMix Testnet": { - "on_ramp": "0x677B5ab5C8522d929166c064d5700F147b15fa33", + "on_ramp": "0x1ff99E67986E83bb5BA34143BaA2735853e5738c", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Sepolia": { - "off_ramp": "0x90A74072e7B0c2d59e13aB4d8f93c8198c413194", - "commit_store": "0xf3458CFd2fdf4a6CF0Ce296d520DD21eB194828b", + "off_ramp": "0xd88CBA0612f2Ce611BF6d073A94C8FD7E70B4fBd", + "commit_store": "0x9b8279E352bC167F714eef96A4C436bE996643cE", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "BSC Testnet": { - "off_ramp": "0x10b28009E5D776F1f5AAA73941CE8953B8f42d26", - "commit_store": "0xacDD582F271eCF22FAd6764cCDe1c4a534b732A8", + "off_ramp": "0x9c40A73F5C7454BB7C178AFa56Ee30bFB2DCf7E6", + "commit_store": "0xE5611af1d63340b711B0468a976651Fb79B17870", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Base Sepolia": { - "off_ramp": "0xdBdE8510226d1E060A3bf982b67705C67f5697e2", - "commit_store": "0x8Ee73BC9492b4182D289E5C1e66e40CD876CC00F", + "off_ramp": "0xf8de9d5924CFD28e31a53B63B4903436D9818d69", + "commit_store": "0xDD7CfECE1bb4e8aC2E8b8281CFE1D44247119471", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Gnosis Chiado": { - "off_ramp": "0x56dF55aF5F0A4689f3364230587a68eD6A314fAd", - "commit_store": "0xabA7ff98094c4cc7A075812EefF2CD21f6400235", + "off_ramp": "0x3F5035039C23cDAF032C64c084Dc70F811E62ddD", + "commit_store": "0xf5B0245c7B9e15f0cB0B85FF2B6799a45D61CbaA", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Optimism Sepolia": { - "off_ramp": "0x3d7CbC95DCC33257F14D6Eb780c88Bd56C6335BB", - "commit_store": "0x1fcDC02edDfb405f378ba53cF9E6104feBcB7542", + "off_ramp": "0x1DF9D94C6916918C935E60d2Cb4Ed265Bf778005", + "commit_store": "0xE7eeBE5882609d28C015d0A89DE1ba4f506F4a03", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Polygon Amoy": { - "off_ramp": "0x3e33290B90fD0FF30a3FA138934DF028E4eCA348", - "commit_store": "0xCFe3556Aa42d40be09BD23aa80448a19443BE5B1", + "off_ramp": "0xbeD7F478Ef5627FB2B891fDA29Ca0131f6796D9D", + "commit_store": "0x27a319f58c01380056c86938798aCEAA1AC529e2", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0x9e5e4324F8608D54A50a317832d456a392E4F8C2", - "commit_store": "0x92A51eD3F041B39EbD1e464C1f7cb1e8f8A8c63f", + "off_ramp": "0x01e3D835b4C4697D7F81B9d7Abc89A6E478E4a2f", + "commit_store": "0x4EC313c1Eb620432f42FB5f4Df27f8A566523c1C", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "WeMix Testnet": { - "off_ramp": "0xD0D338318bC6837b091FC7AB5F2a94B7783507d5", - "commit_store": "0xd9D479208235c7355848ff4aF26eB5aacfDC30c6", + "off_ramp": "0x15CcAbf0e3484D4872e25b883163D8cB724d4832", + "commit_store": "0x859f3477B7b4ECc19aDD8cCb19740932F21bD76b", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -188,59 +197,68 @@ Data = """ "wrapped_native": "0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd", "src_contracts": { "Avalanche Fuji": { - "on_ramp": "0xa2515683E99F50ADbE177519A46bb20FfdBaA5de", + "on_ramp": "0x2A6f8Ed2e7b222163ef6EcC2327171B479399ab2", "deployed_at": 0 }, "Base Sepolia": { - "on_ramp": "0x3E807220Ca84b997c0d1928162227b46C618e0c5", + "on_ramp": "0x97856Bf888F6eEDBBd322B28133BCcF9CA9038f6", + "deployed_at": 0 + }, + "Blast Sepolia": { + "on_ramp": "0xd0049BfFc8e2689Df9236FfA393Ccbf7eae4FbbC", "deployed_at": 0 }, "Gnosis Chiado": { - "on_ramp": "0x8735f991d41eA9cA9D2CC75cD201e4B7C866E63e", + "on_ramp": "0x98dEa9e498F2A7aF6c74C915c88A17FbA09b73C2", "deployed_at": 0 }, "Polygon Amoy": { - "on_ramp": "0xf37CcbfC04adc1B56a46B36F811D52C744a1AF78", + "on_ramp": "0x363EB789fE31F08547a847D8C38d9b55C7Cf1903", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0xB1DE44B04C00eaFe9915a3C07a0CaeA4410537dF", + "on_ramp": "0xC1C6438D60AbE9bF4b1F10460184CE9bD312e328", "deployed_at": 0 }, "WeMix Testnet": { - "on_ramp": "0x89268Afc1BEA0782a27ba84124E3F42b196af927", + "on_ramp": "0xbc85704EDb79ea84E9D3C18965F7f6A16B0a0440", "deployed_at": 0 } }, "dest_contracts": { "Avalanche Fuji": { - "off_ramp": "0x6e6fFCb6B4BED91ff0CC8C2e57EC029dA7DB80C2", - "commit_store": "0x38Bc38Bd824b6eE87571f9D3CFbe6D6E28E3Dc62", + "off_ramp": "0x95b66acfaaDF122f4EccE52C0aD4Fd997DD1150C", + "commit_store": "0x3af04b1c1e79A6B8A4577Bb47EC33eD2E66AeB47", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Base Sepolia": { - "off_ramp": "0x2C61FD7E93Dc79422861282145c59B56dFbc3a8c", - "commit_store": "0x42fAe5B3605804CF6d08632d7A25864e24F792Ae", + "off_ramp": "0x0a5147e1Ac38C79c77031194ef64C8B5353F6EE9", + "commit_store": "0x103864D60b33a479EA7D0e23a37e0ce07198f0A9", + "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" + }, + "Blast Sepolia": { + "off_ramp": "0xe1e8473218acCB82FBc24Ccd3C5D2dF166cd04f3", + "commit_store": "0x020B047A5Ca88fDB1ad3bAD9A082760fC7F770b6", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Gnosis Chiado": { - "off_ramp": "0x71a44a60832B0F8B63232C9516e7E6aEc3A373Dc", - "commit_store": "0xAC24299a91b72d1Cb5B31147e3CF54964D896974", + "off_ramp": "0x1F7FEBCBb10420E039C333A60A444c1a442d826C", + "commit_store": "0x23Ae763a64D39d6038431a64Bbc4A670C89d82b9", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Polygon Amoy": { - "off_ramp": "0x63440C7747d37bc6154b5538AE32b54FE0965AfA", - "commit_store": "0xAD22fA198CECfC534927aE1D480c460d5bB3460F", + "off_ramp": "0xAAe325adbc9C5a28e4e94Fef170D55de2CA9aA01", + "commit_store": "0xD173Df3A1b23ec42eA5C4669b9c956Bef230efd1", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0xf1c128Fe52Ea78CcAAB407509292E61ce38C1523", - "commit_store": "0x59dFD870dC4bd76A7B879A4f705Fdcd2595f85f9", + "off_ramp": "0xB513523aee87f838e78b32d2Bacaaf2e94D9f0f9", + "commit_store": "0x21A49164890576504C1f1c4DC9442c42C98771D7", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "WeMix Testnet": { - "off_ramp": "0xfd9B19c3725da5B517aA705B848ff3f21F98280e", - "commit_store": "0x3c1F1412563188aBc8FE3fd53E8F1Cb601CaB4f9", + "off_ramp": "0xc985571900DCa62387f93F882AB550472531f5DB", + "commit_store": "0xac5DACfAb1a512E33c49EFE42502863FC1a4BAB3", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -260,68 +278,68 @@ Data = """ "wrapped_native": "0x4200000000000000000000000000000000000006", "src_contracts": { "Arbitrum Sepolia": { - "on_ramp": "0x58622a80c6DdDc072F2b527a99BE1D0934eb2b50", + "on_ramp": "0xb52eF669d3fCeBee1f31418Facc02a16A6F6B0e5", "deployed_at": 0 }, "Avalanche Fuji": { - "on_ramp": "0xAbA09a1b7b9f13E05A6241292a66793Ec7d43357", + "on_ramp": "0x212e8Fd9cCC330ab54E8141FA7d33967eF1eDafF", "deployed_at": 0 }, "BSC Testnet": { - "on_ramp": "0xD806966beAB5A3C75E5B90CDA4a6922C6A9F0c9d", + "on_ramp": "0xd54B44811AE99a18Cb95B4704ba04a65C0163751", "deployed_at": 0 }, "Gnosis Chiado": { - "on_ramp": "0x2Eff2d1BF5C557d6289D208a7a43608f5E3FeCc2", + "on_ramp": "0xdd0Ee1F20E93a93634AAcE56105E19423881Df56", "deployed_at": 0 }, "Mode Sepolia": { - "on_ramp": "0x3d0115386C01436870a2c47e6297962284E70BA6", + "on_ramp": "0xc59689dFDEF9D953cEFbb58912b304bb38408476", "deployed_at": 0 }, "Optimism Sepolia": { - "on_ramp": "0x3b39Cd9599137f892Ad57A4f54158198D445D147", + "on_ramp": "0x2945D35F428CE564F5455AD0AF28BDFCa67e76Ab", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0x6486906bB2d85A6c0cCEf2A2831C11A2059ebfea", + "on_ramp": "0x29A1F4ecE9246F0042A9062FB89803fA8B1830cB", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Sepolia": { - "off_ramp": "0xd364C06ac99a82a00d3eFF9F2F78E4Abe4b9baAA", - "commit_store": "0xdE8d0f47a71eA3fDFBD3162271652f2847939097", + "off_ramp": "0x814E735c5DD19240c85E2513DD926Bc3a39f7140", + "commit_store": "0xFc24B204bfA5C65eD8e2Fc02fDe4FeCb62eA8Ac5", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Avalanche Fuji": { - "off_ramp": "0xAd91214efFee446500940c764DF77AF18427294F", - "commit_store": "0x1242b6c5e0e349b8d4BCf0938f961C4B4f7EA3Fa", + "off_ramp": "0x3Ab3a3d35cAC95FfcFCcc127eF01eA8D87b0A64e", + "commit_store": "0x51313B8C068B5227fa7364E6eCB1382Fb751976F", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "BSC Testnet": { - "off_ramp": "0xd5E9508921434e8758f4540D55c1c066b7cc1598", - "commit_store": "0x1a86b29364D1B3fA3386329A361aA98A104b2742", + "off_ramp": "0x827CF69409307Cd4c979e652894C297ad5124ab7", + "commit_store": "0x547eBe6077305c3fdF8dA66c66cc14b0779CE00C", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Gnosis Chiado": { - "off_ramp": "0x9Bb7e398ef9Acfe9cA584C39B1E233Cba62BB9f7", - "commit_store": "0x1F4B82cDebaC5e3a0Dd53183D47e51808B4a64cB", + "off_ramp": "0x8bB08Bc19771C69E739a2078894523b3DC05a05e", + "commit_store": "0xf163Da63bDB8b9C355d41C755E03125988650109", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Mode Sepolia": { - "off_ramp": "0xB26647A23e8b4284375e5C74b77c9557aE709D03", - "commit_store": "0x4b4fEB401d3E613e1D6242E155C83A80BF9ac2C9", + "off_ramp": "0x11E16c71D76E43acbcb496A70966380d905B1E32", + "commit_store": "0xEe19f039FaE3EF0F94971f0B7B187223D952ac13", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Optimism Sepolia": { - "off_ramp": "0x86a3910908eCaAA31Fcd9F0fC8841D8E98f1511d", - "commit_store": "0xE99a87C9b5ed4D2b6060195DEea5106ffF655736", + "off_ramp": "0x8718d1cc138421Dbc1B489CB7884FF68DE7ad867", + "commit_store": "0x3291D453c880E5b59EEd04E600c85268Cd378b7f", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0x189F61D9B886Dd2975D5Abc893c8Cf5f5effda71", - "commit_store": "0xEE7e27346DCD1e711348D0F7f7ECB53a9a3a08a7", + "off_ramp": "0x0ecA23Ef70B828fEDd0A84d2692cB0527B52396A", + "commit_store": "0xA7F84Ec616F8e9Fa593339944E76bda90A9737fE", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -340,15 +358,24 @@ Data = """ "price_registry": "0xc8acE9dF450FaD007755C6C9AB4f0e9c8626E29C", "wrapped_native": "0x4200000000000000000000000000000000000023", "src_contracts": { + "BSC Testnet": { + "on_ramp": "0x6eA6f63b689b5597A0C06a5Eb8DcDFD86383857A", + "deployed_at": 0 + }, "Sepolia Testnet": { - "on_ramp": "0x85Ef19FC4C63c70744995DC38CAAEC185E0c619f", + "on_ramp": "0x154aDEF773a848da8229D81De73a7b0844400ebd", "deployed_at": 0 } }, "dest_contracts": { + "BSC Testnet": { + "off_ramp": "0xd9dE4aCD27E814bfe70CA33d2A4d079e740626Bd", + "commit_store": "0xe8fF7e22c54f76F453d6072A9d3a12B1D9AbA137", + "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" + }, "Sepolia Testnet": { - "off_ramp": "0x92cD24C278D34C726f377703E50875d8f9535dC2", - "commit_store": "0xcE1b4D50CeD56850182Bd58Ace91171cB249B873", + "off_ramp": "0x46DD4e3e2b8a18409646F1C15bf3799a481e67f6", + "commit_store": "0x8250f9E992dda66791dd8b5d356B867ae53382cF", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -368,14 +395,14 @@ Data = """ "wrapped_native": "0x99604d0e2EfE7ABFb58BdE565b5330Bb46Ab3Dca", "src_contracts": { "Sepolia Testnet": { - "on_ramp": "0x16a020c4bbdE363FaB8481262D30516AdbcfcFc8", + "on_ramp": "0x68A4f57A499563192C606a898BAf503A43fcDB4D", "deployed_at": 0 } }, "dest_contracts": { "Sepolia Testnet": { - "off_ramp": "0xa1b97F92D806BA040daf419AFC2765DC723683a4", - "commit_store": "0xcd92C0599Ac515e7588865cC45Eee21A74816aFc", + "off_ramp": "0xF6dB68333D14f6a0c1123cc420ea60980aEDA0Eb", + "commit_store": "0x8f9B63c40891CdF7d1C795625d4260a29bE2bBa0", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -395,68 +422,68 @@ Data = """ "wrapped_native": "0x18c8a7ec7897177E4529065a7E7B0878358B3BfF", "src_contracts": { "Arbitrum Sepolia": { - "on_ramp": "0x473b49fb592B54a4BfCD55d40E048431982879C9", + "on_ramp": "0x94967Ea06C6543Aaba5B90C52B655003ef82e521", "deployed_at": 0 }, "Avalanche Fuji": { - "on_ramp": "0x610F76A35E17DA4542518D85FfEa12645eF111Fc", + "on_ramp": "0x4f3576585e7fCCE5Fc502Bcf3CAdaD22E1194834", "deployed_at": 0 }, "BSC Testnet": { - "on_ramp": "0xE48E6AA1fc7D0411acEA95F8C6CaD972A37721D4", + "on_ramp": "0xB2642B54580140C375c9024e273C575a5f53d02d", "deployed_at": 0 }, "Base Sepolia": { - "on_ramp": "0x41b4A51cAfb699D9504E89d19D71F92E886028a8", + "on_ramp": "0x0E9504907be794620229C196F82CB062A66B7480", "deployed_at": 0 }, "Optimism Sepolia": { - "on_ramp": "0xAae733212981e06D9C978Eb5148F8af03F54b6EF", + "on_ramp": "0xeb86B5b6f5C66eCb58e4Cf98E607b238126505DC", "deployed_at": 0 }, "Polygon Amoy": { - "on_ramp": "0x01800fCDd892e37f7829937271840A6F041bE62E", + "on_ramp": "0xd86F5DF82A2500137Ddeef963028d60E3b5A354D", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0x4ac7FBEc2A7298AbDf0E0F4fDC45015836C4bAFe", + "on_ramp": "0x03691D63C687D09368360e957AFB2F7B4d1651d4", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Sepolia": { - "off_ramp": "0x9aA82DBB53bf02096B771D40e9432A323a78fB26", - "commit_store": "0x5CdbA91aBC0cD81FC56bc10Ad1835C9E5fB38e5F", + "off_ramp": "0x3633Cce99186217d4C7ed64FD455d218b8Cd5D4c", + "commit_store": "0x6e096286548451828c97F1B3E49C402a4934F39a", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Avalanche Fuji": { - "off_ramp": "0x3e33290B90fD0FF30a3FA138934DF028E4eCA348", - "commit_store": "0xCFe3556Aa42d40be09BD23aa80448a19443BE5B1", + "off_ramp": "0x5E4DB2A3c965B9B2A850a75697Bb6a00b4e35ac5", + "commit_store": "0x2489c5a802fE63943f7E3185A0362327B55DDF67", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "BSC Testnet": { - "off_ramp": "0xbc4AD54e91b213D4279af92c0C5518c0b96cf62D", - "commit_store": "0xff84e8Dd4Fd17eaBb23b6AeA6e1981830e54389C", + "off_ramp": "0x2BA72Ba392C08750328635E36757A2c29a9165CA", + "commit_store": "0x08ebd7Cf4ABDC819c74cB45CbA4e291728538D7C", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Base Sepolia": { - "off_ramp": "0x4117953A5ceeF12f5B8C1E973b470ab83a8CebA6", - "commit_store": "0x94ad41296186E81f31e1ed0B1BcF5fa9e1721C27", + "off_ramp": "0x269D28B25Ee081ae5340e2BFE99850E92F1cd522", + "commit_store": "0x8dC9329BD221C89c4989d98c38Ff2Cc3dF92d14b", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Optimism Sepolia": { - "off_ramp": "0x33d2898F8fb7714FD1661791766f40754982a343", - "commit_store": "0x55d6Df194472f02CD481e506A277c4A29D0D1bCc", + "off_ramp": "0xd93B571ae9CaF43d70b2b53fFD55e035Db641e31", + "commit_store": "0x42C1093b9DdE8d0CD58859C610dc239B66bE26de", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Polygon Amoy": { - "off_ramp": "0x450543b1d85ca79885851D7b74dc982981b78229", - "commit_store": "0x23B79d940A769FE31b4C867A8BAE80117f24Ca81", + "off_ramp": "0x87F9b8382611ACD01d5696a1f5b05B888e55B0Cc", + "commit_store": "0x29AC46227908d31A9BdDe82c0A4a6c52D802f145", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0xbf9036529123DE264bFA0FC7362fE25B650D4B16", - "commit_store": "0x5f7F1abD5c5EdaF2636D58B980e85355AF0Ef80d", + "off_ramp": "0x9aa734100C425309091dAE18154e0356B82d477a", + "commit_store": "0x7cDd533B82f4c32FAE7f551C37b1490909817C45", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -476,14 +503,14 @@ Data = """ "wrapped_native": "0x4200000000000000000000000000000000000001", "src_contracts": { "WeMix Testnet": { - "on_ramp": "0x6ea155Fc77566D9dcE01B8aa5D7968665dc4f0C5", + "on_ramp": "0xa81418c332d3E04338B058Ab39b1baf53029F638", "deployed_at": 0 } }, "dest_contracts": { "WeMix Testnet": { - "off_ramp": "0xB602B6E5Caf08ac0C920EAE585aed100a8cF6f3B", - "commit_store": "0x89D5b13908b9063abCC6791dc724bF7B7c93634C", + "off_ramp": "0x42Dde725C4f05C237a00B582Bb7457e208d3A17C", + "commit_store": "0xb116E9a90534354dA59CF93a87c1E9711c0Aaa2c", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -502,15 +529,24 @@ Data = """ "price_registry": "0x5DCE866b3ae6E0Ed153f0e149D7203A1B266cdF5", "wrapped_native": "0x5c48e07062aC4E2Cf4b9A768a711Aef18e8fbdA0", "src_contracts": { + "Arbitrum Sepolia": { + "on_ramp": "0x2eb69889cc979c0Be120813FcE2f1558efF4ceB5", + "deployed_at": 0 + }, "Sepolia Testnet": { - "on_ramp": "0x2Eff2d1BF5C557d6289D208a7a43608f5E3FeCc2", + "on_ramp": "0xE0dFc15C0CDf607b2088D0B641E00eA0B418124C", "deployed_at": 0 } }, "dest_contracts": { + "Arbitrum Sepolia": { + "off_ramp": "0x839b5dEA3e084790F580E9DfCE8CCfDf49c5835e", + "commit_store": "0xdF38C8aD34C379165f98A75a6894790bB5a16b1D", + "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" + }, "Sepolia Testnet": { - "off_ramp": "0x9Bb7e398ef9Acfe9cA584C39B1E233Cba62BB9f7", - "commit_store": "0x1F4B82cDebaC5e3a0Dd53183D47e51808B4a64cB", + "off_ramp": "0x72130De9A85e9C61151253aFF8801Bb3242A00a9", + "commit_store": "0x8F6D64280C379F680Ff0c3278f340D72a465FAAc", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -530,23 +566,23 @@ Data = """ "wrapped_native": "0x4200000000000000000000000000000000000006", "src_contracts": { "Base Sepolia": { - "on_ramp": "0x73f7E074bd7291706a0C5412f51DB46441B1aDCB", + "on_ramp": "0x48ACE2319f643584B77C21476a6c664D7F13a107", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0xfFdE9E8c34A27BEBeaCcAcB7b3044A0A364455C9", + "on_ramp": "0xb821885731414497d705dc56325f18AA33e612dC", "deployed_at": 0 } }, "dest_contracts": { "Base Sepolia": { - "off_ramp": "0x137a38c6b1Ad20101F93516aB2159Df525309168", - "commit_store": "0x8F43d867969F14619895d71E0A5b89E0bb20bF70", + "off_ramp": "0xC6b69Fa9eeBc55e64eBc68371Fbd41ff73756F17", + "commit_store": "0xaA6691EA9110409a29C2E665174b4b2fe694cE67", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0xcD44cec849B6a8eBd5551D6DFeEcA452257Dfe4d", - "commit_store": "0xbA66f08733E6715D33edDfb5a5947676bb45d0e0", + "off_ramp": "0x35dE2C381a2fF8a26c8ae94145be3A9cA8C83600", + "commit_store": "0xE7e60DAee094416b8ab2083047a893c4c4290c48", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -566,68 +602,68 @@ Data = """ "wrapped_native": "0x4200000000000000000000000000000000000006", "src_contracts": { "Arbitrum Sepolia": { - "on_ramp": "0x1a86b29364D1B3fA3386329A361aA98A104b2742", + "on_ramp": "0x6B36c9CD74E760088817a047C3460dEdFfe9a11A", "deployed_at": 0 }, "Avalanche Fuji": { - "on_ramp": "0x6b38CC6Fa938D5AB09Bdf0CFe580E226fDD793cE", + "on_ramp": "0x91a144F570ABA7FB7079Fb187A267390E0cc7367", "deployed_at": 0 }, "Base Sepolia": { - "on_ramp": "0xe284D2315a28c4d62C419e8474dC457b219DB969", + "on_ramp": "0x6D22953cdEf8B0C9F0976Cfa52c33B198fEc5881", "deployed_at": 0 }, "Gnosis Chiado": { - "on_ramp": "0x835a5b8e6CA17c2bB5A336c93a4E22478E6F1C8A", + "on_ramp": "0xec7D9A84A6d4556056975BE50Cdc97bAa9313632", "deployed_at": 0 }, "Polygon Amoy": { - "on_ramp": "0x2Cf26fb01E9ccDb831414B766287c0A9e4551089", + "on_ramp": "0x9E09C2A7D6B9F88c62f0E2Af4cd62dF3F4c326F1", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0xC8b93b46BF682c39B3F65Aa1c135bC8A95A5E43a", + "on_ramp": "0x54b32C2aCb4451c6cF66bcbd856d8A7Cc2263531", "deployed_at": 0 }, "WeMix Testnet": { - "on_ramp": "0xc7E53f6aB982af7A7C3e470c8cCa283d3399BDAd", + "on_ramp": "0xB9Ef21C04d8340b223e9C1d7a09f332609c70300", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Sepolia": { - "off_ramp": "0xDc2c7A3d8068C6F09F0F3648d24C84e372F6014d", - "commit_store": "0xb1aFb5cbE3c29b5Db71F21442BA9EfD450BC23C3", + "off_ramp": "0xF35e2d1457749374453e44B06268aD3f78b133b3", + "commit_store": "0x4bd755d86E25dD4093CAa5639CfDab81571259CA", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Avalanche Fuji": { - "off_ramp": "0x1F350718e015EB20E5065C09F4A7a3f66888aEeD", - "commit_store": "0x98650A8EB59f75D93563aB34FcF603b1A30e4CBF", + "off_ramp": "0xCb2266c2118b1f30D15CBeB3a885531ABaA1b556", + "commit_store": "0x5Ded92E2CF71a8fF7644a67850F061c38B31BfB4", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Base Sepolia": { - "off_ramp": "0x0a750ca77369e03613d7640548F4b2b1c695c3Bb", - "commit_store": "0x8fEBC74C26129C8d7E60288C6dCCc75eb494aA3C", + "off_ramp": "0x960c62A491C30d0a60fD74a59d35B9C02697AdaA", + "commit_store": "0x06963745B3839B998288D1a46a46Ec25991A3D5E", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Gnosis Chiado": { - "off_ramp": "0xCE2CE7F940B7c839384e5D7e079A6aE80e8AD6dB", - "commit_store": "0x1b9D78Ec1CEEC439F0b7eA6C428A1a607D9FA7e4", + "off_ramp": "0x7d6721c2E85560F0A233255D3d332AcF6f850d96", + "commit_store": "0xaC00661cAB5161d9B4746DFb7A028d97981aB2c5", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Polygon Amoy": { - "off_ramp": "0xD667b5706592D0b040C78fEe5EE17D243b7dCB41", - "commit_store": "0x96101BA5250EE9295c193693C1e08A55bC593664", + "off_ramp": "0x4cEeFa55AF23dFD27Cf926e8eFB1D1bCcD24526E", + "commit_store": "0xaD3943BdECbf4ae7d6E51aB0FD06bbC604bB7b95", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0x260AF9b83e0d2Bb6C9015fC9f0BfF8858A0CCE68", - "commit_store": "0x7a0bB92Bc8663abe6296d0162A9b41a2Cb2E0358", + "off_ramp": "0x2aF9B10A5972D0c36f4d8F85773052c104E319B2", + "commit_store": "0x82FCF55b9e9bAb3066c2863F12a02bBc2Ba33F2F", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "WeMix Testnet": { - "off_ramp": "0x9C08B7712af0344188aa5087D9e6aD0f47191037", - "commit_store": "0x4BE6DB0B884169a6A207fe5cad01eB4C025a13dB", + "off_ramp": "0x0FA15Bc42D4999d964CBf0161489Bd392DEE834e", + "commit_store": "0x37760F99a5b91884C9D89a06408f532aEbb0e674", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -647,59 +683,59 @@ Data = """ "wrapped_native": "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9", "src_contracts": { "Avalanche Fuji": { - "on_ramp": "0x8Fb98b3837578aceEA32b454f3221FE18D7Ce903", + "on_ramp": "0xad6A94CFB51e7DE30FD21F417E4cBf70D3AdaD30", "deployed_at": 0 }, "BSC Testnet": { - "on_ramp": "0xC6683ac4a0F62803Bec89a5355B36495ddF2C38b", + "on_ramp": "0x28EC0a9C90360F55C2a9DaD5901b074C257904ca", "deployed_at": 0 }, "Gnosis Chiado": { - "on_ramp": "0x2331F6D614C9Fd613Ff59a1aB727f1EDf6c37A68", + "on_ramp": "0x9DF611536f124278Ce968c476BDb10A66E54ecfE", "deployed_at": 0 }, "Optimism Sepolia": { - "on_ramp": "0xA52cDAeb43803A80B3c0C2296f5cFe57e695BE11", + "on_ramp": "0x600f00aef9b8ED8EDBd7284B5F04a1932c3408aF", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0x35347A2fC1f2a4c5Eae03339040d0b83b09e6FDA", + "on_ramp": "0x719Aef2C63376AdeCD62D2b59D54682aFBde914a", "deployed_at": 0 }, "WeMix Testnet": { - "on_ramp": "0x26546096F64B5eF9A1DcDAe70Df6F4f8c2E10C61", + "on_ramp": "0x7D6c93E49E46cc983a677c283EAb27CbbC94e3C4", "deployed_at": 0 } }, "dest_contracts": { "Avalanche Fuji": { - "off_ramp": "0xa733ce82a84335b2E9D864312225B0F3D5d80600", - "commit_store": "0x09B0F93fC2111aE439e853884173AC5b2F809885", + "off_ramp": "0xAc56Df7F5fbde0DeeB1C0d397A150EDD5EE68625", + "commit_store": "0x8AF56D1c76B8c8CeE451a0a654D130e4050B993e", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "BSC Testnet": { - "off_ramp": "0x948dfaa4842fc23e0e362Fe8D4396AaE4E6DF7EA", - "commit_store": "0x7F4e739D40E58BBd59dAD388171d18e37B26326f", + "off_ramp": "0x40Ba47ea59D80DDd35E3a997AA520FBa0553dddc", + "commit_store": "0x8afe532517b39bA109d1A768E1Ad8b5C6485abF5", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Gnosis Chiado": { - "off_ramp": "0x17c542a28e08AEF5697251601C7b2B621d153D42", - "commit_store": "0x811250c20fAB9a1b7ca245453aC214ba637fBEB5", + "off_ramp": "0x7B968B2aDFd31765dAAD80d66c83F9D7006BFFd5", + "commit_store": "0xBc70551B5624BaF8cdCB84136198561C9cf5C176", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Optimism Sepolia": { - "off_ramp": "0xfFdE9E8c34A27BEBeaCcAcB7b3044A0A364455C9", - "commit_store": "0x74ED442ad211050e9C05Dc9A267E037E3d74A03B", + "off_ramp": "0xAA755Ef570986feEb6522377077e549e3013843E", + "commit_store": "0x5C7827EcE6a51AdaC36ef71aC01706deb1C7130d", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0xFb04129aD1EEDB741CC705ebC1978a7aB63e51f6", - "commit_store": "0x63f875240149d29136053C954Ca164a9BfA81F77", + "off_ramp": "0x7Ad494C173f5845c6B4028a06cDcC6d3108bc960", + "commit_store": "0x104A1c8b05D37fE732094595Fe696AFc7EAB8668", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "WeMix Testnet": { - "off_ramp": "0xdE8451E952Eb43350614839cCAA84f7C8701a09C", - "commit_store": "0xaCdaBa07ECad81dc634458b98673931DD9d3Bc14", + "off_ramp": "0xa85481273f8C112e96ED7476202F06D6131cf069", + "commit_store": "0x9FdF1D555e37dB09B0d151FEa53c134C88C4DeFd", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -719,122 +755,122 @@ Data = """ "wrapped_native": "0x097D90c9d3E0B50Ca60e1ae45F6A81010f9FB534", "src_contracts": { "Arbitrum Sepolia": { - "on_ramp": "0xe4Dd3B16E09c016402585a8aDFdB4A18f772a07e", + "on_ramp": "0xBc09627e58989Ba8F1eDA775e486467d2A00944F", "deployed_at": 0 }, "Avalanche Fuji": { - "on_ramp": "0x0477cA0a35eE05D3f9f424d88bC0977ceCf339D4", + "on_ramp": "0x12492154714fBD28F28219f6fc4315d19de1025B", "deployed_at": 0 }, "BSC Testnet": { - "on_ramp": "0xD990f8aFA5BCB02f95eEd88ecB7C68f5998bD618", + "on_ramp": "0x7a75b3818412fe0028590feE8270ba9E3fd01DBe", "deployed_at": 0 }, "Base Sepolia": { - "on_ramp": "0x2B70a05320cB069e0fB55084D402343F832556E7", + "on_ramp": "0x8F35B097022135E0F46831f798a240Cc8c4b0B01", "deployed_at": 0 }, "Blast Sepolia": { - "on_ramp": "0xDB75E9D9ca7577CcBd7232741be954cf26194a66", + "on_ramp": "0x4ADA60556dA05FcF53a79359e37a3E13FebA22Bf", "deployed_at": 0 }, "Celo Alfajores": { - "on_ramp": "0x3C86d16F52C10B2ff6696a0e1b8E0BcfCC085948", + "on_ramp": "0x1163D1F7D75eEb1C4f4c6912d3cF9642027aFD30", "deployed_at": 0 }, "Gnosis Chiado": { - "on_ramp": "0x3E842E3A79A00AFdd03B52390B1caC6306Ea257E", + "on_ramp": "0x831A7DbE6af8601427A0ADa89b642d4b59007eED", "deployed_at": 0 }, "Metis Sepolia": { - "on_ramp": "0x1C4640914cd57c5f02a68048A0fbb0E12d904223", + "on_ramp": "0xabB5A4f99DFEb4a3912e8Acc0660A008c76dA8c3", "deployed_at": 0 }, "Mode Sepolia": { - "on_ramp": "0xc630fbD4D0F6AEB00aD0793FB827b54fBB78e981", + "on_ramp": "0x2Eb0842925fb7aA6045e951e98e8b4b3aFFaBB54", "deployed_at": 0 }, "Optimism Sepolia": { - "on_ramp": "0x69CaB5A0a08a12BaFD8f5B195989D709E396Ed4d", + "on_ramp": "0xACDfd7a98d853FA3914047Cd46e7f5D53BBC9FbB", "deployed_at": 0 }, "Polygon Amoy": { - "on_ramp": "0x9f656e0361Fb5Df2ac446102c8aB31855B591692", + "on_ramp": "0xf9765c80F6448e6d4d02BeF4a6b4152131A2F513", "deployed_at": 0 }, "WeMix Testnet": { - "on_ramp": "0xedFc22336Eb0B9B11Ff37C07777db27BCcDe3C65", + "on_ramp": "0xd72c3c132B76F5D232C37dF3bF8f04392D552e0F", "deployed_at": 0 }, "ZKSync Sepolia": { - "on_ramp": "0x1Acb3A885feA37bdA30AB99b99327b14391f500F", + "on_ramp": "0xA2865E4f36760f5fa5c8F958336120f2DF0d974b", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Sepolia": { - "off_ramp": "0xF18896AB20a09A29e64fdEbA99FDb8EC328f43b1", - "commit_store": "0x93Ff9Dd39Dc01eac1fc4d2c9211D95Ee458CAB94", + "off_ramp": "0xD2f5edfD4561d6E7599F6c6888Bd353cAFd0c55E", + "commit_store": "0x240420BC6bCDc067e668c7492D69fe06B3CF80cE", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Avalanche Fuji": { - "off_ramp": "0x000b26f604eAadC3D874a4404bde6D64a97d95ca", - "commit_store": "0x2dD9273F8208B8393350508131270A6574A69784", + "off_ramp": "0x1DEBa99dC8e2A77832461BD386d83D9FCb133137", + "commit_store": "0x139E06b6dBB1a0C41A1686C091795879c943765A", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "BSC Testnet": { - "off_ramp": "0xdE2d8E126e08d675fCD7fFa5a6CE49925f3Dc692", - "commit_store": "0x0050ac355a82caB31194507f94174297bf0655A7", + "off_ramp": "0x04305BD9D9CA6730517f79c3D9c6828BC2D25Ecb", + "commit_store": "0x32edD59840CD9e474A280cf1707439F2Bd5872d4", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Base Sepolia": { - "off_ramp": "0x31c0B81832B333419f0DfD36A69F502cF9094aed", - "commit_store": "0xDFcde9d698a2B32DB2537DC9B752Cadd1D846a52", + "off_ramp": "0x662738DC7DE4f7eC63d9f73Cdf9BeA5A58DdcC15", + "commit_store": "0x1e46bAC486Dd878cD57B62845530A52343e39693", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Blast Sepolia": { - "off_ramp": "0x4e897e5cF3aC307F0541B2151A88bCD781c153a3", - "commit_store": "0xB656652841F347178e193951C4663652aCe36B74", + "off_ramp": "0x049A424cF894709f044bc70177F8F6b792adc3F6", + "commit_store": "0x496fE96E440Fc683478a08Df92A1c5E23E412b1C", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Celo Alfajores": { - "off_ramp": "0xB435E0f73c18C5a12C324CA1d02F81F2C3e6e761", - "commit_store": "0xbc5d74957F171e75F92c8F0E1C317A25a56a416D", + "off_ramp": "0x4F146d34Be5E273e576ef158Bd7070eC22708D20", + "commit_store": "0xEeB665281c7ab51d25423898f730Ab078c69dd42", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Gnosis Chiado": { - "off_ramp": "0x7db0115A0b3AAb01d30bf81123c5DD7B0C41Add5", - "commit_store": "0x6640723Ea801178c4383FA016b9781e7ef1016EF", + "off_ramp": "0xB424365EEEEA58A36C7EC858f926f4e8275dDEb3", + "commit_store": "0xE95c2135e3330E953BB49068d32Fcba368Acd456", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Metis Sepolia": { - "off_ramp": "0x4DB693A93E9d5196ECD42EC56CDEAe99dFC652ED", - "commit_store": "0xBfACd78F1412B6f93Ac23409bf456aFec1ABd845", + "off_ramp": "0x46DE6201c258f5948135cd0262f91e48Cb8e3828", + "commit_store": "0x3A27Fd059A4eF0e96B0643283A44a56A8d6CF34A", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Mode Sepolia": { - "off_ramp": "0xbEfd8D65F6643De54F0b1268A3bf4618ff85dcB4", - "commit_store": "0x0C161D3470b45Cc677661654C30ce4AdE6aCD288", + "off_ramp": "0x052E52fdd48719A6084366eA184FC44cb8C25DC2", + "commit_store": "0xBBb9baA314eB023E3F9291Aaf4107B6708341B50", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Optimism Sepolia": { - "off_ramp": "0xD50590D4438411EDe47029b0FD7901A7145E5Df6", - "commit_store": "0xe85EEE9Fd434A7b8a586Ee086E828abF41839479", + "off_ramp": "0xbfa6f6AAE31acB3A285e80026d6475C1a50d1d0F", + "commit_store": "0xB5FbA97Dc61ec68771a92a15360d9C32c9d054E7", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Polygon Amoy": { - "off_ramp": "0x5032cbC0C4aEeD25bb6E45D8B3fAF05DB0688C5d", - "commit_store": "0xe6201C9996Cc7B6E828E10CbE937E693d577D318", + "off_ramp": "0xC3e550B6aaFA5539df8bbCc5B0991e587f438e75", + "commit_store": "0xd57866D97ca26dfaE34088a3EeE4657BAFaac5f9", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "WeMix Testnet": { - "off_ramp": "0x46b639a3C1a4CBfD326b94a2dB7415c27157282f", - "commit_store": "0x7b74554678816b045c1e7409327E086bD436aa46", + "off_ramp": "0x445F41C6aa7e910021786e860d7cfe3E7fcC6640", + "commit_store": "0x307dDE3c696E399b5837456FbCe03b1Ad76D46E3", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "ZKSync Sepolia": { - "off_ramp": "0xBaABd4166C892a1081a26535875A8fA3f22937b2", - "commit_store": "0xfda2e83F4D3f42B7629134ecD6E4b29FB8A7A07B", + "off_ramp": "0x9f5dC467A5c97068A1c2987486B8b768275627eD", + "commit_store": "0x6e4601DA99a046e4bde60d051568E3E1F35E3097", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -854,68 +890,68 @@ Data = """ "wrapped_native": "0xbE3686643c05f00eC46e73da594c78098F7a9Ae7", "src_contracts": { "Arbitrum Sepolia": { - "on_ramp": "0xA9DE3F7A617D67bC50c56baaCb9E0373C15EbfC6", + "on_ramp": "0xa5Be8C619F61505548992D9820c5c485b030C7B0", "deployed_at": 0 }, "Avalanche Fuji": { - "on_ramp": "0xC4aC84da458ba8e40210D2dF94C76E9a41f70069", + "on_ramp": "0x7802B6804bbE7486229ac6D3519f0057c50b40a9", "deployed_at": 0 }, "BSC Testnet": { - "on_ramp": "0x5AD6eed6Be0ffaDCA4105050CF0E584D87E0c2F1", + "on_ramp": "0xd25B8c70CB43022Bdc3aC417E2Cf5159294d95A1", "deployed_at": 0 }, "Kroma Sepolia": { - "on_ramp": "0x428C4dc89b6Bf908B82d77C9CBceA786ea8cc7D0", + "on_ramp": "0x1De2Ca07eEee7F524Fe5edA6C8FFFb79F67b05E9", "deployed_at": 0 }, "Optimism Sepolia": { - "on_ramp": "0x1961a7De751451F410391c251D4D4F98D71B767D", + "on_ramp": "0xB37607C6BD4562F32967dE87D14663D59e3f655d", "deployed_at": 0 }, "Polygon Amoy": { - "on_ramp": "0xd55148e841e76265B484d399eC71b7076ecB1216", + "on_ramp": "0x0c972752F9aC3255cE45b440f9bBC6500676c4e6", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0x4d57C6d8037C65fa66D6231844785a428310a735", + "on_ramp": "0x1CD55c65f85681Dfae47c62e6D93340D25006BbB", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Sepolia": { - "off_ramp": "0xeB1dFaB2464Bf0574D43e764E0c758f92e7ecAFb", - "commit_store": "0xcEaCa2B7890065c485f3E58657358a185Ad33791", + "off_ramp": "0xB5492C8A71130B486fAD1091Db683584767A3957", + "commit_store": "0x1e151ED27E2F48EcFBd5b4374d0fc4869e07c397", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Avalanche Fuji": { - "off_ramp": "0x98e811Df9D2512f1aaf58D534607F583D6c54A4F", - "commit_store": "0x8e538351F6E5B2daF3c90C565C3738bca69a2716", + "off_ramp": "0x60536c757c2BBf72cC68A1933F7e336d03Bb68fe", + "commit_store": "0x2fF725556A04b47eB40BbA11d9F51e8fbbee9F07", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "BSC Testnet": { - "off_ramp": "0xB0e7f0fCcD3c961C473E7c44D939C1cDb4Cec1cB", - "commit_store": "0x4B56D8d53f1A6e0117B09700067De99581aA5542", + "off_ramp": "0xb858077FbE1E55cD7a9092Eb6d5403e068c14EAf", + "commit_store": "0x0EF13C7c95C27A9EA477363a26a09Cff44ba38F9", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Kroma Sepolia": { - "off_ramp": "0xD685D2d224dd6D0Db2D56497db6270D77D9a7966", - "commit_store": "0x7e062D6880779a0347e7742058C1b1Ee4AA0B137", + "off_ramp": "0x78d8154e1216F4791086bFa078Aaf07dcD2bD3C6", + "commit_store": "0xe67AAfbE6025e730Cf47a414BEFf2106FF231dB1", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Optimism Sepolia": { - "off_ramp": "0xA5f97Bc69Bf06e7C37B93265c5457420A92c5F4b", - "commit_store": "0xd48b9213583074f518D8f4336FDf35370D450132", + "off_ramp": "0x995Fc17FC12b67f75D3cBf3bC71BD9af65671E78", + "commit_store": "0xD0825e3D8e61b67a06A93426749d38bCF73Ddb02", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Polygon Amoy": { - "off_ramp": "0x6c8f5999B06FDE17B11E4e3C1062b761766F960f", - "commit_store": "0x957c3c2056192e58A8485eF31165fC490d474239", + "off_ramp": "0xd7b5B4F8FF7a87cC92f7B3058365862859d9E057", + "commit_store": "0xa8f2bb4e831caA5E2794AaD014030E378208d4Bc", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0x8AB103843ED9D28D2C5DAf5FdB9c3e1CE2B6c876", - "commit_store": "0x7d5297c5506ee2A7Ef121Da9bE02b6a6AD30b392", + "off_ramp": "0xa7E2F97Be7798327A49CACD022f33c0E7EfD4897", + "commit_store": "0x6fe69eE4eC9FD768193a40129A3Ba3dF140b2208", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -923,20 +959,26 @@ Data = """ "ZKSync Sepolia": { "is_native_fee_token": true, "fee_token": "0x4317b2eCD41851173175005783322D29E9bAee9E", + "bridge_tokens": [ + "0xFf6d0c1518A8104611f482eb2801CaF4f13c9dEb" + ], + "bridge_tokens_pools": [ + "0xA16cfA090aA6888AE8Beb92F8bfD316DD05767C9" + ], "arm": "0x926b4f90610Aa448f27c8e0Fd0afa4A17B7305F9", "router": "0xA1fdA8aa9A8C4b945C45aD30647b01f07D7A0B16", "price_registry": "0x648B6BB09bE1C5766C8AC578B9B4aC8497eA671F", "wrapped_native": "0x4317b2eCD41851173175005783322D29E9bAee9E", "src_contracts": { "Sepolia Testnet": { - "on_ramp": "0x79a9a5e9e318e8e109776569574814bbf935125a", + "on_ramp": "0xC38536521fde8556351aB7C4D3ea23b64AFbBbab", "deployed_at": 0 } }, "dest_contracts": { "Sepolia Testnet": { - "off_ramp": "0x18FF69051479796175852578725Fc74F58E963F8", - "commit_store": "0xF694b4FD7889480dca3CD41244e8e3395a9EFBa0", + "off_ramp": "0x19Ea9A42cd3682928aF19990dDb3904250D00a1D", + "commit_store": "0x20BF9037927bFadaF028D43ae07d1afccfB8fa85", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -976,7 +1018,7 @@ NetworkPairs = [ 'SEPOLIA,ARBITRUM_SEPOLIA', 'SEPOLIA,BASE_SEPOLIA', 'SEPOLIA,BLAST_SEPOLIA', - 'SEPOLIA,MODE_SEPOLIA', +# 'SEPOLIA,MODE_SEPOLIA', 'SEPOLIA,OPTIMISM_SEPOLIA', 'SEPOLIA,POLYGON_AMOY', 'SEPOLIA,WEMIX_TESTNET', @@ -1002,7 +1044,7 @@ NetworkPairs = [ 'ARBITRUM_SEPOLIA,WEMIX_TESTNET', 'ARBITRUM_SEPOLIA,GNOSIS_CHIADO', - 'BASE_SEPOLIA,MODE_SEPOLIA', +# 'BASE_SEPOLIA,MODE_SEPOLIA', 'BASE_SEPOLIA,OPTIMISM_SEPOLIA', 'BASE_SEPOLIA,GNOSIS_CHIADO', diff --git a/integration-tests/ccip-tests/testconfig/tomls/prod-testnet/soak-release-testing_token_transfer_with_native_feetoken.toml b/integration-tests/ccip-tests/testconfig/tomls/prod-testnet/soak-release-testing_token_transfer_with_native_feetoken.toml index 6a6aa205fce..9c22063f11d 100644 --- a/integration-tests/ccip-tests/testconfig/tomls/prod-testnet/soak-release-testing_token_transfer_with_native_feetoken.toml +++ b/integration-tests/ccip-tests/testconfig/tomls/prod-testnet/soak-release-testing_token_transfer_with_native_feetoken.toml @@ -26,59 +26,68 @@ Data = """ "wrapped_native": "0xE591bf0A0CF924A0674d7792db046B23CEbF5f34", "src_contracts": { "Avalanche Fuji": { - "on_ramp": "0x1Cb56374296ED19E86F68fA437ee679FD7798DaA", + "on_ramp": "0x20C8c9F13C6AA402F2545AD15fB7a9CdE9108618", "deployed_at": 0 }, "Base Sepolia": { - "on_ramp": "0x7854E73C73e7F9bb5b0D5B4861E997f4C6E8dcC6", + "on_ramp": "0xF1623862e4c9f9Fba1Ac0181C4fF53B4f958F065", "deployed_at": 0 }, "Gnosis Chiado": { - "on_ramp": "0x973CbE752258D32AE82b60CD1CB656Eebb588dF0", + "on_ramp": "0xEfe02eB139D2A82e38184d28E3b65bb176F26ebD", + "deployed_at": 0 + }, + "Metis Sepolia": { + "on_ramp": "0x46a79a6a4B07FD3FC14ea8299A99FE29576776E2", "deployed_at": 0 }, "Optimism Sepolia": { - "on_ramp": "0x701Fe16916dd21EFE2f535CA59611D818B017877", + "on_ramp": "0x0B0c08Bb2fA2EbDe25817009ee39eA1ad9bCaC58", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0x4205E1Ca0202A248A5D42F5975A8FE56F3E302e9", + "on_ramp": "0x64d78F20aD987c7D52FdCB8FB0777bD00de53210", "deployed_at": 0 }, "WeMix Testnet": { - "on_ramp": "0xBD4106fBE4699FE212A34Cc21b10BFf22b02d959", + "on_ramp": "0x2F3Daf77A663603826c7750E956b6555DE6f8250", "deployed_at": 0 } }, "dest_contracts": { "Avalanche Fuji": { - "off_ramp": "0xcab0EF91Bee323d1A617c0a027eE753aFd6997E4", - "commit_store": "0x0d90b9b96cBFa0D01635ce12982ccE1b70827c7a", + "off_ramp": "0x7245a5947E2F32B66aF74F4dAF91718ea19afaDf", + "commit_store": "0x490AC77BbB26f4FFf876Ded07bCAE6DBe685be98", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Base Sepolia": { - "off_ramp": "0xc1982985720B959E66c19b64F783361Eb9B60F26", - "commit_store": "0x28F66bB336f6db713d6ad2a3bd1B7a531282A159", + "off_ramp": "0xF2aB55Ed448A6fAD75013900568B6a927f52e5e0", + "commit_store": "0x833E5995A7422120f445f9B8dD1b9BD1037c68E5", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Gnosis Chiado": { - "off_ramp": "0x935C26F9a9122E5F9a27f2d3803e74c75B94f5a3", - "commit_store": "0xEdb963Ec5c2E5AbdFdCF137eF44A445a7fa4787A", + "off_ramp": "0xc1Cb31493fB2386aDC1Ea01F935F2bd8a8dCA388", + "commit_store": "0xe21896657A65c8959F16E1c3Ee5713E85d9EA020", + "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" + }, + "Metis Sepolia": { + "off_ramp": "0xc47143147Fd62A09618C695c7C03714aCe8db1Cf", + "commit_store": "0x2F42e7B22eE5885158916624Ff00608f4C82313D", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Optimism Sepolia": { - "off_ramp": "0xfD404A89e1d195F0c65be1A9042C77745197659e", - "commit_store": "0x84B7B012c95f8A152B44Ab3e952f2dEE424fA8e1", + "off_ramp": "0x4a7E91EF68758aaC66AeD656267bbCD0f9b6c019", + "commit_store": "0xb0A09D6A15FF7A0142DF3F62b2C4D1e11D763Ed0", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0x1c71f141b4630EBE52d6aF4894812960abE207eB", - "commit_store": "0xaB0c8Ba51E7Fa3E5693a4Fbb39473520FD85d173", + "off_ramp": "0xBed6e9131916d724418C8a6FE810F727302a5c00", + "commit_store": "0xdDb61B6bDa1B46d88f556440fABFe219F6da4F3a", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "WeMix Testnet": { - "off_ramp": "0x262e16C8D42aa07bE13e58F81e7D9F62F6DE2830", - "commit_store": "0xc132eFAf929299E5ee704Fa6D9796CFa23Bb8b2C", + "off_ramp": "0x11d486E92d291704D1E25cDbAeee687237247826", + "commit_store": "0xece9353095aC79Db9DD5bf2022690Fa6BffeBCAc", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -98,77 +107,77 @@ Data = """ "wrapped_native": "0xd00ae08403B9bbb9124bB305C09058E32C39A48c", "src_contracts": { "Arbitrum Sepolia": { - "on_ramp": "0x8bB16BEDbFd62D1f905ACe8DBBF2954c8EEB4f66", + "on_ramp": "0xa9946BA30DAeC98745755e4410d6e8E894Edc53B", "deployed_at": 0 }, "BSC Testnet": { - "on_ramp": "0xF25ECF1Aad9B2E43EDc2960cF66f325783245535", + "on_ramp": "0x906BC7D10947A94ba0252e8C2E34868A466c03ED", "deployed_at": 0 }, "Base Sepolia": { - "on_ramp": "0x1A674645f3EB4147543FCA7d40C5719cbd997362", + "on_ramp": "0x0aEc1AC9F6D0c21332d7a66dDF1Fbcb32cF3B0B3", "deployed_at": 0 }, "Gnosis Chiado": { - "on_ramp": "0x1532e5b204ee2b2244170c78E743CB9c168F4DF9", + "on_ramp": "0x3dda45E731EC1db18B95651d1AF1868aa878468D", "deployed_at": 0 }, "Optimism Sepolia": { - "on_ramp": "0xC334DE5b020e056d0fE766dE46e8d9f306Ffa1E2", + "on_ramp": "0x2a9EFdc9F93D9b822129038EFCa4B63Adf3f7FB5", "deployed_at": 0 }, "Polygon Amoy": { - "on_ramp": "0x610F76A35E17DA4542518D85FfEa12645eF111Fc", + "on_ramp": "0xA82b9ACAcFA6FaB1FD721e7a748A30E3001351F9", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0x5724B4Cc39a9690135F7273b44Dfd3BA6c0c69aD", + "on_ramp": "0x75b9a75Ee1fFef6BE7c4F842a041De7c6153CF4E", "deployed_at": 0 }, "WeMix Testnet": { - "on_ramp": "0x677B5ab5C8522d929166c064d5700F147b15fa33", + "on_ramp": "0x1ff99E67986E83bb5BA34143BaA2735853e5738c", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Sepolia": { - "off_ramp": "0x90A74072e7B0c2d59e13aB4d8f93c8198c413194", - "commit_store": "0xf3458CFd2fdf4a6CF0Ce296d520DD21eB194828b", + "off_ramp": "0xd88CBA0612f2Ce611BF6d073A94C8FD7E70B4fBd", + "commit_store": "0x9b8279E352bC167F714eef96A4C436bE996643cE", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "BSC Testnet": { - "off_ramp": "0x10b28009E5D776F1f5AAA73941CE8953B8f42d26", - "commit_store": "0xacDD582F271eCF22FAd6764cCDe1c4a534b732A8", + "off_ramp": "0x9c40A73F5C7454BB7C178AFa56Ee30bFB2DCf7E6", + "commit_store": "0xE5611af1d63340b711B0468a976651Fb79B17870", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Base Sepolia": { - "off_ramp": "0xdBdE8510226d1E060A3bf982b67705C67f5697e2", - "commit_store": "0x8Ee73BC9492b4182D289E5C1e66e40CD876CC00F", + "off_ramp": "0xf8de9d5924CFD28e31a53B63B4903436D9818d69", + "commit_store": "0xDD7CfECE1bb4e8aC2E8b8281CFE1D44247119471", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Gnosis Chiado": { - "off_ramp": "0x56dF55aF5F0A4689f3364230587a68eD6A314fAd", - "commit_store": "0xabA7ff98094c4cc7A075812EefF2CD21f6400235", + "off_ramp": "0x3F5035039C23cDAF032C64c084Dc70F811E62ddD", + "commit_store": "0xf5B0245c7B9e15f0cB0B85FF2B6799a45D61CbaA", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Optimism Sepolia": { - "off_ramp": "0x3d7CbC95DCC33257F14D6Eb780c88Bd56C6335BB", - "commit_store": "0x1fcDC02edDfb405f378ba53cF9E6104feBcB7542", + "off_ramp": "0x1DF9D94C6916918C935E60d2Cb4Ed265Bf778005", + "commit_store": "0xE7eeBE5882609d28C015d0A89DE1ba4f506F4a03", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Polygon Amoy": { - "off_ramp": "0x3e33290B90fD0FF30a3FA138934DF028E4eCA348", - "commit_store": "0xCFe3556Aa42d40be09BD23aa80448a19443BE5B1", + "off_ramp": "0xbeD7F478Ef5627FB2B891fDA29Ca0131f6796D9D", + "commit_store": "0x27a319f58c01380056c86938798aCEAA1AC529e2", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0x9e5e4324F8608D54A50a317832d456a392E4F8C2", - "commit_store": "0x92A51eD3F041B39EbD1e464C1f7cb1e8f8A8c63f", + "off_ramp": "0x01e3D835b4C4697D7F81B9d7Abc89A6E478E4a2f", + "commit_store": "0x4EC313c1Eb620432f42FB5f4Df27f8A566523c1C", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "WeMix Testnet": { - "off_ramp": "0xD0D338318bC6837b091FC7AB5F2a94B7783507d5", - "commit_store": "0xd9D479208235c7355848ff4aF26eB5aacfDC30c6", + "off_ramp": "0x15CcAbf0e3484D4872e25b883163D8cB724d4832", + "commit_store": "0x859f3477B7b4ECc19aDD8cCb19740932F21bD76b", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -188,59 +197,68 @@ Data = """ "wrapped_native": "0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd", "src_contracts": { "Avalanche Fuji": { - "on_ramp": "0xa2515683E99F50ADbE177519A46bb20FfdBaA5de", + "on_ramp": "0x2A6f8Ed2e7b222163ef6EcC2327171B479399ab2", "deployed_at": 0 }, "Base Sepolia": { - "on_ramp": "0x3E807220Ca84b997c0d1928162227b46C618e0c5", + "on_ramp": "0x97856Bf888F6eEDBBd322B28133BCcF9CA9038f6", + "deployed_at": 0 + }, + "Blast Sepolia": { + "on_ramp": "0xd0049BfFc8e2689Df9236FfA393Ccbf7eae4FbbC", "deployed_at": 0 }, "Gnosis Chiado": { - "on_ramp": "0x8735f991d41eA9cA9D2CC75cD201e4B7C866E63e", + "on_ramp": "0x98dEa9e498F2A7aF6c74C915c88A17FbA09b73C2", "deployed_at": 0 }, "Polygon Amoy": { - "on_ramp": "0xf37CcbfC04adc1B56a46B36F811D52C744a1AF78", + "on_ramp": "0x363EB789fE31F08547a847D8C38d9b55C7Cf1903", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0xB1DE44B04C00eaFe9915a3C07a0CaeA4410537dF", + "on_ramp": "0xC1C6438D60AbE9bF4b1F10460184CE9bD312e328", "deployed_at": 0 }, "WeMix Testnet": { - "on_ramp": "0x89268Afc1BEA0782a27ba84124E3F42b196af927", + "on_ramp": "0xbc85704EDb79ea84E9D3C18965F7f6A16B0a0440", "deployed_at": 0 } }, "dest_contracts": { "Avalanche Fuji": { - "off_ramp": "0x6e6fFCb6B4BED91ff0CC8C2e57EC029dA7DB80C2", - "commit_store": "0x38Bc38Bd824b6eE87571f9D3CFbe6D6E28E3Dc62", + "off_ramp": "0x95b66acfaaDF122f4EccE52C0aD4Fd997DD1150C", + "commit_store": "0x3af04b1c1e79A6B8A4577Bb47EC33eD2E66AeB47", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Base Sepolia": { - "off_ramp": "0x2C61FD7E93Dc79422861282145c59B56dFbc3a8c", - "commit_store": "0x42fAe5B3605804CF6d08632d7A25864e24F792Ae", + "off_ramp": "0x0a5147e1Ac38C79c77031194ef64C8B5353F6EE9", + "commit_store": "0x103864D60b33a479EA7D0e23a37e0ce07198f0A9", + "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" + }, + "Blast Sepolia": { + "off_ramp": "0xe1e8473218acCB82FBc24Ccd3C5D2dF166cd04f3", + "commit_store": "0x020B047A5Ca88fDB1ad3bAD9A082760fC7F770b6", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Gnosis Chiado": { - "off_ramp": "0x71a44a60832B0F8B63232C9516e7E6aEc3A373Dc", - "commit_store": "0xAC24299a91b72d1Cb5B31147e3CF54964D896974", + "off_ramp": "0x1F7FEBCBb10420E039C333A60A444c1a442d826C", + "commit_store": "0x23Ae763a64D39d6038431a64Bbc4A670C89d82b9", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Polygon Amoy": { - "off_ramp": "0x63440C7747d37bc6154b5538AE32b54FE0965AfA", - "commit_store": "0xAD22fA198CECfC534927aE1D480c460d5bB3460F", + "off_ramp": "0xAAe325adbc9C5a28e4e94Fef170D55de2CA9aA01", + "commit_store": "0xD173Df3A1b23ec42eA5C4669b9c956Bef230efd1", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0xf1c128Fe52Ea78CcAAB407509292E61ce38C1523", - "commit_store": "0x59dFD870dC4bd76A7B879A4f705Fdcd2595f85f9", + "off_ramp": "0xB513523aee87f838e78b32d2Bacaaf2e94D9f0f9", + "commit_store": "0x21A49164890576504C1f1c4DC9442c42C98771D7", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "WeMix Testnet": { - "off_ramp": "0xfd9B19c3725da5B517aA705B848ff3f21F98280e", - "commit_store": "0x3c1F1412563188aBc8FE3fd53E8F1Cb601CaB4f9", + "off_ramp": "0xc985571900DCa62387f93F882AB550472531f5DB", + "commit_store": "0xac5DACfAb1a512E33c49EFE42502863FC1a4BAB3", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -260,68 +278,68 @@ Data = """ "wrapped_native": "0x4200000000000000000000000000000000000006", "src_contracts": { "Arbitrum Sepolia": { - "on_ramp": "0x58622a80c6DdDc072F2b527a99BE1D0934eb2b50", + "on_ramp": "0xb52eF669d3fCeBee1f31418Facc02a16A6F6B0e5", "deployed_at": 0 }, "Avalanche Fuji": { - "on_ramp": "0xAbA09a1b7b9f13E05A6241292a66793Ec7d43357", + "on_ramp": "0x212e8Fd9cCC330ab54E8141FA7d33967eF1eDafF", "deployed_at": 0 }, "BSC Testnet": { - "on_ramp": "0xD806966beAB5A3C75E5B90CDA4a6922C6A9F0c9d", + "on_ramp": "0xd54B44811AE99a18Cb95B4704ba04a65C0163751", "deployed_at": 0 }, "Gnosis Chiado": { - "on_ramp": "0x2Eff2d1BF5C557d6289D208a7a43608f5E3FeCc2", + "on_ramp": "0xdd0Ee1F20E93a93634AAcE56105E19423881Df56", "deployed_at": 0 }, "Mode Sepolia": { - "on_ramp": "0x3d0115386C01436870a2c47e6297962284E70BA6", + "on_ramp": "0xc59689dFDEF9D953cEFbb58912b304bb38408476", "deployed_at": 0 }, "Optimism Sepolia": { - "on_ramp": "0x3b39Cd9599137f892Ad57A4f54158198D445D147", + "on_ramp": "0x2945D35F428CE564F5455AD0AF28BDFCa67e76Ab", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0x6486906bB2d85A6c0cCEf2A2831C11A2059ebfea", + "on_ramp": "0x29A1F4ecE9246F0042A9062FB89803fA8B1830cB", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Sepolia": { - "off_ramp": "0xd364C06ac99a82a00d3eFF9F2F78E4Abe4b9baAA", - "commit_store": "0xdE8d0f47a71eA3fDFBD3162271652f2847939097", + "off_ramp": "0x814E735c5DD19240c85E2513DD926Bc3a39f7140", + "commit_store": "0xFc24B204bfA5C65eD8e2Fc02fDe4FeCb62eA8Ac5", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Avalanche Fuji": { - "off_ramp": "0xAd91214efFee446500940c764DF77AF18427294F", - "commit_store": "0x1242b6c5e0e349b8d4BCf0938f961C4B4f7EA3Fa", + "off_ramp": "0x3Ab3a3d35cAC95FfcFCcc127eF01eA8D87b0A64e", + "commit_store": "0x51313B8C068B5227fa7364E6eCB1382Fb751976F", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "BSC Testnet": { - "off_ramp": "0xd5E9508921434e8758f4540D55c1c066b7cc1598", - "commit_store": "0x1a86b29364D1B3fA3386329A361aA98A104b2742", + "off_ramp": "0x827CF69409307Cd4c979e652894C297ad5124ab7", + "commit_store": "0x547eBe6077305c3fdF8dA66c66cc14b0779CE00C", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Gnosis Chiado": { - "off_ramp": "0x9Bb7e398ef9Acfe9cA584C39B1E233Cba62BB9f7", - "commit_store": "0x1F4B82cDebaC5e3a0Dd53183D47e51808B4a64cB", + "off_ramp": "0x8bB08Bc19771C69E739a2078894523b3DC05a05e", + "commit_store": "0xf163Da63bDB8b9C355d41C755E03125988650109", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Mode Sepolia": { - "off_ramp": "0xB26647A23e8b4284375e5C74b77c9557aE709D03", - "commit_store": "0x4b4fEB401d3E613e1D6242E155C83A80BF9ac2C9", + "off_ramp": "0x11E16c71D76E43acbcb496A70966380d905B1E32", + "commit_store": "0xEe19f039FaE3EF0F94971f0B7B187223D952ac13", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Optimism Sepolia": { - "off_ramp": "0x86a3910908eCaAA31Fcd9F0fC8841D8E98f1511d", - "commit_store": "0xE99a87C9b5ed4D2b6060195DEea5106ffF655736", + "off_ramp": "0x8718d1cc138421Dbc1B489CB7884FF68DE7ad867", + "commit_store": "0x3291D453c880E5b59EEd04E600c85268Cd378b7f", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0x189F61D9B886Dd2975D5Abc893c8Cf5f5effda71", - "commit_store": "0xEE7e27346DCD1e711348D0F7f7ECB53a9a3a08a7", + "off_ramp": "0x0ecA23Ef70B828fEDd0A84d2692cB0527B52396A", + "commit_store": "0xA7F84Ec616F8e9Fa593339944E76bda90A9737fE", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -340,15 +358,24 @@ Data = """ "price_registry": "0xc8acE9dF450FaD007755C6C9AB4f0e9c8626E29C", "wrapped_native": "0x4200000000000000000000000000000000000023", "src_contracts": { + "BSC Testnet": { + "on_ramp": "0x6eA6f63b689b5597A0C06a5Eb8DcDFD86383857A", + "deployed_at": 0 + }, "Sepolia Testnet": { - "on_ramp": "0x85Ef19FC4C63c70744995DC38CAAEC185E0c619f", + "on_ramp": "0x154aDEF773a848da8229D81De73a7b0844400ebd", "deployed_at": 0 } }, "dest_contracts": { + "BSC Testnet": { + "off_ramp": "0xd9dE4aCD27E814bfe70CA33d2A4d079e740626Bd", + "commit_store": "0xe8fF7e22c54f76F453d6072A9d3a12B1D9AbA137", + "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" + }, "Sepolia Testnet": { - "off_ramp": "0x92cD24C278D34C726f377703E50875d8f9535dC2", - "commit_store": "0xcE1b4D50CeD56850182Bd58Ace91171cB249B873", + "off_ramp": "0x46DD4e3e2b8a18409646F1C15bf3799a481e67f6", + "commit_store": "0x8250f9E992dda66791dd8b5d356B867ae53382cF", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -368,14 +395,14 @@ Data = """ "wrapped_native": "0x99604d0e2EfE7ABFb58BdE565b5330Bb46Ab3Dca", "src_contracts": { "Sepolia Testnet": { - "on_ramp": "0x16a020c4bbdE363FaB8481262D30516AdbcfcFc8", + "on_ramp": "0x68A4f57A499563192C606a898BAf503A43fcDB4D", "deployed_at": 0 } }, "dest_contracts": { "Sepolia Testnet": { - "off_ramp": "0xa1b97F92D806BA040daf419AFC2765DC723683a4", - "commit_store": "0xcd92C0599Ac515e7588865cC45Eee21A74816aFc", + "off_ramp": "0xF6dB68333D14f6a0c1123cc420ea60980aEDA0Eb", + "commit_store": "0x8f9B63c40891CdF7d1C795625d4260a29bE2bBa0", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -395,68 +422,68 @@ Data = """ "wrapped_native": "0x18c8a7ec7897177E4529065a7E7B0878358B3BfF", "src_contracts": { "Arbitrum Sepolia": { - "on_ramp": "0x473b49fb592B54a4BfCD55d40E048431982879C9", + "on_ramp": "0x94967Ea06C6543Aaba5B90C52B655003ef82e521", "deployed_at": 0 }, "Avalanche Fuji": { - "on_ramp": "0x610F76A35E17DA4542518D85FfEa12645eF111Fc", + "on_ramp": "0x4f3576585e7fCCE5Fc502Bcf3CAdaD22E1194834", "deployed_at": 0 }, "BSC Testnet": { - "on_ramp": "0xE48E6AA1fc7D0411acEA95F8C6CaD972A37721D4", + "on_ramp": "0xB2642B54580140C375c9024e273C575a5f53d02d", "deployed_at": 0 }, "Base Sepolia": { - "on_ramp": "0x41b4A51cAfb699D9504E89d19D71F92E886028a8", + "on_ramp": "0x0E9504907be794620229C196F82CB062A66B7480", "deployed_at": 0 }, "Optimism Sepolia": { - "on_ramp": "0xAae733212981e06D9C978Eb5148F8af03F54b6EF", + "on_ramp": "0xeb86B5b6f5C66eCb58e4Cf98E607b238126505DC", "deployed_at": 0 }, "Polygon Amoy": { - "on_ramp": "0x01800fCDd892e37f7829937271840A6F041bE62E", + "on_ramp": "0xd86F5DF82A2500137Ddeef963028d60E3b5A354D", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0x4ac7FBEc2A7298AbDf0E0F4fDC45015836C4bAFe", + "on_ramp": "0x03691D63C687D09368360e957AFB2F7B4d1651d4", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Sepolia": { - "off_ramp": "0x9aA82DBB53bf02096B771D40e9432A323a78fB26", - "commit_store": "0x5CdbA91aBC0cD81FC56bc10Ad1835C9E5fB38e5F", + "off_ramp": "0x3633Cce99186217d4C7ed64FD455d218b8Cd5D4c", + "commit_store": "0x6e096286548451828c97F1B3E49C402a4934F39a", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Avalanche Fuji": { - "off_ramp": "0x3e33290B90fD0FF30a3FA138934DF028E4eCA348", - "commit_store": "0xCFe3556Aa42d40be09BD23aa80448a19443BE5B1", + "off_ramp": "0x5E4DB2A3c965B9B2A850a75697Bb6a00b4e35ac5", + "commit_store": "0x2489c5a802fE63943f7E3185A0362327B55DDF67", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "BSC Testnet": { - "off_ramp": "0xbc4AD54e91b213D4279af92c0C5518c0b96cf62D", - "commit_store": "0xff84e8Dd4Fd17eaBb23b6AeA6e1981830e54389C", + "off_ramp": "0x2BA72Ba392C08750328635E36757A2c29a9165CA", + "commit_store": "0x08ebd7Cf4ABDC819c74cB45CbA4e291728538D7C", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Base Sepolia": { - "off_ramp": "0x4117953A5ceeF12f5B8C1E973b470ab83a8CebA6", - "commit_store": "0x94ad41296186E81f31e1ed0B1BcF5fa9e1721C27", + "off_ramp": "0x269D28B25Ee081ae5340e2BFE99850E92F1cd522", + "commit_store": "0x8dC9329BD221C89c4989d98c38Ff2Cc3dF92d14b", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Optimism Sepolia": { - "off_ramp": "0x33d2898F8fb7714FD1661791766f40754982a343", - "commit_store": "0x55d6Df194472f02CD481e506A277c4A29D0D1bCc", + "off_ramp": "0xd93B571ae9CaF43d70b2b53fFD55e035Db641e31", + "commit_store": "0x42C1093b9DdE8d0CD58859C610dc239B66bE26de", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Polygon Amoy": { - "off_ramp": "0x450543b1d85ca79885851D7b74dc982981b78229", - "commit_store": "0x23B79d940A769FE31b4C867A8BAE80117f24Ca81", + "off_ramp": "0x87F9b8382611ACD01d5696a1f5b05B888e55B0Cc", + "commit_store": "0x29AC46227908d31A9BdDe82c0A4a6c52D802f145", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0xbf9036529123DE264bFA0FC7362fE25B650D4B16", - "commit_store": "0x5f7F1abD5c5EdaF2636D58B980e85355AF0Ef80d", + "off_ramp": "0x9aa734100C425309091dAE18154e0356B82d477a", + "commit_store": "0x7cDd533B82f4c32FAE7f551C37b1490909817C45", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -476,14 +503,14 @@ Data = """ "wrapped_native": "0x4200000000000000000000000000000000000001", "src_contracts": { "WeMix Testnet": { - "on_ramp": "0x6ea155Fc77566D9dcE01B8aa5D7968665dc4f0C5", + "on_ramp": "0xa81418c332d3E04338B058Ab39b1baf53029F638", "deployed_at": 0 } }, "dest_contracts": { "WeMix Testnet": { - "off_ramp": "0xB602B6E5Caf08ac0C920EAE585aed100a8cF6f3B", - "commit_store": "0x89D5b13908b9063abCC6791dc724bF7B7c93634C", + "off_ramp": "0x42Dde725C4f05C237a00B582Bb7457e208d3A17C", + "commit_store": "0xb116E9a90534354dA59CF93a87c1E9711c0Aaa2c", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -502,15 +529,24 @@ Data = """ "price_registry": "0x5DCE866b3ae6E0Ed153f0e149D7203A1B266cdF5", "wrapped_native": "0x5c48e07062aC4E2Cf4b9A768a711Aef18e8fbdA0", "src_contracts": { + "Arbitrum Sepolia": { + "on_ramp": "0x2eb69889cc979c0Be120813FcE2f1558efF4ceB5", + "deployed_at": 0 + }, "Sepolia Testnet": { - "on_ramp": "0x2Eff2d1BF5C557d6289D208a7a43608f5E3FeCc2", + "on_ramp": "0xE0dFc15C0CDf607b2088D0B641E00eA0B418124C", "deployed_at": 0 } }, "dest_contracts": { + "Arbitrum Sepolia": { + "off_ramp": "0x839b5dEA3e084790F580E9DfCE8CCfDf49c5835e", + "commit_store": "0xdF38C8aD34C379165f98A75a6894790bB5a16b1D", + "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" + }, "Sepolia Testnet": { - "off_ramp": "0x9Bb7e398ef9Acfe9cA584C39B1E233Cba62BB9f7", - "commit_store": "0x1F4B82cDebaC5e3a0Dd53183D47e51808B4a64cB", + "off_ramp": "0x72130De9A85e9C61151253aFF8801Bb3242A00a9", + "commit_store": "0x8F6D64280C379F680Ff0c3278f340D72a465FAAc", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -530,23 +566,23 @@ Data = """ "wrapped_native": "0x4200000000000000000000000000000000000006", "src_contracts": { "Base Sepolia": { - "on_ramp": "0x73f7E074bd7291706a0C5412f51DB46441B1aDCB", + "on_ramp": "0x48ACE2319f643584B77C21476a6c664D7F13a107", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0xfFdE9E8c34A27BEBeaCcAcB7b3044A0A364455C9", + "on_ramp": "0xb821885731414497d705dc56325f18AA33e612dC", "deployed_at": 0 } }, "dest_contracts": { "Base Sepolia": { - "off_ramp": "0x137a38c6b1Ad20101F93516aB2159Df525309168", - "commit_store": "0x8F43d867969F14619895d71E0A5b89E0bb20bF70", + "off_ramp": "0xC6b69Fa9eeBc55e64eBc68371Fbd41ff73756F17", + "commit_store": "0xaA6691EA9110409a29C2E665174b4b2fe694cE67", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0xcD44cec849B6a8eBd5551D6DFeEcA452257Dfe4d", - "commit_store": "0xbA66f08733E6715D33edDfb5a5947676bb45d0e0", + "off_ramp": "0x35dE2C381a2fF8a26c8ae94145be3A9cA8C83600", + "commit_store": "0xE7e60DAee094416b8ab2083047a893c4c4290c48", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -566,68 +602,68 @@ Data = """ "wrapped_native": "0x4200000000000000000000000000000000000006", "src_contracts": { "Arbitrum Sepolia": { - "on_ramp": "0x1a86b29364D1B3fA3386329A361aA98A104b2742", + "on_ramp": "0x6B36c9CD74E760088817a047C3460dEdFfe9a11A", "deployed_at": 0 }, "Avalanche Fuji": { - "on_ramp": "0x6b38CC6Fa938D5AB09Bdf0CFe580E226fDD793cE", + "on_ramp": "0x91a144F570ABA7FB7079Fb187A267390E0cc7367", "deployed_at": 0 }, "Base Sepolia": { - "on_ramp": "0xe284D2315a28c4d62C419e8474dC457b219DB969", + "on_ramp": "0x6D22953cdEf8B0C9F0976Cfa52c33B198fEc5881", "deployed_at": 0 }, "Gnosis Chiado": { - "on_ramp": "0x835a5b8e6CA17c2bB5A336c93a4E22478E6F1C8A", + "on_ramp": "0xec7D9A84A6d4556056975BE50Cdc97bAa9313632", "deployed_at": 0 }, "Polygon Amoy": { - "on_ramp": "0x2Cf26fb01E9ccDb831414B766287c0A9e4551089", + "on_ramp": "0x9E09C2A7D6B9F88c62f0E2Af4cd62dF3F4c326F1", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0xC8b93b46BF682c39B3F65Aa1c135bC8A95A5E43a", + "on_ramp": "0x54b32C2aCb4451c6cF66bcbd856d8A7Cc2263531", "deployed_at": 0 }, "WeMix Testnet": { - "on_ramp": "0xc7E53f6aB982af7A7C3e470c8cCa283d3399BDAd", + "on_ramp": "0xB9Ef21C04d8340b223e9C1d7a09f332609c70300", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Sepolia": { - "off_ramp": "0xDc2c7A3d8068C6F09F0F3648d24C84e372F6014d", - "commit_store": "0xb1aFb5cbE3c29b5Db71F21442BA9EfD450BC23C3", + "off_ramp": "0xF35e2d1457749374453e44B06268aD3f78b133b3", + "commit_store": "0x4bd755d86E25dD4093CAa5639CfDab81571259CA", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Avalanche Fuji": { - "off_ramp": "0x1F350718e015EB20E5065C09F4A7a3f66888aEeD", - "commit_store": "0x98650A8EB59f75D93563aB34FcF603b1A30e4CBF", + "off_ramp": "0xCb2266c2118b1f30D15CBeB3a885531ABaA1b556", + "commit_store": "0x5Ded92E2CF71a8fF7644a67850F061c38B31BfB4", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Base Sepolia": { - "off_ramp": "0x0a750ca77369e03613d7640548F4b2b1c695c3Bb", - "commit_store": "0x8fEBC74C26129C8d7E60288C6dCCc75eb494aA3C", + "off_ramp": "0x960c62A491C30d0a60fD74a59d35B9C02697AdaA", + "commit_store": "0x06963745B3839B998288D1a46a46Ec25991A3D5E", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Gnosis Chiado": { - "off_ramp": "0xCE2CE7F940B7c839384e5D7e079A6aE80e8AD6dB", - "commit_store": "0x1b9D78Ec1CEEC439F0b7eA6C428A1a607D9FA7e4", + "off_ramp": "0x7d6721c2E85560F0A233255D3d332AcF6f850d96", + "commit_store": "0xaC00661cAB5161d9B4746DFb7A028d97981aB2c5", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Polygon Amoy": { - "off_ramp": "0xD667b5706592D0b040C78fEe5EE17D243b7dCB41", - "commit_store": "0x96101BA5250EE9295c193693C1e08A55bC593664", + "off_ramp": "0x4cEeFa55AF23dFD27Cf926e8eFB1D1bCcD24526E", + "commit_store": "0xaD3943BdECbf4ae7d6E51aB0FD06bbC604bB7b95", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0x260AF9b83e0d2Bb6C9015fC9f0BfF8858A0CCE68", - "commit_store": "0x7a0bB92Bc8663abe6296d0162A9b41a2Cb2E0358", + "off_ramp": "0x2aF9B10A5972D0c36f4d8F85773052c104E319B2", + "commit_store": "0x82FCF55b9e9bAb3066c2863F12a02bBc2Ba33F2F", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "WeMix Testnet": { - "off_ramp": "0x9C08B7712af0344188aa5087D9e6aD0f47191037", - "commit_store": "0x4BE6DB0B884169a6A207fe5cad01eB4C025a13dB", + "off_ramp": "0x0FA15Bc42D4999d964CBf0161489Bd392DEE834e", + "commit_store": "0x37760F99a5b91884C9D89a06408f532aEbb0e674", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -647,59 +683,59 @@ Data = """ "wrapped_native": "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9", "src_contracts": { "Avalanche Fuji": { - "on_ramp": "0x8Fb98b3837578aceEA32b454f3221FE18D7Ce903", + "on_ramp": "0xad6A94CFB51e7DE30FD21F417E4cBf70D3AdaD30", "deployed_at": 0 }, "BSC Testnet": { - "on_ramp": "0xC6683ac4a0F62803Bec89a5355B36495ddF2C38b", + "on_ramp": "0x28EC0a9C90360F55C2a9DaD5901b074C257904ca", "deployed_at": 0 }, "Gnosis Chiado": { - "on_ramp": "0x2331F6D614C9Fd613Ff59a1aB727f1EDf6c37A68", + "on_ramp": "0x9DF611536f124278Ce968c476BDb10A66E54ecfE", "deployed_at": 0 }, "Optimism Sepolia": { - "on_ramp": "0xA52cDAeb43803A80B3c0C2296f5cFe57e695BE11", + "on_ramp": "0x600f00aef9b8ED8EDBd7284B5F04a1932c3408aF", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0x35347A2fC1f2a4c5Eae03339040d0b83b09e6FDA", + "on_ramp": "0x719Aef2C63376AdeCD62D2b59D54682aFBde914a", "deployed_at": 0 }, "WeMix Testnet": { - "on_ramp": "0x26546096F64B5eF9A1DcDAe70Df6F4f8c2E10C61", + "on_ramp": "0x7D6c93E49E46cc983a677c283EAb27CbbC94e3C4", "deployed_at": 0 } }, "dest_contracts": { "Avalanche Fuji": { - "off_ramp": "0xa733ce82a84335b2E9D864312225B0F3D5d80600", - "commit_store": "0x09B0F93fC2111aE439e853884173AC5b2F809885", + "off_ramp": "0xAc56Df7F5fbde0DeeB1C0d397A150EDD5EE68625", + "commit_store": "0x8AF56D1c76B8c8CeE451a0a654D130e4050B993e", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "BSC Testnet": { - "off_ramp": "0x948dfaa4842fc23e0e362Fe8D4396AaE4E6DF7EA", - "commit_store": "0x7F4e739D40E58BBd59dAD388171d18e37B26326f", + "off_ramp": "0x40Ba47ea59D80DDd35E3a997AA520FBa0553dddc", + "commit_store": "0x8afe532517b39bA109d1A768E1Ad8b5C6485abF5", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Gnosis Chiado": { - "off_ramp": "0x17c542a28e08AEF5697251601C7b2B621d153D42", - "commit_store": "0x811250c20fAB9a1b7ca245453aC214ba637fBEB5", + "off_ramp": "0x7B968B2aDFd31765dAAD80d66c83F9D7006BFFd5", + "commit_store": "0xBc70551B5624BaF8cdCB84136198561C9cf5C176", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Optimism Sepolia": { - "off_ramp": "0xfFdE9E8c34A27BEBeaCcAcB7b3044A0A364455C9", - "commit_store": "0x74ED442ad211050e9C05Dc9A267E037E3d74A03B", + "off_ramp": "0xAA755Ef570986feEb6522377077e549e3013843E", + "commit_store": "0x5C7827EcE6a51AdaC36ef71aC01706deb1C7130d", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0xFb04129aD1EEDB741CC705ebC1978a7aB63e51f6", - "commit_store": "0x63f875240149d29136053C954Ca164a9BfA81F77", + "off_ramp": "0x7Ad494C173f5845c6B4028a06cDcC6d3108bc960", + "commit_store": "0x104A1c8b05D37fE732094595Fe696AFc7EAB8668", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "WeMix Testnet": { - "off_ramp": "0xdE8451E952Eb43350614839cCAA84f7C8701a09C", - "commit_store": "0xaCdaBa07ECad81dc634458b98673931DD9d3Bc14", + "off_ramp": "0xa85481273f8C112e96ED7476202F06D6131cf069", + "commit_store": "0x9FdF1D555e37dB09B0d151FEa53c134C88C4DeFd", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -719,122 +755,122 @@ Data = """ "wrapped_native": "0x097D90c9d3E0B50Ca60e1ae45F6A81010f9FB534", "src_contracts": { "Arbitrum Sepolia": { - "on_ramp": "0xe4Dd3B16E09c016402585a8aDFdB4A18f772a07e", + "on_ramp": "0xBc09627e58989Ba8F1eDA775e486467d2A00944F", "deployed_at": 0 }, "Avalanche Fuji": { - "on_ramp": "0x0477cA0a35eE05D3f9f424d88bC0977ceCf339D4", + "on_ramp": "0x12492154714fBD28F28219f6fc4315d19de1025B", "deployed_at": 0 }, "BSC Testnet": { - "on_ramp": "0xD990f8aFA5BCB02f95eEd88ecB7C68f5998bD618", + "on_ramp": "0x7a75b3818412fe0028590feE8270ba9E3fd01DBe", "deployed_at": 0 }, "Base Sepolia": { - "on_ramp": "0x2B70a05320cB069e0fB55084D402343F832556E7", + "on_ramp": "0x8F35B097022135E0F46831f798a240Cc8c4b0B01", "deployed_at": 0 }, "Blast Sepolia": { - "on_ramp": "0xDB75E9D9ca7577CcBd7232741be954cf26194a66", + "on_ramp": "0x4ADA60556dA05FcF53a79359e37a3E13FebA22Bf", "deployed_at": 0 }, "Celo Alfajores": { - "on_ramp": "0x3C86d16F52C10B2ff6696a0e1b8E0BcfCC085948", + "on_ramp": "0x1163D1F7D75eEb1C4f4c6912d3cF9642027aFD30", "deployed_at": 0 }, "Gnosis Chiado": { - "on_ramp": "0x3E842E3A79A00AFdd03B52390B1caC6306Ea257E", + "on_ramp": "0x831A7DbE6af8601427A0ADa89b642d4b59007eED", "deployed_at": 0 }, "Metis Sepolia": { - "on_ramp": "0x1C4640914cd57c5f02a68048A0fbb0E12d904223", + "on_ramp": "0xabB5A4f99DFEb4a3912e8Acc0660A008c76dA8c3", "deployed_at": 0 }, "Mode Sepolia": { - "on_ramp": "0xc630fbD4D0F6AEB00aD0793FB827b54fBB78e981", + "on_ramp": "0x2Eb0842925fb7aA6045e951e98e8b4b3aFFaBB54", "deployed_at": 0 }, "Optimism Sepolia": { - "on_ramp": "0x69CaB5A0a08a12BaFD8f5B195989D709E396Ed4d", + "on_ramp": "0xACDfd7a98d853FA3914047Cd46e7f5D53BBC9FbB", "deployed_at": 0 }, "Polygon Amoy": { - "on_ramp": "0x9f656e0361Fb5Df2ac446102c8aB31855B591692", + "on_ramp": "0xf9765c80F6448e6d4d02BeF4a6b4152131A2F513", "deployed_at": 0 }, "WeMix Testnet": { - "on_ramp": "0xedFc22336Eb0B9B11Ff37C07777db27BCcDe3C65", + "on_ramp": "0xd72c3c132B76F5D232C37dF3bF8f04392D552e0F", "deployed_at": 0 }, "ZKSync Sepolia": { - "on_ramp": "0x1Acb3A885feA37bdA30AB99b99327b14391f500F", + "on_ramp": "0xA2865E4f36760f5fa5c8F958336120f2DF0d974b", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Sepolia": { - "off_ramp": "0xF18896AB20a09A29e64fdEbA99FDb8EC328f43b1", - "commit_store": "0x93Ff9Dd39Dc01eac1fc4d2c9211D95Ee458CAB94", + "off_ramp": "0xD2f5edfD4561d6E7599F6c6888Bd353cAFd0c55E", + "commit_store": "0x240420BC6bCDc067e668c7492D69fe06B3CF80cE", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Avalanche Fuji": { - "off_ramp": "0x000b26f604eAadC3D874a4404bde6D64a97d95ca", - "commit_store": "0x2dD9273F8208B8393350508131270A6574A69784", + "off_ramp": "0x1DEBa99dC8e2A77832461BD386d83D9FCb133137", + "commit_store": "0x139E06b6dBB1a0C41A1686C091795879c943765A", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "BSC Testnet": { - "off_ramp": "0xdE2d8E126e08d675fCD7fFa5a6CE49925f3Dc692", - "commit_store": "0x0050ac355a82caB31194507f94174297bf0655A7", + "off_ramp": "0x04305BD9D9CA6730517f79c3D9c6828BC2D25Ecb", + "commit_store": "0x32edD59840CD9e474A280cf1707439F2Bd5872d4", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Base Sepolia": { - "off_ramp": "0x31c0B81832B333419f0DfD36A69F502cF9094aed", - "commit_store": "0xDFcde9d698a2B32DB2537DC9B752Cadd1D846a52", + "off_ramp": "0x662738DC7DE4f7eC63d9f73Cdf9BeA5A58DdcC15", + "commit_store": "0x1e46bAC486Dd878cD57B62845530A52343e39693", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Blast Sepolia": { - "off_ramp": "0x4e897e5cF3aC307F0541B2151A88bCD781c153a3", - "commit_store": "0xB656652841F347178e193951C4663652aCe36B74", + "off_ramp": "0x049A424cF894709f044bc70177F8F6b792adc3F6", + "commit_store": "0x496fE96E440Fc683478a08Df92A1c5E23E412b1C", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Celo Alfajores": { - "off_ramp": "0xB435E0f73c18C5a12C324CA1d02F81F2C3e6e761", - "commit_store": "0xbc5d74957F171e75F92c8F0E1C317A25a56a416D", + "off_ramp": "0x4F146d34Be5E273e576ef158Bd7070eC22708D20", + "commit_store": "0xEeB665281c7ab51d25423898f730Ab078c69dd42", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Gnosis Chiado": { - "off_ramp": "0x7db0115A0b3AAb01d30bf81123c5DD7B0C41Add5", - "commit_store": "0x6640723Ea801178c4383FA016b9781e7ef1016EF", + "off_ramp": "0xB424365EEEEA58A36C7EC858f926f4e8275dDEb3", + "commit_store": "0xE95c2135e3330E953BB49068d32Fcba368Acd456", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Metis Sepolia": { - "off_ramp": "0x4DB693A93E9d5196ECD42EC56CDEAe99dFC652ED", - "commit_store": "0xBfACd78F1412B6f93Ac23409bf456aFec1ABd845", + "off_ramp": "0x46DE6201c258f5948135cd0262f91e48Cb8e3828", + "commit_store": "0x3A27Fd059A4eF0e96B0643283A44a56A8d6CF34A", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Mode Sepolia": { - "off_ramp": "0xbEfd8D65F6643De54F0b1268A3bf4618ff85dcB4", - "commit_store": "0x0C161D3470b45Cc677661654C30ce4AdE6aCD288", + "off_ramp": "0x052E52fdd48719A6084366eA184FC44cb8C25DC2", + "commit_store": "0xBBb9baA314eB023E3F9291Aaf4107B6708341B50", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Optimism Sepolia": { - "off_ramp": "0xD50590D4438411EDe47029b0FD7901A7145E5Df6", - "commit_store": "0xe85EEE9Fd434A7b8a586Ee086E828abF41839479", + "off_ramp": "0xbfa6f6AAE31acB3A285e80026d6475C1a50d1d0F", + "commit_store": "0xB5FbA97Dc61ec68771a92a15360d9C32c9d054E7", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Polygon Amoy": { - "off_ramp": "0x5032cbC0C4aEeD25bb6E45D8B3fAF05DB0688C5d", - "commit_store": "0xe6201C9996Cc7B6E828E10CbE937E693d577D318", + "off_ramp": "0xC3e550B6aaFA5539df8bbCc5B0991e587f438e75", + "commit_store": "0xd57866D97ca26dfaE34088a3EeE4657BAFaac5f9", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "WeMix Testnet": { - "off_ramp": "0x46b639a3C1a4CBfD326b94a2dB7415c27157282f", - "commit_store": "0x7b74554678816b045c1e7409327E086bD436aa46", + "off_ramp": "0x445F41C6aa7e910021786e860d7cfe3E7fcC6640", + "commit_store": "0x307dDE3c696E399b5837456FbCe03b1Ad76D46E3", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "ZKSync Sepolia": { - "off_ramp": "0xBaABd4166C892a1081a26535875A8fA3f22937b2", - "commit_store": "0xfda2e83F4D3f42B7629134ecD6E4b29FB8A7A07B", + "off_ramp": "0x9f5dC467A5c97068A1c2987486B8b768275627eD", + "commit_store": "0x6e4601DA99a046e4bde60d051568E3E1F35E3097", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -854,68 +890,68 @@ Data = """ "wrapped_native": "0xbE3686643c05f00eC46e73da594c78098F7a9Ae7", "src_contracts": { "Arbitrum Sepolia": { - "on_ramp": "0xA9DE3F7A617D67bC50c56baaCb9E0373C15EbfC6", + "on_ramp": "0xa5Be8C619F61505548992D9820c5c485b030C7B0", "deployed_at": 0 }, "Avalanche Fuji": { - "on_ramp": "0xC4aC84da458ba8e40210D2dF94C76E9a41f70069", + "on_ramp": "0x7802B6804bbE7486229ac6D3519f0057c50b40a9", "deployed_at": 0 }, "BSC Testnet": { - "on_ramp": "0x5AD6eed6Be0ffaDCA4105050CF0E584D87E0c2F1", + "on_ramp": "0xd25B8c70CB43022Bdc3aC417E2Cf5159294d95A1", "deployed_at": 0 }, "Kroma Sepolia": { - "on_ramp": "0x428C4dc89b6Bf908B82d77C9CBceA786ea8cc7D0", + "on_ramp": "0x1De2Ca07eEee7F524Fe5edA6C8FFFb79F67b05E9", "deployed_at": 0 }, "Optimism Sepolia": { - "on_ramp": "0x1961a7De751451F410391c251D4D4F98D71B767D", + "on_ramp": "0xB37607C6BD4562F32967dE87D14663D59e3f655d", "deployed_at": 0 }, "Polygon Amoy": { - "on_ramp": "0xd55148e841e76265B484d399eC71b7076ecB1216", + "on_ramp": "0x0c972752F9aC3255cE45b440f9bBC6500676c4e6", "deployed_at": 0 }, "Sepolia Testnet": { - "on_ramp": "0x4d57C6d8037C65fa66D6231844785a428310a735", + "on_ramp": "0x1CD55c65f85681Dfae47c62e6D93340D25006BbB", "deployed_at": 0 } }, "dest_contracts": { "Arbitrum Sepolia": { - "off_ramp": "0xeB1dFaB2464Bf0574D43e764E0c758f92e7ecAFb", - "commit_store": "0xcEaCa2B7890065c485f3E58657358a185Ad33791", + "off_ramp": "0xB5492C8A71130B486fAD1091Db683584767A3957", + "commit_store": "0x1e151ED27E2F48EcFBd5b4374d0fc4869e07c397", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Avalanche Fuji": { - "off_ramp": "0x98e811Df9D2512f1aaf58D534607F583D6c54A4F", - "commit_store": "0x8e538351F6E5B2daF3c90C565C3738bca69a2716", + "off_ramp": "0x60536c757c2BBf72cC68A1933F7e336d03Bb68fe", + "commit_store": "0x2fF725556A04b47eB40BbA11d9F51e8fbbee9F07", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "BSC Testnet": { - "off_ramp": "0xB0e7f0fCcD3c961C473E7c44D939C1cDb4Cec1cB", - "commit_store": "0x4B56D8d53f1A6e0117B09700067De99581aA5542", + "off_ramp": "0xb858077FbE1E55cD7a9092Eb6d5403e068c14EAf", + "commit_store": "0x0EF13C7c95C27A9EA477363a26a09Cff44ba38F9", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Kroma Sepolia": { - "off_ramp": "0xD685D2d224dd6D0Db2D56497db6270D77D9a7966", - "commit_store": "0x7e062D6880779a0347e7742058C1b1Ee4AA0B137", + "off_ramp": "0x78d8154e1216F4791086bFa078Aaf07dcD2bD3C6", + "commit_store": "0xe67AAfbE6025e730Cf47a414BEFf2106FF231dB1", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Optimism Sepolia": { - "off_ramp": "0xA5f97Bc69Bf06e7C37B93265c5457420A92c5F4b", - "commit_store": "0xd48b9213583074f518D8f4336FDf35370D450132", + "off_ramp": "0x995Fc17FC12b67f75D3cBf3bC71BD9af65671E78", + "commit_store": "0xD0825e3D8e61b67a06A93426749d38bCF73Ddb02", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Polygon Amoy": { - "off_ramp": "0x6c8f5999B06FDE17B11E4e3C1062b761766F960f", - "commit_store": "0x957c3c2056192e58A8485eF31165fC490d474239", + "off_ramp": "0xd7b5B4F8FF7a87cC92f7B3058365862859d9E057", + "commit_store": "0xa8f2bb4e831caA5E2794AaD014030E378208d4Bc", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" }, "Sepolia Testnet": { - "off_ramp": "0x8AB103843ED9D28D2C5DAf5FdB9c3e1CE2B6c876", - "commit_store": "0x7d5297c5506ee2A7Ef121Da9bE02b6a6AD30b392", + "off_ramp": "0xa7E2F97Be7798327A49CACD022f33c0E7EfD4897", + "commit_store": "0x6fe69eE4eC9FD768193a40129A3Ba3dF140b2208", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -923,20 +959,26 @@ Data = """ "ZKSync Sepolia": { "is_native_fee_token": true, "fee_token": "0x4317b2eCD41851173175005783322D29E9bAee9E", + "bridge_tokens": [ + "0xFf6d0c1518A8104611f482eb2801CaF4f13c9dEb" + ], + "bridge_tokens_pools": [ + "0xA16cfA090aA6888AE8Beb92F8bfD316DD05767C9" + ], "arm": "0x926b4f90610Aa448f27c8e0Fd0afa4A17B7305F9", "router": "0xA1fdA8aa9A8C4b945C45aD30647b01f07D7A0B16", "price_registry": "0x648B6BB09bE1C5766C8AC578B9B4aC8497eA671F", "wrapped_native": "0x4317b2eCD41851173175005783322D29E9bAee9E", "src_contracts": { "Sepolia Testnet": { - "on_ramp": "0x79a9a5e9e318e8e109776569574814bbf935125a", + "on_ramp": "0xC38536521fde8556351aB7C4D3ea23b64AFbBbab", "deployed_at": 0 } }, "dest_contracts": { "Sepolia Testnet": { - "off_ramp": "0x18FF69051479796175852578725Fc74F58E963F8", - "commit_store": "0xF694b4FD7889480dca3CD41244e8e3395a9EFBa0", + "off_ramp": "0x19Ea9A42cd3682928aF19990dDb3904250D00a1D", + "commit_store": "0x20BF9037927bFadaF028D43ae07d1afccfB8fa85", "receiver_dapp": "0xea387241d834D04CC408f4C2FE7ef2c477E4B3E7" } } @@ -969,30 +1011,54 @@ selected_networks = [ [CCIP.Groups.load] NetworkPairs = [ - 'AVALANCHE_FUJI,ARBITRUM_SEPOLIA', - 'AVALANCHE_FUJI,BASE_SEPOLIA', - 'AVALANCHE_FUJI,OPTIMISM_SEPOLIA', - 'AVALANCHE_FUJI,POLYGON_AMOY', - 'AVALANCHE_FUJI,GNOSIS_CHIADO', + 'SEPOLIA,AVALANCHE_FUJI', +# 'SEPOLIA,BSC_TESTNET', + 'SEPOLIA,CELO_ALFAJORES', + 'SEPOLIA,ARBITRUM_SEPOLIA', + 'SEPOLIA,BASE_SEPOLIA', + 'SEPOLIA,BLAST_SEPOLIA', + 'SEPOLIA,MODE_SEPOLIA', + 'SEPOLIA,OPTIMISM_SEPOLIA', + 'SEPOLIA,POLYGON_AMOY', + 'SEPOLIA,WEMIX_TESTNET', + 'SEPOLIA,GNOSIS_CHIADO', + 'SEPOLIA,METIS_SEPOLIA', + 'SEPOLIA,ZKSYNC_SEPOLIA', + +# 'AVALANCHE_FUJI,BSC_TESTNET', +# 'AVALANCHE_FUJI,ARBITRUM_SEPOLIA', +# 'AVALANCHE_FUJI,BASE_SEPOLIA', +# 'AVALANCHE_FUJI,OPTIMISM_SEPOLIA', +# 'AVALANCHE_FUJI,POLYGON_AMOY', +# 'AVALANCHE_FUJI,WEMIX_TESTNET', +# 'AVALANCHE_FUJI,GNOSIS_CHIADO', + +# 'BSC_TESTNET,BASE_SEPOLIA', +# 'BSC_TESTNET,POLYGON_AMOY', +# 'BSC_TESTNET,WEMIX_TESTNET', +# 'BSC_TESTNET,GNOSIS_CHIADO', + 'ARBITRUM_SEPOLIA,BASE_SEPOLIA', 'ARBITRUM_SEPOLIA,OPTIMISM_SEPOLIA', - 'ARBITRUM_SEPOLIA,SEPOLIA', + 'ARBITRUM_SEPOLIA,WEMIX_TESTNET', 'ARBITRUM_SEPOLIA,GNOSIS_CHIADO', + 'BASE_SEPOLIA,MODE_SEPOLIA', 'BASE_SEPOLIA,OPTIMISM_SEPOLIA', 'BASE_SEPOLIA,GNOSIS_CHIADO', - 'SEPOLIA,MODE_SEPOLIA', - 'SEPOLIA,CELO_ALFAJORES', - 'SEPOLIA,METIS_SEPOLIA', - 'SEPOLIA,BLAST_SEPOLIA', - 'SEPOLIA,ZKSYNC_SEPOLIA', - 'KROMA_SEPOLIA,WEMIX_TESTNET', + + # 'KROMA_SEPOLIA,WEMIX_TESTNET', + + 'OPTIMISM_SEPOLIA,POLYGON_AMOY', + 'OPTIMISM_SEPOLIA,WEMIX_TESTNET', 'OPTIMISM_SEPOLIA,GNOSIS_CHIADO', - 'BSC_TESTNET,GNOSIS_CHIADO', + + 'POLYGON_AMOY,WEMIX_TESTNET', + 'POLYGON_AMOY,GNOSIS_CHIADO', ] BiDirectionalLane = true -PhaseTimeout = '20m' +PhaseTimeout = '45m' ExistingDeployment = true [CCIP.Groups.load.TokenConfig] @@ -1006,7 +1072,7 @@ TestRunName = 'SoakTest_prod_testnet' FailOnFirstErrorInLoad = true [[CCIP.Groups.load.LoadProfile.MsgProfile.MsgDetails]] -MsgType = 'Data' +MsgType = 'DataWithToken' DestGasLimit = 0 DataLength = 100 NoOfTokens = 1 diff --git a/integration-tests/ccip-tests/testsetups/ccip.go b/integration-tests/ccip-tests/testsetups/ccip.go index fbfbc4c1ccd..be736dca1db 100644 --- a/integration-tests/ccip-tests/testsetups/ccip.go +++ b/integration-tests/ccip-tests/testsetups/ccip.go @@ -308,8 +308,8 @@ func (c *CCIPTestConfig) SetNetworkPairs(lggr zerolog.Logger) error { var newNetworkPairs []NetworkPair denselyConnectedNetworks := make(map[string]struct{}) // if densely connected networks are provided, choose all the network pairs containing the networks mentioned in the list for DenselyConnectedNetworkChainIds - if len(c.TestGroupInput.DenselyConnectedNetworkChainIds) > 0 { - for _, n := range c.TestGroupInput.DenselyConnectedNetworkChainIds { + if len(c.TestGroupInput.DenselyConnectedNetworkChainIDs) > 0 { + for _, n := range c.TestGroupInput.DenselyConnectedNetworkChainIDs { denselyConnectedNetworks[n] = struct{}{} } for _, pair := range c.NetworkPairs { @@ -1155,7 +1155,14 @@ func CCIPDefaultTestSetUp( // we need to set it only once for all the lanes as the attestation path uses regex to match the path for // all messages across all lanes err = actions.SetMockServerWithUSDCAttestation(killgrave, setUpArgs.Env.MockServer, false) - require.NoError(t, err, "failed to set up mock server for attestation") + require.NoError(t, err, "failed to set up mock server for USDC attestation") + } + if pointer.GetBool(setUpArgs.Cfg.TestGroupInput.LBTCMockDeployment) { + // if it's a new LBTC deployment, set up mock server for attestation, + // we need to set it only once for all the lanes as the attestation path uses regex to match the path for + // all messages across all lanes + err = actions.SetMockServerWithLBTCAttestation(killgrave, setUpArgs.Env.MockServer) + require.NoError(t, err, "failed to set up mock server for LBTC attestation") } } // deploy all lane specific contracts diff --git a/integration-tests/ccip-tests/testsetups/test_env.go b/integration-tests/ccip-tests/testsetups/test_env.go index 3c3406a3e5a..3feb8abe9a9 100644 --- a/integration-tests/ccip-tests/testsetups/test_env.go +++ b/integration-tests/ccip-tests/testsetups/test_env.go @@ -240,6 +240,7 @@ func ChainlinkChart( return chainlink.New(0, clProps) } clProps["replicas"] = pointer.GetInt(testInputs.EnvInput.NewCLCluster.NoOfNodes) + _, tomlStr, err := SetNodeConfig( nets, testInputs.EnvInput.NewCLCluster.Common.BaseConfigTOML, @@ -293,6 +294,7 @@ func DeployLocalCluster( require.NoError(t, err, "failed to get default chain config: %w", err) } else { chainConfig.ChainID = int(network.ChainID) + eth1 := ctf_config_types.EthereumVersion_Eth1 geth := ctf_config_types.ExecutionLayer_Geth diff --git a/integration-tests/docker/test_env/cl_node_cluster.go b/integration-tests/docker/test_env/cl_node_cluster.go index 596d1ae270b..369038def57 100644 --- a/integration-tests/docker/test_env/cl_node_cluster.go +++ b/integration-tests/docker/test_env/cl_node_cluster.go @@ -16,9 +16,7 @@ import ( "github.com/smartcontractkit/chainlink/deployment/environment/nodeclient" ) -var ( - ErrGetNodeCSAKeys = "failed get CL node CSA keys" -) +var ErrGetNodeCSAKeys = "failed get CL node CSA keys" type ClCluster struct { Nodes []*ClNode `json:"nodes"` diff --git a/integration-tests/docker/test_env/test_env.go b/integration-tests/docker/test_env/test_env.go index a37b7f813a7..06caea59919 100644 --- a/integration-tests/docker/test_env/test_env.go +++ b/integration-tests/docker/test_env/test_env.go @@ -2,6 +2,7 @@ package test_env import ( "context" + "errors" "fmt" "os" "path/filepath" @@ -193,7 +194,7 @@ func (te *CLClusterTestEnv) Cleanup(opts CleanupOpts) error { } if te.ClCluster == nil || len(te.ClCluster.Nodes) == 0 { - return fmt.Errorf("chainlink nodes are nil, unable cleanup chainlink nodes") + return errors.New("chainlink nodes are nil, unable to cleanup chainlink nodes") } te.logWhetherAllContainersAreRunning() diff --git a/integration-tests/testconfig/default.toml b/integration-tests/testconfig/default.toml index 8180b40ae21..792ee36607a 100644 --- a/integration-tests/testconfig/default.toml +++ b/integration-tests/testconfig/default.toml @@ -356,6 +356,7 @@ gas_price_estimation_enabled = true # how many last blocks to use, when estimating gas for a transaction gas_price_estimation_blocks = 100 # priority of the transaction, can be "fast", "standard" or "slow" (the higher the priority, the higher adjustment factor will be used for gas estimation) [default: "standard"] + gas_price_estimation_tx_priority = "standard" diff --git a/integration-tests/testconfig/testconfig.go b/integration-tests/testconfig/testconfig.go index 19e3f0b7ada..3ec61f42607 100644 --- a/integration-tests/testconfig/testconfig.go +++ b/integration-tests/testconfig/testconfig.go @@ -599,6 +599,17 @@ func (c *TestConfig) readNetworkConfiguration() error { c.PrivateEthereumNetwork.EthereumChainConfig.GenerateGenesisTimestamp() } + for _, network := range networks.MustGetSelectedNetworkConfig(c.Network) { + for _, key := range network.PrivateKeys { + address, err := conversions.PrivateKeyHexToAddress(key) + if err != nil { + return errors.Wrapf(err, "error converting private key to address") + } + c.PrivateEthereumNetwork.EthereumChainConfig.AddressesToFund = append( + c.PrivateEthereumNetwork.EthereumChainConfig.AddressesToFund, address.Hex(), + ) + } + } return nil } diff --git a/integration-tests/types/config/node/defaults/ccip.toml b/integration-tests/types/config/node/defaults/ccip.toml new file mode 100644 index 00000000000..13081a2ca1f --- /dev/null +++ b/integration-tests/types/config/node/defaults/ccip.toml @@ -0,0 +1,23 @@ +[Feature] +LogPoller = true +CCIP = true + +[Database] +MaxIdleConns = 50 +MaxOpenConns = 50 + +[OCR2] +Enabled = true +DefaultTransactionQueueDepth = 0 + +[OCR] +Enabled = false +DefaultTransactionQueueDepth = 0 + +[P2P] +[P2P.V2] +Enabled = true +ListenAddresses = ['0.0.0.0:6690'] +AnnounceAddresses = ['0.0.0.0:6690'] +DeltaDial = '500ms' +DeltaReconcile = '5s' \ No newline at end of file diff --git a/integration-tests/types/testconfigs.go b/integration-tests/types/testconfigs.go index 7a72e9a1dfa..16f7253a2e3 100644 --- a/integration-tests/types/testconfigs.go +++ b/integration-tests/types/testconfigs.go @@ -3,7 +3,6 @@ package types import ( ctf_config "github.com/smartcontractkit/chainlink-testing-framework/lib/config" "github.com/smartcontractkit/chainlink-testing-framework/lib/testreporters" - tc "github.com/smartcontractkit/chainlink/integration-tests/testconfig" )