From dd399fbed1025dfefd73306185353f1964bd44df Mon Sep 17 00:00:00 2001 From: Michalina Date: Tue, 21 Nov 2023 15:46:38 +0100 Subject: [PATCH 1/8] Add Sepolia / Arbitrum Sepolia support for Arbitrum cross-chain MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Goerli testnet currently used by Threshold/Keep for development purposes is planned to become deprecated with the end of year 2023. The testnet that was created to replace it is called [Holešky](https://github.com/eth-clients/holesky), however it will take some time until it gets integrated with by some of the projects we rely on. As a solution, we decided to switch first to another testnet that is currently live - Sepolia. This testnet's EOL is planned for 2026, which gives us plenty of time to move to Holešky before Sepolia gets deprecated. Until Görli is not dead we want to support both testnets. The Goerli -> Sepolia migration means that also L2 testnet basing on Goerli (Base Goerli) needs to be migrated to Sepolia-based chain (Arbitrum Sepolia). At the moment Arbitrum Sepolia is not supported by Wormhole, so deployment of our contracts on that testnet is yet not possible. But we're already adding changes that prepare us for the moment when it will be supported. Once support is confirmed, we'll need to verify if `wormholeChainID` we use in the config is correct for the testnet. --- cross-chain/arbitrum/README.adoc | 6 ++-- .../12_update_wormhole_gateway_mapping.ts | 2 ++ ...th_optimism_in_wormhole_gateway_mapping.ts | 2 ++ ...ith_polygon_in_wormhole_gateway_mapping.ts | 2 ++ ...e_with_base_in_wormhole_gateway_mapping.ts | 2 ++ cross-chain/arbitrum/hardhat.config.ts | 32 +++++++++++++++++++ cross-chain/arbitrum/package.json | 1 + 7 files changed, 44 insertions(+), 3 deletions(-) diff --git a/cross-chain/arbitrum/README.adoc b/cross-chain/arbitrum/README.adoc index 5c4786b1b..d70e7e4e3 100644 --- a/cross-chain/arbitrum/README.adoc +++ b/cross-chain/arbitrum/README.adoc @@ -27,7 +27,7 @@ Wormhole-specific tBTC representation into the canonical `ArbitrumTBTC` token. The deployment scripts are responsible for managing updates of the tBTC gateway addresses across various chains. These addresses are stored in the `external/` -directory for a specific network, such as `arbitrumGoerli/OptimismWormholeGateway.json.` +directory for a specific network, such as `arbitrumSepolia/OptimismWormholeGateway.json.` It is important to note that these addresses should remain constant for the mainnet network. However, there may be instances where a new version of a cross-chain module is deployed to the testing network, which would require a @@ -42,7 +42,7 @@ yarn deploy --network Supported networks: - `hardhat` - for local development -- `arbitrumGoerli` - L2 testing network +- `arbitrumSepolia` - L2 testing network - `arbitrumOne` - L2 mainnet Currently, this module does not deploy any contracts on L1. All the existing @@ -54,6 +54,6 @@ the contracts before running the deployment script. This command produces an `export.json` file containing contract deployment info. Note that for the chains other than `hardhat` the following environment variables are needed: -- `L2_CHAIN_API_URL` - URL to access blockchain services, e.g. `https://arb-goerli.g.alchemy.com/v2/` +- `L2_CHAIN_API_URL` - URL to access blockchain services, e.g. `https://arb-sepolia.g.alchemy.com/v2/` - `L2_ACCOUNTS_PRIVATE_KEYS` - Private keys for the deployer and council `<0xOwnerPrivKey,0xCouncilPrivKey>` - `ARBISCAN_API_KEY` - Arbiscan API key diff --git a/cross-chain/arbitrum/deploy_l2/12_update_wormhole_gateway_mapping.ts b/cross-chain/arbitrum/deploy_l2/12_update_wormhole_gateway_mapping.ts index 512a262f0..c5401d158 100644 --- a/cross-chain/arbitrum/deploy_l2/12_update_wormhole_gateway_mapping.ts +++ b/cross-chain/arbitrum/deploy_l2/12_update_wormhole_gateway_mapping.ts @@ -8,6 +8,8 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { // See https://book.wormhole.com/reference/contracts.html // This ID is valid for both Arbitrum Goerli and Mainnet + // TODO: check if id is correct for Arbitrum Sepolia as well (once Wormhole + // supports that testnet) const wormholeChainID = 23 const ArbitrumWormholeGateway = await deployments.get( diff --git a/cross-chain/arbitrum/deploy_l2/13_update_with_optimism_in_wormhole_gateway_mapping.ts b/cross-chain/arbitrum/deploy_l2/13_update_with_optimism_in_wormhole_gateway_mapping.ts index d78a29ba7..54d523689 100644 --- a/cross-chain/arbitrum/deploy_l2/13_update_with_optimism_in_wormhole_gateway_mapping.ts +++ b/cross-chain/arbitrum/deploy_l2/13_update_with_optimism_in_wormhole_gateway_mapping.ts @@ -12,6 +12,8 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { // See https://book.wormhole.com/reference/contracts.html // This ID is valid for both Optimism Goerli and Mainnet + // TODO: check if id is correct for Optimism Sepolia as well (once Wormhole + // supports that testnet) const optimismWormholeChainID = 24 const optimismWormholeGateway = await deployments.getOrNull( diff --git a/cross-chain/arbitrum/deploy_l2/14_update_with_polygon_in_wormhole_gateway_mapping.ts b/cross-chain/arbitrum/deploy_l2/14_update_with_polygon_in_wormhole_gateway_mapping.ts index 1566d0492..8197708ce 100644 --- a/cross-chain/arbitrum/deploy_l2/14_update_with_polygon_in_wormhole_gateway_mapping.ts +++ b/cross-chain/arbitrum/deploy_l2/14_update_with_polygon_in_wormhole_gateway_mapping.ts @@ -12,6 +12,8 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { // See https://book.wormhole.com/reference/contracts.html // This ID is valid for both Polygon Testnet (Mumbai) and Mainnet + // TODO: check ID for the new L2 Polygon testnet once it's annunced and + // supported by Wormhole const polygonWormholeChainID = 5 const polygonWormholeGateway = await deployments.getOrNull( diff --git a/cross-chain/arbitrum/deploy_l2/15_update_with_base_in_wormhole_gateway_mapping.ts b/cross-chain/arbitrum/deploy_l2/15_update_with_base_in_wormhole_gateway_mapping.ts index bed5ff5ad..02d693c55 100644 --- a/cross-chain/arbitrum/deploy_l2/15_update_with_base_in_wormhole_gateway_mapping.ts +++ b/cross-chain/arbitrum/deploy_l2/15_update_with_base_in_wormhole_gateway_mapping.ts @@ -11,6 +11,8 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { // See https://docs.wormhole.com/wormhole/blockchain-environments/evm#base // This ID is valid for both Base Testnet and Mainnet + // TODO: check if id is correct for Base Sepolia as well (once Wormhole + // supports that testnet) const baseWormholeChainID = 30 const baseWormholeGateway = await deployments.getOrNull("BaseWormholeGateway") diff --git a/cross-chain/arbitrum/hardhat.config.ts b/cross-chain/arbitrum/hardhat.config.ts index cd1cc255e..5fe25006a 100644 --- a/cross-chain/arbitrum/hardhat.config.ts +++ b/cross-chain/arbitrum/hardhat.config.ts @@ -44,6 +44,15 @@ const config: HardhatUserConfig = { : undefined, tags: ["etherscan"], }, + sepolia: { + url: process.env.L1_CHAIN_API_URL || "", + chainId: 11155111, + deploy: ["deploy_l1"], + accounts: process.env.L1_ACCOUNTS_PRIVATE_KEYS + ? process.env.L1_ACCOUNTS_PRIVATE_KEYS.split(",") + : undefined, + tags: ["etherscan"], + }, mainnet: { url: process.env.L1_CHAIN_API_URL || "", chainId: 1, @@ -65,6 +74,19 @@ const config: HardhatUserConfig = { // l1: "goerli", // }, }, + arbitrumSepolia: { + url: process.env.L2_CHAIN_API_URL || "", + chainId: 421614, + deploy: ["deploy_l2"], + accounts: process.env.L2_ACCOUNTS_PRIVATE_KEYS + ? process.env.L2_ACCOUNTS_PRIVATE_KEYS.split(",") + : undefined, + // TODO: uncomment below line once https://github.com/NomicFoundation/hardhat/issues/4582 is resolved + // tags: ["arbiscan"], + // companionNetworks: { + // l1: "sepolia", + // }, + }, arbitrumOne: { url: process.env.L2_CHAIN_API_URL || "", chainId: 42161, @@ -82,24 +104,30 @@ const config: HardhatUserConfig = { external: { deployments: { goerli: ["./external/goerli"], + sepolia: ["./external/sepolia"], mainnet: ["./external/mainnet"], arbitrumGoerli: ["./external/arbitrumGoerli"], + arbitrumSepolia: ["./external/arbitrumSepolia"], arbitrumOne: ["./external/arbitrumOne"], }, }, deploymentArtifactsExport: { goerli: "artifacts/l1", + sepolia: "artifacts/l1", mainnet: "artifacts/l1", arbitrumGoerli: "artifacts/l2", + arbitrumSepolia: "artifacts/l2", arbitrumOne: "artifacts/l2", }, etherscan: { apiKey: { goerli: process.env.ETHERSCAN_API_KEY, + sepolia: process.env.ETHERSCAN_API_KEY, mainnet: process.env.ETHERSCAN_API_KEY, arbitrumGoerli: process.env.ARBISCAN_API_KEY, + arbitrumSepolia: process.env.ARBISCAN_API_KEY, arbitrumOne: process.env.ARBISCAN_API_KEY, }, }, @@ -108,14 +136,18 @@ const config: HardhatUserConfig = { deployer: { default: 1, goerli: 0, + sepolia: 0, arbitrumGoerli: 0, + arbitrumSepolia: 0, mainnet: "0x123694886DBf5Ac94DDA07135349534536D14cAf", arbitrumOne: "0x123694886DBf5Ac94DDA07135349534536D14cAf", }, governance: { default: 2, goerli: 0, + sepolia: 0, arbitrumGoerli: 0, + arbitrumSepolia: 0, mainnet: "0x9f6e831c8f8939dc0c830c6e492e7cef4f9c2f5f", arbitrumOne: "0x9f6e831c8f8939dc0c830c6e492e7cef4f9c2f5f", }, diff --git a/cross-chain/arbitrum/package.json b/cross-chain/arbitrum/package.json index 4a4d91ddd..5ba52e472 100644 --- a/cross-chain/arbitrum/package.json +++ b/cross-chain/arbitrum/package.json @@ -31,6 +31,7 @@ "lint:config:fix": "prettier --write '**/*.@(json|yaml)'", "prepack": "tsc -p tsconfig.export.json && hardhat export-artifacts export/artifacts", "export-artifacts:goerli": "yarn hardhat export-deployment-artifacts --network arbitrumGoerli", + "export-artifacts:sepolia": "yarn hardhat export-deployment-artifacts --network arbitrumSepolia", "export-artifacts:mainnet": "yarn hardhat export-deployment-artifacts --network arbitrumOne", "prepublishOnly": "npm run export-artifacts:$npm_config_network", "test": "hardhat test" From a19169c947a37493b4a72a62a4664579e847a150 Mon Sep 17 00:00:00 2001 From: Michalina Date: Wed, 3 Jan 2024 11:25:09 +0100 Subject: [PATCH 2/8] Add custom `hardhat-verify` config for Arbitrum Sepolia The Arbitrum Sepolia testnet is not on the list of chains supported by the `hardhat-verify` plugin (https://github.com/NomicFoundation/hardhat/blob/main/packages/hardhat-verify/src/internal/chain-config.ts). We're adding a custom configuration that will make the contracts verification possible on that testnet (following the https://hardhat.org/hardhat-runner/plugins/nomicfoundation-hardhat-verify#adding-support-for-other-networks docs). --- cross-chain/arbitrum/hardhat.config.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/cross-chain/arbitrum/hardhat.config.ts b/cross-chain/arbitrum/hardhat.config.ts index 5fe25006a..8afa7fe77 100644 --- a/cross-chain/arbitrum/hardhat.config.ts +++ b/cross-chain/arbitrum/hardhat.config.ts @@ -81,8 +81,7 @@ const config: HardhatUserConfig = { accounts: process.env.L2_ACCOUNTS_PRIVATE_KEYS ? process.env.L2_ACCOUNTS_PRIVATE_KEYS.split(",") : undefined, - // TODO: uncomment below line once https://github.com/NomicFoundation/hardhat/issues/4582 is resolved - // tags: ["arbiscan"], + tags: ["arbiscan"], // companionNetworks: { // l1: "sepolia", // }, @@ -130,6 +129,16 @@ const config: HardhatUserConfig = { arbitrumSepolia: process.env.ARBISCAN_API_KEY, arbitrumOne: process.env.ARBISCAN_API_KEY, }, + customChains: [ + { + network: "arbitrumSepolia", + chainId: 421614, + urls: { + apiURL: "https://api-sepolia.arbiscan.io/api", + browserURL: "https://sepolia.arbiscan.io/", + }, + }, + ], }, namedAccounts: { From f8d59a3c74d1284265832c0afa39fcbb3e41cd47 Mon Sep 17 00:00:00 2001 From: Michalina Date: Thu, 18 Jan 2024 16:57:26 +0100 Subject: [PATCH 3/8] Make `...WormholeChainID` values dependable on the environment Wormhole has added support for Arbitrum Sepolia, Base Sepolia and Optimism Sepolia testnets. We want to modify the config of our deployment scripts so that deployment on Sepolia-based L2s would be possible. As the Chain IDs for Wormhole Sepolia-based networks differ from from IDs for Mainnet and Goerli-based testnets, we need to set the right value of `...WormholeChainID` constant for the the right network we're deploying to. --- .../deploy_l2/12_update_wormhole_gateway_mapping.ts | 10 +++++----- ...pdate_with_optimism_in_wormhole_gateway_mapping.ts | 11 ++++++----- ...update_with_polygon_in_wormhole_gateway_mapping.ts | 7 +++---- ...15_update_with_base_in_wormhole_gateway_mapping.ts | 11 ++++++----- 4 files changed, 20 insertions(+), 19 deletions(-) diff --git a/cross-chain/arbitrum/deploy_l2/12_update_wormhole_gateway_mapping.ts b/cross-chain/arbitrum/deploy_l2/12_update_wormhole_gateway_mapping.ts index c5401d158..8d5ebadb9 100644 --- a/cross-chain/arbitrum/deploy_l2/12_update_wormhole_gateway_mapping.ts +++ b/cross-chain/arbitrum/deploy_l2/12_update_wormhole_gateway_mapping.ts @@ -6,11 +6,11 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { const { execute } = deployments const { deployer } = await getNamedAccounts() - // See https://book.wormhole.com/reference/contracts.html - // This ID is valid for both Arbitrum Goerli and Mainnet - // TODO: check if id is correct for Arbitrum Sepolia as well (once Wormhole - // supports that testnet) - const wormholeChainID = 23 + // See https://docs.wormhole.com/wormhole/blockchain-environments/evm#arbitrum + // and https://docs.wormhole.com/wormhole/blockchain-environments/evm#arbitrum-sepolia + // The value `23` is valid for both Arbitrum Goerli and Arbitrum Mainnet. The + // value for Arbitrum Sepolia is `10003`. + const wormholeChainID = hre.network.name === "arbitrumSepolia" ? 10003 : 23 const ArbitrumWormholeGateway = await deployments.get( "ArbitrumWormholeGateway" diff --git a/cross-chain/arbitrum/deploy_l2/13_update_with_optimism_in_wormhole_gateway_mapping.ts b/cross-chain/arbitrum/deploy_l2/13_update_with_optimism_in_wormhole_gateway_mapping.ts index 54d523689..5e84cd3c5 100644 --- a/cross-chain/arbitrum/deploy_l2/13_update_with_optimism_in_wormhole_gateway_mapping.ts +++ b/cross-chain/arbitrum/deploy_l2/13_update_with_optimism_in_wormhole_gateway_mapping.ts @@ -10,11 +10,12 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { const fakeOptimismWormholeGateway = "0x1af5DC16568EFF2d480a43A77E6C409e497FcFb9" - // See https://book.wormhole.com/reference/contracts.html - // This ID is valid for both Optimism Goerli and Mainnet - // TODO: check if id is correct for Optimism Sepolia as well (once Wormhole - // supports that testnet) - const optimismWormholeChainID = 24 + // See https://docs.wormhole.com/wormhole/blockchain-environments/evm#optimism + // and https://docs.wormhole.com/wormhole/blockchain-environments/evm#optimism-sepolia + // The value `24` is valid for both Optimism Goerli and Optimism Mainnet. The + // value for Optimism Sepolia is `10005`. + const optimismWormholeChainID = + hre.network.name === "arbitrumSepolia" ? 10005 : 24 const optimismWormholeGateway = await deployments.getOrNull( "OptimismWormholeGateway" diff --git a/cross-chain/arbitrum/deploy_l2/14_update_with_polygon_in_wormhole_gateway_mapping.ts b/cross-chain/arbitrum/deploy_l2/14_update_with_polygon_in_wormhole_gateway_mapping.ts index 8197708ce..b9e38ad77 100644 --- a/cross-chain/arbitrum/deploy_l2/14_update_with_polygon_in_wormhole_gateway_mapping.ts +++ b/cross-chain/arbitrum/deploy_l2/14_update_with_polygon_in_wormhole_gateway_mapping.ts @@ -10,10 +10,9 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { const fakePolygonWormholeGateway = "0x1af5DC16568EFF2d480a43A77E6C409e497FcFb9" - // See https://book.wormhole.com/reference/contracts.html - // This ID is valid for both Polygon Testnet (Mumbai) and Mainnet - // TODO: check ID for the new L2 Polygon testnet once it's annunced and - // supported by Wormhole + // This ID is valid for both Polygonn Goerli-based Testnet (Mumbai) and + // Mainnet. Wormhole does not support the Sepolia-based Amoy Testnet yet. + // TODO: Update the ID once the support is added. const polygonWormholeChainID = 5 const polygonWormholeGateway = await deployments.getOrNull( diff --git a/cross-chain/arbitrum/deploy_l2/15_update_with_base_in_wormhole_gateway_mapping.ts b/cross-chain/arbitrum/deploy_l2/15_update_with_base_in_wormhole_gateway_mapping.ts index 02d693c55..4d74abf02 100644 --- a/cross-chain/arbitrum/deploy_l2/15_update_with_base_in_wormhole_gateway_mapping.ts +++ b/cross-chain/arbitrum/deploy_l2/15_update_with_base_in_wormhole_gateway_mapping.ts @@ -9,11 +9,12 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { // Fake BaseWormholeGateway for local development purposes only. const fakeBaseWormholeGateway = "0x1af5DC16568EFF2d480a43A77E6C409e497FcFb9" - // See https://docs.wormhole.com/wormhole/blockchain-environments/evm#base - // This ID is valid for both Base Testnet and Mainnet - // TODO: check if id is correct for Base Sepolia as well (once Wormhole - // supports that testnet) - const baseWormholeChainID = 30 + // See https://docs.wormhole.com/wormhole/blockchain-environments/evm#base and + // https://docs.wormhole.com/wormhole/blockchain-environments/evm#base-sepolia + // The value `30` is valid for both Base Goerli and Base Mainnet. The value + // for Base Sepolia is `10004`. + const baseWormholeChainID = + hre.network.name === "arbitrumSepolia" ? 10004 : 30 const baseWormholeGateway = await deployments.getOrNull("BaseWormholeGateway") From a01e0719135cdb4adce4b370bd87c2112ee5e05f Mon Sep 17 00:00:00 2001 From: Michalina Date: Fri, 26 Jan 2024 12:09:27 +0100 Subject: [PATCH 4/8] Add Sepolia-related `external` contracts Adding Sepolia-related contracts needed for deployment on `arbitrumSepolia` network: * `external/arbitrumSepolia/ArbitrumTokenBridge.json` - address taken from https://docs.wormhole.com/wormhole/blockchain-environments/evm#testnet-contracts-sepolia-421614 * `external/arbitrumSepolia/SolanaWormholeGateway.json` - used the same value as in `arbitrumGoreli` * `external/sepolia/TokenBridge.json` - address taken from https://docs.wormhole.com/wormhole/blockchain-environments/evm#testnet-contracts-sepolia-11155111 NOT included in this commit (but needed for the deployment): * `external/arbitrumSepolia/ArbitrumWormholeTBTC.json` - in order to get the address we need to perform attestation of the Ethereum Sepolia TBTC token on Arbitrum Sepolia (but atm Arbitrum Sepolia is not available on the list of target networks on https://wormhole-foundation.github.io/example-token-bridge-ui/#/register) --- .../arbitrum/external/arbitrumSepolia/ArbitrumTokenBridge.json | 3 +++ .../external/arbitrumSepolia/SolanaWormholeGateway.json | 3 +++ cross-chain/arbitrum/external/sepolia/TokenBridge.json | 3 +++ 3 files changed, 9 insertions(+) create mode 100644 cross-chain/arbitrum/external/arbitrumSepolia/ArbitrumTokenBridge.json create mode 100644 cross-chain/arbitrum/external/arbitrumSepolia/SolanaWormholeGateway.json create mode 100644 cross-chain/arbitrum/external/sepolia/TokenBridge.json diff --git a/cross-chain/arbitrum/external/arbitrumSepolia/ArbitrumTokenBridge.json b/cross-chain/arbitrum/external/arbitrumSepolia/ArbitrumTokenBridge.json new file mode 100644 index 000000000..c28de2e2b --- /dev/null +++ b/cross-chain/arbitrum/external/arbitrumSepolia/ArbitrumTokenBridge.json @@ -0,0 +1,3 @@ +{ + "address": "0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e" +} diff --git a/cross-chain/arbitrum/external/arbitrumSepolia/SolanaWormholeGateway.json b/cross-chain/arbitrum/external/arbitrumSepolia/SolanaWormholeGateway.json new file mode 100644 index 000000000..dee25fa3e --- /dev/null +++ b/cross-chain/arbitrum/external/arbitrumSepolia/SolanaWormholeGateway.json @@ -0,0 +1,3 @@ +{ + "address": "0x69a22dc2e01ecd2ae40864822d4406ff8aed4e2b8932385dabe818422ff67e1b" +} diff --git a/cross-chain/arbitrum/external/sepolia/TokenBridge.json b/cross-chain/arbitrum/external/sepolia/TokenBridge.json new file mode 100644 index 000000000..c09d6e7c2 --- /dev/null +++ b/cross-chain/arbitrum/external/sepolia/TokenBridge.json @@ -0,0 +1,3 @@ +{ + "address": "0xDB5492265f6038831E89f495670FF909aDe94bd9" +} From 981a62d2965936df7ac408fbf7162f3012ab86a5 Mon Sep 17 00:00:00 2001 From: Michalina Date: Wed, 14 Feb 2024 12:05:56 +0100 Subject: [PATCH 5/8] Add `ArbitrumWormholeTBTC.json` after registration in Wormhole Portal Locally deployed portal was used to register TBTC. --- .../external/arbitrumSepolia/ArbitrumWormholeTBTC.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 cross-chain/arbitrum/external/arbitrumSepolia/ArbitrumWormholeTBTC.json diff --git a/cross-chain/arbitrum/external/arbitrumSepolia/ArbitrumWormholeTBTC.json b/cross-chain/arbitrum/external/arbitrumSepolia/ArbitrumWormholeTBTC.json new file mode 100644 index 000000000..e89b2b823 --- /dev/null +++ b/cross-chain/arbitrum/external/arbitrumSepolia/ArbitrumWormholeTBTC.json @@ -0,0 +1,3 @@ +{ + "address": "0xb2f833b35853d238216d6ea0338c252e6a5ee3ec" +} From 0f597de584501252fcb40c680e38367222665a08 Mon Sep 17 00:00:00 2001 From: Michalina Date: Wed, 14 Feb 2024 14:01:10 +0100 Subject: [PATCH 6/8] Add contract artifacts for Arbitrum Sepolia We're adding artifacts for contracts deployed to Arbitrum Sepolia network. --- .../deployments/arbitrumSepolia/.chainId | 1 + .../arbitrumSepolia/ArbitrumTBTC.json | 863 ++++++++++++++++++ .../ArbitrumWormholeGateway.json | 482 ++++++++++ 3 files changed, 1346 insertions(+) create mode 100644 cross-chain/arbitrum/deployments/arbitrumSepolia/.chainId create mode 100644 cross-chain/arbitrum/deployments/arbitrumSepolia/ArbitrumTBTC.json create mode 100644 cross-chain/arbitrum/deployments/arbitrumSepolia/ArbitrumWormholeGateway.json diff --git a/cross-chain/arbitrum/deployments/arbitrumSepolia/.chainId b/cross-chain/arbitrum/deployments/arbitrumSepolia/.chainId new file mode 100644 index 000000000..71ba4d632 --- /dev/null +++ b/cross-chain/arbitrum/deployments/arbitrumSepolia/.chainId @@ -0,0 +1 @@ +421614 \ No newline at end of file diff --git a/cross-chain/arbitrum/deployments/arbitrumSepolia/ArbitrumTBTC.json b/cross-chain/arbitrum/deployments/arbitrumSepolia/ArbitrumTBTC.json new file mode 100644 index 000000000..59d5ba1e5 --- /dev/null +++ b/cross-chain/arbitrum/deployments/arbitrumSepolia/ArbitrumTBTC.json @@ -0,0 +1,863 @@ +{ + "address": "0xb8f31A249bcb45267d06b9E51252c4793B917Cd0", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "guardian", + "type": "address" + } + ], + "name": "GuardianAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "guardian", + "type": "address" + } + ], + "name": "GuardianRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "minter", + "type": "address" + } + ], + "name": "MinterAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "minter", + "type": "address" + } + ], + "name": "MinterRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "guardian", + "type": "address" + } + ], + "name": "addGuardian", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "minter", + "type": "address" + } + ], + "name": "addMinter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getGuardians", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMinters", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "guardians", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "isGuardian", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "isMinter", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "minters", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "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": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20Upgradeable", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "recoverERC20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC721Upgradeable", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "recoverERC721", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "guardian", + "type": "address" + } + ], + "name": "removeGuardian", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "minter", + "type": "address" + } + ], + "name": "removeMinter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "transactionHash": "0x8ecc4738684c4cd58715ed8fd2dcc6a79e9bc64b4235eb15c326a22334a92ffc", + "receipt": { + "to": null, + "from": "0x68ad60CC5e8f3B7cC53beaB321cf0e6036962dBc", + "contractAddress": "0xb8f31A249bcb45267d06b9E51252c4793B917Cd0", + "transactionIndex": 1, + "gasUsed": "3818052", + "logsBloom": "0x00000000000000008000000000000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000202000001000000000000000000000000000000000400020000000000000000000800000000800000000000000001000000400000000200000000000000000002000000000000000080000000000000800000000000000000000000000000000400000000000000000000000000000000000000000020000000000000200020040000000000000400000000000000000020000000000000000000000000000000000000000000000000000000000040000000", + "blockHash": "0x926ae0f0b2e6085539f0424bb2b0eb3ccc7567a3928050968adac5a960e0d002", + "transactionHash": "0x8ecc4738684c4cd58715ed8fd2dcc6a79e9bc64b4235eb15c326a22334a92ffc", + "logs": [ + { + "transactionIndex": 1, + "blockNumber": 14176655, + "transactionHash": "0x8ecc4738684c4cd58715ed8fd2dcc6a79e9bc64b4235eb15c326a22334a92ffc", + "address": "0xb8f31A249bcb45267d06b9E51252c4793B917Cd0", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000001e9e56acdb2987dce23eb6e751c22d4f89296a06" + ], + "data": "0x", + "logIndex": 0, + "blockHash": "0x926ae0f0b2e6085539f0424bb2b0eb3ccc7567a3928050968adac5a960e0d002" + }, + { + "transactionIndex": 1, + "blockNumber": 14176655, + "transactionHash": "0x8ecc4738684c4cd58715ed8fd2dcc6a79e9bc64b4235eb15c326a22334a92ffc", + "address": "0xb8f31A249bcb45267d06b9E51252c4793B917Cd0", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000068ad60cc5e8f3b7cc53beab321cf0e6036962dbc" + ], + "data": "0x", + "logIndex": 1, + "blockHash": "0x926ae0f0b2e6085539f0424bb2b0eb3ccc7567a3928050968adac5a960e0d002" + }, + { + "transactionIndex": 1, + "blockNumber": 14176655, + "transactionHash": "0x8ecc4738684c4cd58715ed8fd2dcc6a79e9bc64b4235eb15c326a22334a92ffc", + "address": "0xb8f31A249bcb45267d06b9E51252c4793B917Cd0", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "logIndex": 2, + "blockHash": "0x926ae0f0b2e6085539f0424bb2b0eb3ccc7567a3928050968adac5a960e0d002" + }, + { + "transactionIndex": 1, + "blockNumber": 14176655, + "transactionHash": "0x8ecc4738684c4cd58715ed8fd2dcc6a79e9bc64b4235eb15c326a22334a92ffc", + "address": "0xb8f31A249bcb45267d06b9E51252c4793B917Cd0", + "topics": [ + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b2f6c5b73239c39360ee0ea95047565dab13e3c7", + "logIndex": 3, + "blockHash": "0x926ae0f0b2e6085539f0424bb2b0eb3ccc7567a3928050968adac5a960e0d002" + } + ], + "blockNumber": 14176655, + "cumulativeGasUsed": "3818052", + "status": 1, + "byzantium": true + }, + "numDeployments": 1, + "implementation": "0x1e9E56Acdb2987DCe23Eb6E751C22d4f89296a06", + "devdoc": "Contract deployed as upgradable proxy" +} \ No newline at end of file diff --git a/cross-chain/arbitrum/deployments/arbitrumSepolia/ArbitrumWormholeGateway.json b/cross-chain/arbitrum/deployments/arbitrumSepolia/ArbitrumWormholeGateway.json new file mode 100644 index 000000000..add6b73c4 --- /dev/null +++ b/cross-chain/arbitrum/deployments/arbitrumSepolia/ArbitrumWormholeGateway.json @@ -0,0 +1,482 @@ +{ + "address": "0xc3D46e0266d95215589DE639cC4E93b79f88fc6C", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "chainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "gateway", + "type": "bytes32" + } + ], + "name": "GatewayAddressUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "mintingLimit", + "type": "uint256" + } + ], + "name": "MintingLimitUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "depositor", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "WormholeTbtcDeposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "WormholeTbtcReceived", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "recipientChain", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "gateway", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "recipient", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "arbiterFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "nonce", + "type": "uint32" + } + ], + "name": "WormholeTbtcSent", + "type": "event" + }, + { + "inputs": [], + "name": "bridge", + "outputs": [ + { + "internalType": "contract IWormholeTokenBridge", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bridgeToken", + "outputs": [ + { + "internalType": "contract IERC20Upgradeable", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_address", + "type": "bytes32" + } + ], + "name": "fromWormholeAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "name": "gateways", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IWormholeTokenBridge", + "name": "_bridge", + "type": "address" + }, + { + "internalType": "contract IERC20Upgradeable", + "name": "_bridgeToken", + "type": "address" + }, + { + "internalType": "contract L2TBTC", + "name": "_tbtc", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "mintedAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "mintingLimit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "encodedVm", + "type": "bytes" + } + ], + "name": "receiveTbtc", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "recipientChain", + "type": "uint16" + }, + { + "internalType": "bytes32", + "name": "recipient", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "arbiterFee", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "nonce", + "type": "uint32" + } + ], + "name": "sendTbtc", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "tbtc", + "outputs": [ + { + "internalType": "contract L2TBTC", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_address", + "type": "address" + } + ], + "name": "toWormholeAddress", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "chainId", + "type": "uint16" + }, + { + "internalType": "bytes32", + "name": "gateway", + "type": "bytes32" + } + ], + "name": "updateGatewayAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_mintingLimit", + "type": "uint256" + } + ], + "name": "updateMintingLimit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "transactionHash": "0x030ac270f4bdb94c1a3bd8813fb127de8c32c053693567b30f65bab6211606ca", + "receipt": { + "to": null, + "from": "0x68ad60CC5e8f3B7cC53beaB321cf0e6036962dBc", + "contractAddress": "0xc3D46e0266d95215589DE639cC4E93b79f88fc6C", + "transactionIndex": 1, + "gasUsed": "3875852", + "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000001000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000202000001000000000000000000000000000000004000020000000000000000000800000000800000000000000000000000400000000208000000000000000000000000000000000080000000000800800000000000000000000010000000000400000000000000000000000000000000000000000020000000000000000020040000000000000400000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x05be574605bd08d9d84721cd228fa3a70f3b39aa7974f30636a39cb600ddac3a", + "transactionHash": "0x030ac270f4bdb94c1a3bd8813fb127de8c32c053693567b30f65bab6211606ca", + "logs": [ + { + "transactionIndex": 1, + "blockNumber": 14176751, + "transactionHash": "0x030ac270f4bdb94c1a3bd8813fb127de8c32c053693567b30f65bab6211606ca", + "address": "0xc3D46e0266d95215589DE639cC4E93b79f88fc6C", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000009a82be743f0120fa24893b1631b6b2817fd94b1d" + ], + "data": "0x", + "logIndex": 0, + "blockHash": "0x05be574605bd08d9d84721cd228fa3a70f3b39aa7974f30636a39cb600ddac3a" + }, + { + "transactionIndex": 1, + "blockNumber": 14176751, + "transactionHash": "0x030ac270f4bdb94c1a3bd8813fb127de8c32c053693567b30f65bab6211606ca", + "address": "0xc3D46e0266d95215589DE639cC4E93b79f88fc6C", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000068ad60cc5e8f3b7cc53beab321cf0e6036962dbc" + ], + "data": "0x", + "logIndex": 1, + "blockHash": "0x05be574605bd08d9d84721cd228fa3a70f3b39aa7974f30636a39cb600ddac3a" + }, + { + "transactionIndex": 1, + "blockNumber": 14176751, + "transactionHash": "0x030ac270f4bdb94c1a3bd8813fb127de8c32c053693567b30f65bab6211606ca", + "address": "0xc3D46e0266d95215589DE639cC4E93b79f88fc6C", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "logIndex": 2, + "blockHash": "0x05be574605bd08d9d84721cd228fa3a70f3b39aa7974f30636a39cb600ddac3a" + }, + { + "transactionIndex": 1, + "blockNumber": 14176751, + "transactionHash": "0x030ac270f4bdb94c1a3bd8813fb127de8c32c053693567b30f65bab6211606ca", + "address": "0xc3D46e0266d95215589DE639cC4E93b79f88fc6C", + "topics": [ + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b2f6c5b73239c39360ee0ea95047565dab13e3c7", + "logIndex": 3, + "blockHash": "0x05be574605bd08d9d84721cd228fa3a70f3b39aa7974f30636a39cb600ddac3a" + } + ], + "blockNumber": 14176751, + "cumulativeGasUsed": "3875852", + "status": 1, + "byzantium": true + }, + "numDeployments": 1, + "implementation": "0x9A82bE743f0120fA24893b1631B6b2817fD94b1D", + "devdoc": "Contract deployed as upgradable proxy" +} \ No newline at end of file From 86c8209c49c310475ba5ae6d7952c490f3d4fc3b Mon Sep 17 00:00:00 2001 From: Michalina Date: Thu, 15 Feb 2024 17:00:23 +0100 Subject: [PATCH 7/8] Fix deployment script dependencies Some dependencies were wrong/missing. --- .../13_update_with_optimism_in_wormhole_gateway_mapping.ts | 2 +- .../14_update_with_polygon_in_wormhole_gateway_mapping.ts | 2 +- .../15_update_with_base_in_wormhole_gateway_mapping.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cross-chain/arbitrum/deploy_l2/13_update_with_optimism_in_wormhole_gateway_mapping.ts b/cross-chain/arbitrum/deploy_l2/13_update_with_optimism_in_wormhole_gateway_mapping.ts index 5e84cd3c5..6d03cd554 100644 --- a/cross-chain/arbitrum/deploy_l2/13_update_with_optimism_in_wormhole_gateway_mapping.ts +++ b/cross-chain/arbitrum/deploy_l2/13_update_with_optimism_in_wormhole_gateway_mapping.ts @@ -41,4 +41,4 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { export default func func.tags = ["SetOptimismGatewayAddress"] -func.dependencies = ["OptimismWormholeGateway"] +func.dependencies = ["OptimismWormholeGateway", "ArbitrumWormholeGateway"] diff --git a/cross-chain/arbitrum/deploy_l2/14_update_with_polygon_in_wormhole_gateway_mapping.ts b/cross-chain/arbitrum/deploy_l2/14_update_with_polygon_in_wormhole_gateway_mapping.ts index b9e38ad77..000ad7867 100644 --- a/cross-chain/arbitrum/deploy_l2/14_update_with_polygon_in_wormhole_gateway_mapping.ts +++ b/cross-chain/arbitrum/deploy_l2/14_update_with_polygon_in_wormhole_gateway_mapping.ts @@ -37,4 +37,4 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { export default func func.tags = ["SetPolygonGatewayAddress"] -func.dependencies = ["OptimismWormholeGateway"] +func.dependencies = ["PolygonWormholeGateway", "ArbitrumWormholeGateway"] diff --git a/cross-chain/arbitrum/deploy_l2/15_update_with_base_in_wormhole_gateway_mapping.ts b/cross-chain/arbitrum/deploy_l2/15_update_with_base_in_wormhole_gateway_mapping.ts index 4d74abf02..55a06b84e 100644 --- a/cross-chain/arbitrum/deploy_l2/15_update_with_base_in_wormhole_gateway_mapping.ts +++ b/cross-chain/arbitrum/deploy_l2/15_update_with_base_in_wormhole_gateway_mapping.ts @@ -36,4 +36,4 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { export default func func.tags = ["SetBaseGatewayAddress"] -func.dependencies = ["BaseWormholeGateway"] +func.dependencies = ["BaseWormholeGateway", "ArbitrumWormholeGateway"] From bcd4ec5dfc57ae026cc7b4a89afb6bae5aa4359e Mon Sep 17 00:00:00 2001 From: Michalina Date: Thu, 15 Feb 2024 17:00:59 +0100 Subject: [PATCH 8/8] Update Arbitrum Sepolia with Optimism and Base gateways --- .../arbitrum/external/arbitrumSepolia/BaseWormholeGateway.json | 3 +++ .../external/arbitrumSepolia/OptimismWormholeGateway.json | 3 +++ 2 files changed, 6 insertions(+) create mode 100644 cross-chain/arbitrum/external/arbitrumSepolia/BaseWormholeGateway.json create mode 100644 cross-chain/arbitrum/external/arbitrumSepolia/OptimismWormholeGateway.json diff --git a/cross-chain/arbitrum/external/arbitrumSepolia/BaseWormholeGateway.json b/cross-chain/arbitrum/external/arbitrumSepolia/BaseWormholeGateway.json new file mode 100644 index 000000000..3378b040e --- /dev/null +++ b/cross-chain/arbitrum/external/arbitrumSepolia/BaseWormholeGateway.json @@ -0,0 +1,3 @@ +{ + "address": "0xc3d46e0266d95215589de639cc4e93b79f88fc6c" +} diff --git a/cross-chain/arbitrum/external/arbitrumSepolia/OptimismWormholeGateway.json b/cross-chain/arbitrum/external/arbitrumSepolia/OptimismWormholeGateway.json new file mode 100644 index 000000000..5504419ce --- /dev/null +++ b/cross-chain/arbitrum/external/arbitrumSepolia/OptimismWormholeGateway.json @@ -0,0 +1,3 @@ +{ + "address": "0x5fb63d9e076a314023f2d1ab5dbfd7045c281eba" +}