From 7bcd7243b83ab2163da92afd104f4b74b39e1390 Mon Sep 17 00:00:00 2001 From: Doug <4741454+douglance@users.noreply.github.com> Date: Wed, 9 Oct 2024 12:17:04 -0400 Subject: [PATCH 1/5] feat: adds rollup data fetching to simplify input --- .../add-orbit-chain-request.yml | 32 +----- packages/scripts/src/addOrbitChain/network.ts | 101 ++++++++++++++++++ .../tests/__mocks__/chainDataMocks.ts | 4 +- .../__snapshots__/transforms.test.ts.snap | 66 ++++++++++-- .../src/addOrbitChain/tests/network.ts | 91 ++++++++++++++++ .../addOrbitChain/tests/transforms.test.ts | 4 +- .../scripts/src/addOrbitChain/transforms.ts | 21 ++-- 7 files changed, 271 insertions(+), 48 deletions(-) create mode 100644 packages/scripts/src/addOrbitChain/network.ts create mode 100644 packages/scripts/src/addOrbitChain/tests/network.ts diff --git a/.github/ISSUE_TEMPLATE/add-orbit-chain-request.yml b/.github/ISSUE_TEMPLATE/add-orbit-chain-request.yml index 68d98e023e..b2254c140d 100644 --- a/.github/ISSUE_TEMPLATE/add-orbit-chain-request.yml +++ b/.github/ISSUE_TEMPLATE/add-orbit-chain-request.yml @@ -119,13 +119,6 @@ body: attributes: value: | Please fill out this section with your chain configuration details and contract addresses. As a reminder, you can get all contract addresses by running [getAllContracts](https://github.com/OffchainLabs/arbitrum-orbit-sdk/blob/feat-add-verification-scripts/examples/verify-rollup/README.md#get-all-contracts). - - type: input - id: confirmPeriodBlocks - attributes: - label: confirmPeriodBlocks - placeholder: ex. 45818 - validations: - required: true - type: markdown attributes: @@ -135,34 +128,11 @@ body: attributes: value: | You can find this information under the `"coreContracts" : {...}` key. - - type: input - id: bridge - attributes: - label: bridge - validations: - required: true - - type: input - id: inbox - attributes: - label: inbox - validations: - required: true - - type: input - id: outbox - attributes: - label: outbox - validations: - required: true - type: input id: rollup attributes: label: rollup - validations: - required: true - - type: input - id: sequencerInbox - attributes: - label: sequencerInbox + description: Please provide the address of the rollup contract. Other core contract addresses will be fetched automatically. validations: required: true diff --git a/packages/scripts/src/addOrbitChain/network.ts b/packages/scripts/src/addOrbitChain/network.ts new file mode 100644 index 0000000000..a59b383de4 --- /dev/null +++ b/packages/scripts/src/addOrbitChain/network.ts @@ -0,0 +1,101 @@ +import { ethers } from "ethers"; + +export async function getProvider(rpcUrl: string) { + console.log(`Connecting to provider at ${rpcUrl}`); + try { + const provider = new ethers.providers.JsonRpcProvider(rpcUrl); + await provider.getNetwork(); // Test the connection + console.log("Successfully connected to the provider"); + return provider; + } catch (error) { + console.error("Failed to connect to the provider:", error); + throw error; + } +} + +export async function getRollupContract( + rollupAddress: string, + provider: ethers.providers.Provider +) { + console.log(`Creating rollup contract instance at address ${rollupAddress}`); + const rollupABI = [ + "function bridge() view returns (address)", + "function inbox() view returns (address)", + "function sequencerInbox() view returns (address)", + "function outbox() view returns (address)", + "function confirmPeriodBlocks() view returns (uint256)", + ]; + return new ethers.Contract(rollupAddress, rollupABI, provider); +} + +async function callContractMethod( + contract: ethers.Contract, + methodName: string +) { + console.log(`Calling ${methodName} method on contract`); + try { + const result = await contract[methodName](); + console.log(`${methodName} call successful:`, result); + return result; + } catch (error) { + console.error(`Error calling ${methodName}:`, error); + throw error; + } +} + +export async function getBridge(rollupContract: ethers.Contract) { + return await callContractMethod(rollupContract, "bridge"); +} + +export async function getInbox(rollupContract: ethers.Contract) { + return await callContractMethod(rollupContract, "inbox"); +} + +export async function getSequencerInbox(rollupContract: ethers.Contract) { + return await callContractMethod(rollupContract, "sequencerInbox"); +} + +export async function getOutbox(rollupContract: ethers.Contract) { + return await callContractMethod(rollupContract, "outbox"); +} + +export async function getConfirmPeriodBlocks(rollupContract: ethers.Contract) { + const confirmPeriodBlocks = await callContractMethod( + rollupContract, + "confirmPeriodBlocks" + ); + return confirmPeriodBlocks.toNumber(); +} + +export async function fetchRollupContractData( + rollupAddress: string, + rpcUrl: string +) { + console.log(`Fetching rollup contract data for address ${rollupAddress}`); + try { + const provider = await getProvider(rpcUrl); + const rollupContract = await getRollupContract(rollupAddress, provider); + + console.log("Fetching contract data..."); + const [bridge, inbox, sequencerInbox, outbox, confirmPeriodBlocks] = + await Promise.all([ + getBridge(rollupContract), + getInbox(rollupContract), + getSequencerInbox(rollupContract), + getOutbox(rollupContract), + getConfirmPeriodBlocks(rollupContract), + ]); + + console.log("Successfully fetched all contract data"); + return { + bridge, + inbox, + sequencerInbox, + outbox, + confirmPeriodBlocks, + }; + } catch (error) { + console.error("Error fetching rollup contract data:", error); + throw error; + } +} diff --git a/packages/scripts/src/addOrbitChain/tests/__mocks__/chainDataMocks.ts b/packages/scripts/src/addOrbitChain/tests/__mocks__/chainDataMocks.ts index c4bd08dff9..e32eecd0ff 100644 --- a/packages/scripts/src/addOrbitChain/tests/__mocks__/chainDataMocks.ts +++ b/packages/scripts/src/addOrbitChain/tests/__mocks__/chainDataMocks.ts @@ -180,7 +180,7 @@ export const mockIncomingChainData: IncomingChainData = { description: "This is a test chain.", chainLogo: "https://example.com/testchain.png", color: "#FF0000", - rpcUrl: "https://testrpc.com", + rpcUrl: "https://sepolia-rollup.arbitrum.io/rpc", explorerUrl: "https://testexplorer.com", parentChainId: "421614", confirmPeriodBlocks: "150", @@ -191,7 +191,7 @@ export const mockIncomingChainData: IncomingChainData = { bridge: "0x0000000000000000000000000000000000000001", inbox: "0x0000000000000000000000000000000000000002", outbox: "0x0000000000000000000000000000000000000003", - rollup: "0x0000000000000000000000000000000000000004", + rollup: "0xeedE9367Df91913ab149e828BDd6bE336df2c892", sequencerInbox: "0x0000000000000000000000000000000000000005", parentGatewayRouter: "0x0000000000000000000000000000000000000009", childGatewayRouter: "0x0000000000000000000000000000000000000016", diff --git a/packages/scripts/src/addOrbitChain/tests/__snapshots__/transforms.test.ts.snap b/packages/scripts/src/addOrbitChain/tests/__snapshots__/transforms.test.ts.snap index 02230567a3..a7c2e91aed 100644 --- a/packages/scripts/src/addOrbitChain/tests/__snapshots__/transforms.test.ts.snap +++ b/packages/scripts/src/addOrbitChain/tests/__snapshots__/transforms.test.ts.snap @@ -37,6 +37,60 @@ exports[`Transforms > extractRawChainData > should extract raw chain data from t } `; +exports[`Transforms > transformIncomingDataToOrbitChain > should transform incoming chain data to OrbitChain format 1`] = ` +{ + "bridgeUiConfig": { + "color": "#FF0000", + "nativeTokenData": { + "decimals": 18, + "logoUrl": "/images/mockChain_NativeTokenLogo.png", + "name": "Test Token", + "symbol": "TEST", + }, + "network": { + "description": "This is a test chain.", + "logo": "/images/mockChain_Logo.png", + "name": "Test Chain", + }, + }, + "chainId": 1234567890, + "confirmPeriodBlocks": 150, + "ethBridge": { + "bridge": "0x6c7FAC4edC72E86B3388B48979eF37Ecca5027e6", + "inbox": "0x6396825803B720bc6A43c63caa1DcD7B31EB4dd0", + "outbox": "0xc7491a559b416540427f9f112C5c98b1412c5d51", + "rollup": "0xeedE9367Df91913ab149e828BDd6bE336df2c892", + "sequencerInbox": "0x529a2061A1973be80D315770bA9469F3Da40D938", + }, + "explorerUrl": "https://testexplorer.com", + "isArbitrum": true, + "isCustom": true, + "isTestnet": true, + "name": "Test Chain", + "nativeToken": "0x0000000000000000000000000000000000000006", + "parentChainId": 421614, + "retryableLifetimeSeconds": 604800, + "rpcUrl": "https://sepolia-rollup.arbitrum.io/rpc", + "slug": "test-chain", + "tokenBridge": { + "childCustomGateway": "0x0000000000000000000000000000000000000014", + "childErc20Gateway": "0x0000000000000000000000000000000000000015", + "childGatewayRouter": "0x0000000000000000000000000000000000000016", + "childMulticall": "0x0000000000000000000000000000000000000017", + "childProxyAdmin": "0x0000000000000000000000000000000000000018", + "childWeth": "0x0000000000000000000000000000000000000019", + "childWethGateway": "0x0000000000000000000000000000000000000020", + "parentCustomGateway": "0x0000000000000000000000000000000000000007", + "parentErc20Gateway": "0x0000000000000000000000000000000000000008", + "parentGatewayRouter": "0x0000000000000000000000000000000000000009", + "parentMulticall": "0x0000000000000000000000000000000000000010", + "parentProxyAdmin": "0x0000000000000000000000000000000000000011", + "parentWeth": "0x0000000000000000000000000000000000000012", + "parentWethGateway": "0x0000000000000000000000000000000000000013", + }, +} +`; + exports[`Transforms > transformIncomingDataToOrbitChain > should transform incoming chain data to OrbitChain format 1`] = ` { "bridgeUiConfig": { @@ -56,11 +110,11 @@ exports[`Transforms > transformIncomingDataToOrbitChain > should transform incom "chainId": 1234567890, "confirmPeriodBlocks": 150, "ethBridge": { - "bridge": "0x0000000000000000000000000000000000000001", - "inbox": "0x0000000000000000000000000000000000000002", - "outbox": "0x0000000000000000000000000000000000000003", - "rollup": "0x0000000000000000000000000000000000000004", - "sequencerInbox": "0x0000000000000000000000000000000000000005", + "bridge": "0x6c7FAC4edC72E86B3388B48979eF37Ecca5027e6", + "inbox": "0x6396825803B720bc6A43c63caa1DcD7B31EB4dd0", + "outbox": "0xc7491a559b416540427f9f112C5c98b1412c5d51", + "rollup": "0xeedE9367Df91913ab149e828BDd6bE336df2c892", + "sequencerInbox": "0x529a2061A1973be80D315770bA9469F3Da40D938", }, "explorerUrl": "https://testexplorer.com", "isArbitrum": true, @@ -70,7 +124,7 @@ exports[`Transforms > transformIncomingDataToOrbitChain > should transform incom "nativeToken": "0x0000000000000000000000000000000000000006", "parentChainId": 421614, "retryableLifetimeSeconds": 604800, - "rpcUrl": "https://testrpc.com", + "rpcUrl": "https://sepolia-rollup.arbitrum.io/rpc", "slug": "test-chain", "tokenBridge": { "childCustomGateway": "0x0000000000000000000000000000000000000014", diff --git a/packages/scripts/src/addOrbitChain/tests/network.ts b/packages/scripts/src/addOrbitChain/tests/network.ts new file mode 100644 index 0000000000..ef448de3a0 --- /dev/null +++ b/packages/scripts/src/addOrbitChain/tests/network.ts @@ -0,0 +1,91 @@ +import { + fetchRollupContractData, + getProvider, + getRollupContract, +} from "../network"; + +describe("Network Functions", () => { + it("fetches rollup contract data for an Arbitrum Orbit chain", async () => { + const parentChainRpcUrl = "https://sepolia-rollup.arbitrum.io/rpc"; + const orbitChainRollupAddress = + "0xeedE9367Df91913ab149e828BDd6bE336df2c892"; + + console.log("Starting test with the following parameters:"); + console.log("Parent Chain RPC URL:", parentChainRpcUrl); + console.log("Orbit Chain Rollup Address:", orbitChainRollupAddress); + + try { + // check if we can connect to the provider + const provider = await getProvider(parentChainRpcUrl); + const network = await provider.getNetwork(); + console.log( + "Connected to network:", + network.name, + "chainId:", + network.chainId + ); + + // check if the contract exists + const code = await provider.getCode(orbitChainRollupAddress); + if (code === "0x") { + throw new Error("No contract found at the given address"); + } + console.log("Contract found at the given address"); + + // ry to interact with the contract + const contract = await getRollupContract( + orbitChainRollupAddress, + provider + ); + + // try to call each method individually and log the result + for (const method of [ + "bridge", + "inbox", + "sequencerInbox", + "outbox", + "confirmPeriodBlocks", + ]) { + try { + const result = await contract[method](); + console.log(`${method}() call successful:`, result); + } catch (error) { + console.error(`Error calling ${method}():`, error); + } + } + + const rollupData = await fetchRollupContractData( + orbitChainRollupAddress, + parentChainRpcUrl + ); + + // Log the fetched data + console.log( + "Fetched Rollup Contract Data:", + JSON.stringify(rollupData, null, 2) + ); + + // Assertions to verify the structure and content of the fetched data + expect(rollupData).toHaveProperty("bridge"); + expect(rollupData).toHaveProperty("inbox"); + expect(rollupData).toHaveProperty("sequencerInbox"); + expect(rollupData).toHaveProperty("outbox"); + expect(rollupData).toHaveProperty("confirmPeriodBlocks"); + + // Check that the addresses are valid Ethereum addresses + const addressRegex = /^0x[a-fA-F0-9]{40}$/; + expect(rollupData.bridge).toMatch(addressRegex); + expect(rollupData.inbox).toMatch(addressRegex); + expect(rollupData.sequencerInbox).toMatch(addressRegex); + expect(rollupData.outbox).toMatch(addressRegex); + + // Check that confirmPeriodBlocks is a positive number + expect(rollupData.confirmPeriodBlocks).toBeGreaterThan(0); + + console.log("All assertions passed successfully"); + } catch (error) { + console.error("Test failed with error:", error); + throw error; + } + }, 30000); // Increase timeout to 30 seconds for network calls +}); diff --git a/packages/scripts/src/addOrbitChain/tests/transforms.test.ts b/packages/scripts/src/addOrbitChain/tests/transforms.test.ts index 01aa724a3b..0b0dca56ca 100644 --- a/packages/scripts/src/addOrbitChain/tests/transforms.test.ts +++ b/packages/scripts/src/addOrbitChain/tests/transforms.test.ts @@ -25,11 +25,11 @@ describe("Transforms", () => { }); describe("transformIncomingDataToOrbitChain", () => { - it("should transform incoming chain data to OrbitChain format", () => { + it("should transform incoming chain data to OrbitChain format", async () => { const chainLogoPath = "/images/mockChain_Logo.png"; const nativeTokenLogoPath = "/images/mockChain_NativeTokenLogo.png"; - const result = transformIncomingDataToOrbitChain( + const result = await transformIncomingDataToOrbitChain( mockIncomingChainData as IncomingChainData, chainLogoPath, nativeTokenLogoPath diff --git a/packages/scripts/src/addOrbitChain/transforms.ts b/packages/scripts/src/addOrbitChain/transforms.ts index c00582d965..c0fd110ab4 100644 --- a/packages/scripts/src/addOrbitChain/transforms.ts +++ b/packages/scripts/src/addOrbitChain/transforms.ts @@ -14,6 +14,7 @@ import { getIssue, updateContent, } from "./github"; +import { fetchRollupContractData } from "./network"; import { chainDataLabelToKey, IncomingChainData, @@ -279,23 +280,29 @@ export const fetchAndSaveImage = async ( return `/${imageSavePath}`; }; -export const transformIncomingDataToOrbitChain = ( +export const transformIncomingDataToOrbitChain = async ( chainData: IncomingChainData, chainLogoPath: string, nativeTokenLogoPath?: string -): OrbitChain => { +): Promise => { const parentChainId = parseInt(chainData.parentChainId, 10); const isTestnet = TESTNET_PARENT_CHAIN_IDS.includes(parentChainId); + // Fetch rollup contract data + const rollupData = await fetchRollupContractData( + chainData.rollup, + chainData.rpcUrl + ); + return { chainId: parseInt(chainData.chainId, 10), - confirmPeriodBlocks: parseInt(chainData.confirmPeriodBlocks, 10), + confirmPeriodBlocks: rollupData.confirmPeriodBlocks, ethBridge: { - bridge: chainData.bridge, - inbox: chainData.inbox, - outbox: chainData.outbox, + bridge: rollupData.bridge, + inbox: rollupData.inbox, + outbox: rollupData.outbox, rollup: chainData.rollup, - sequencerInbox: chainData.sequencerInbox, + sequencerInbox: rollupData.sequencerInbox, }, nativeToken: chainData.nativeTokenAddress, explorerUrl: chainData.explorerUrl, From d1cec7d924c288bf82a66f8749527741c83d3c81 Mon Sep 17 00:00:00 2001 From: Doug <4741454+douglance@users.noreply.github.com> Date: Wed, 9 Oct 2024 12:17:53 -0400 Subject: [PATCH 2/5] fix name --- .../__snapshots__/transforms.test.ts.snap | 54 ------------------- 1 file changed, 54 deletions(-) diff --git a/packages/scripts/src/addOrbitChain/tests/__snapshots__/transforms.test.ts.snap b/packages/scripts/src/addOrbitChain/tests/__snapshots__/transforms.test.ts.snap index a7c2e91aed..ab7188e04d 100644 --- a/packages/scripts/src/addOrbitChain/tests/__snapshots__/transforms.test.ts.snap +++ b/packages/scripts/src/addOrbitChain/tests/__snapshots__/transforms.test.ts.snap @@ -37,60 +37,6 @@ exports[`Transforms > extractRawChainData > should extract raw chain data from t } `; -exports[`Transforms > transformIncomingDataToOrbitChain > should transform incoming chain data to OrbitChain format 1`] = ` -{ - "bridgeUiConfig": { - "color": "#FF0000", - "nativeTokenData": { - "decimals": 18, - "logoUrl": "/images/mockChain_NativeTokenLogo.png", - "name": "Test Token", - "symbol": "TEST", - }, - "network": { - "description": "This is a test chain.", - "logo": "/images/mockChain_Logo.png", - "name": "Test Chain", - }, - }, - "chainId": 1234567890, - "confirmPeriodBlocks": 150, - "ethBridge": { - "bridge": "0x6c7FAC4edC72E86B3388B48979eF37Ecca5027e6", - "inbox": "0x6396825803B720bc6A43c63caa1DcD7B31EB4dd0", - "outbox": "0xc7491a559b416540427f9f112C5c98b1412c5d51", - "rollup": "0xeedE9367Df91913ab149e828BDd6bE336df2c892", - "sequencerInbox": "0x529a2061A1973be80D315770bA9469F3Da40D938", - }, - "explorerUrl": "https://testexplorer.com", - "isArbitrum": true, - "isCustom": true, - "isTestnet": true, - "name": "Test Chain", - "nativeToken": "0x0000000000000000000000000000000000000006", - "parentChainId": 421614, - "retryableLifetimeSeconds": 604800, - "rpcUrl": "https://sepolia-rollup.arbitrum.io/rpc", - "slug": "test-chain", - "tokenBridge": { - "childCustomGateway": "0x0000000000000000000000000000000000000014", - "childErc20Gateway": "0x0000000000000000000000000000000000000015", - "childGatewayRouter": "0x0000000000000000000000000000000000000016", - "childMulticall": "0x0000000000000000000000000000000000000017", - "childProxyAdmin": "0x0000000000000000000000000000000000000018", - "childWeth": "0x0000000000000000000000000000000000000019", - "childWethGateway": "0x0000000000000000000000000000000000000020", - "parentCustomGateway": "0x0000000000000000000000000000000000000007", - "parentErc20Gateway": "0x0000000000000000000000000000000000000008", - "parentGatewayRouter": "0x0000000000000000000000000000000000000009", - "parentMulticall": "0x0000000000000000000000000000000000000010", - "parentProxyAdmin": "0x0000000000000000000000000000000000000011", - "parentWeth": "0x0000000000000000000000000000000000000012", - "parentWethGateway": "0x0000000000000000000000000000000000000013", - }, -} -`; - exports[`Transforms > transformIncomingDataToOrbitChain > should transform incoming chain data to OrbitChain format 1`] = ` { "bridgeUiConfig": { From 84f036f8b06ba37add7889768a800dd4628a4e16 Mon Sep 17 00:00:00 2001 From: Doug <4741454+douglance@users.noreply.github.com> Date: Wed, 9 Oct 2024 12:25:17 -0400 Subject: [PATCH 3/5] fix types --- packages/scripts/src/addOrbitChain/transforms.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/scripts/src/addOrbitChain/transforms.ts b/packages/scripts/src/addOrbitChain/transforms.ts index c0fd110ab4..64ea70f2ac 100644 --- a/packages/scripts/src/addOrbitChain/transforms.ts +++ b/packages/scripts/src/addOrbitChain/transforms.ts @@ -117,7 +117,7 @@ export const createAndValidateOrbitChain = async ( ) => { core.startGroup("Orbit Chain Creation and Validation"); console.log("Creating OrbitChain object..."); - const orbitChain = transformIncomingDataToOrbitChain( + const orbitChain = await transformIncomingDataToOrbitChain( validatedIncomingData, chainLogoPath, nativeTokenLogoPath @@ -130,7 +130,7 @@ export const createAndValidateOrbitChain = async ( }; export const updateAndValidateOrbitChainsList = async ( - orbitChain: ReturnType, + orbitChain: OrbitChain, targetJsonPath: string ) => { core.startGroup("Orbit ChainsList Update and Validation"); @@ -152,7 +152,7 @@ export const commitChangesAndCreatePR = async ( branchName: string, targetJsonPath: string, updatedOrbitChainsList: ReturnType, - orbitChain: ReturnType + orbitChain: OrbitChain ) => { core.startGroup("Commit Changes and Create Pull Request"); console.log("Preparing to commit changes..."); @@ -171,7 +171,7 @@ export const commitChangesAndCreatePR = async ( export const setOutputs = ( branchName: string, - orbitChain: ReturnType, + orbitChain: OrbitChain, targetJsonPath: string ) => { core.startGroup("Set Outputs"); From 0b1ccd29ea459ceaf1f8c4cc8e6320d6a30103e8 Mon Sep 17 00:00:00 2001 From: Doug <4741454+douglance@users.noreply.github.com> Date: Mon, 14 Oct 2024 14:05:08 -0400 Subject: [PATCH 4/5] update the rollup data fetching to arb/sdk --- packages/scripts/package.json | 1 + packages/scripts/src/addOrbitChain/network.ts | 101 ----- .../src/addOrbitChain/tests/network.ts | 91 ----- .../scripts/src/addOrbitChain/transforms.ts | 20 +- yarn.lock | 345 +++++++----------- 5 files changed, 155 insertions(+), 403 deletions(-) delete mode 100644 packages/scripts/src/addOrbitChain/network.ts delete mode 100644 packages/scripts/src/addOrbitChain/tests/network.ts diff --git a/packages/scripts/package.json b/packages/scripts/package.json index 0c53feef3e..e9d310eb63 100644 --- a/packages/scripts/package.json +++ b/packages/scripts/package.json @@ -17,6 +17,7 @@ "dependencies": { "@actions/core": "^1.10.1", "@actions/github": "^6.0.0", + "@arbitrum/sdk": "^4.0.1", "@octokit/rest": "^21.0.2", "axios": "^1.7.7", "commander": "^12.1.0", diff --git a/packages/scripts/src/addOrbitChain/network.ts b/packages/scripts/src/addOrbitChain/network.ts deleted file mode 100644 index a59b383de4..0000000000 --- a/packages/scripts/src/addOrbitChain/network.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { ethers } from "ethers"; - -export async function getProvider(rpcUrl: string) { - console.log(`Connecting to provider at ${rpcUrl}`); - try { - const provider = new ethers.providers.JsonRpcProvider(rpcUrl); - await provider.getNetwork(); // Test the connection - console.log("Successfully connected to the provider"); - return provider; - } catch (error) { - console.error("Failed to connect to the provider:", error); - throw error; - } -} - -export async function getRollupContract( - rollupAddress: string, - provider: ethers.providers.Provider -) { - console.log(`Creating rollup contract instance at address ${rollupAddress}`); - const rollupABI = [ - "function bridge() view returns (address)", - "function inbox() view returns (address)", - "function sequencerInbox() view returns (address)", - "function outbox() view returns (address)", - "function confirmPeriodBlocks() view returns (uint256)", - ]; - return new ethers.Contract(rollupAddress, rollupABI, provider); -} - -async function callContractMethod( - contract: ethers.Contract, - methodName: string -) { - console.log(`Calling ${methodName} method on contract`); - try { - const result = await contract[methodName](); - console.log(`${methodName} call successful:`, result); - return result; - } catch (error) { - console.error(`Error calling ${methodName}:`, error); - throw error; - } -} - -export async function getBridge(rollupContract: ethers.Contract) { - return await callContractMethod(rollupContract, "bridge"); -} - -export async function getInbox(rollupContract: ethers.Contract) { - return await callContractMethod(rollupContract, "inbox"); -} - -export async function getSequencerInbox(rollupContract: ethers.Contract) { - return await callContractMethod(rollupContract, "sequencerInbox"); -} - -export async function getOutbox(rollupContract: ethers.Contract) { - return await callContractMethod(rollupContract, "outbox"); -} - -export async function getConfirmPeriodBlocks(rollupContract: ethers.Contract) { - const confirmPeriodBlocks = await callContractMethod( - rollupContract, - "confirmPeriodBlocks" - ); - return confirmPeriodBlocks.toNumber(); -} - -export async function fetchRollupContractData( - rollupAddress: string, - rpcUrl: string -) { - console.log(`Fetching rollup contract data for address ${rollupAddress}`); - try { - const provider = await getProvider(rpcUrl); - const rollupContract = await getRollupContract(rollupAddress, provider); - - console.log("Fetching contract data..."); - const [bridge, inbox, sequencerInbox, outbox, confirmPeriodBlocks] = - await Promise.all([ - getBridge(rollupContract), - getInbox(rollupContract), - getSequencerInbox(rollupContract), - getOutbox(rollupContract), - getConfirmPeriodBlocks(rollupContract), - ]); - - console.log("Successfully fetched all contract data"); - return { - bridge, - inbox, - sequencerInbox, - outbox, - confirmPeriodBlocks, - }; - } catch (error) { - console.error("Error fetching rollup contract data:", error); - throw error; - } -} diff --git a/packages/scripts/src/addOrbitChain/tests/network.ts b/packages/scripts/src/addOrbitChain/tests/network.ts deleted file mode 100644 index ef448de3a0..0000000000 --- a/packages/scripts/src/addOrbitChain/tests/network.ts +++ /dev/null @@ -1,91 +0,0 @@ -import { - fetchRollupContractData, - getProvider, - getRollupContract, -} from "../network"; - -describe("Network Functions", () => { - it("fetches rollup contract data for an Arbitrum Orbit chain", async () => { - const parentChainRpcUrl = "https://sepolia-rollup.arbitrum.io/rpc"; - const orbitChainRollupAddress = - "0xeedE9367Df91913ab149e828BDd6bE336df2c892"; - - console.log("Starting test with the following parameters:"); - console.log("Parent Chain RPC URL:", parentChainRpcUrl); - console.log("Orbit Chain Rollup Address:", orbitChainRollupAddress); - - try { - // check if we can connect to the provider - const provider = await getProvider(parentChainRpcUrl); - const network = await provider.getNetwork(); - console.log( - "Connected to network:", - network.name, - "chainId:", - network.chainId - ); - - // check if the contract exists - const code = await provider.getCode(orbitChainRollupAddress); - if (code === "0x") { - throw new Error("No contract found at the given address"); - } - console.log("Contract found at the given address"); - - // ry to interact with the contract - const contract = await getRollupContract( - orbitChainRollupAddress, - provider - ); - - // try to call each method individually and log the result - for (const method of [ - "bridge", - "inbox", - "sequencerInbox", - "outbox", - "confirmPeriodBlocks", - ]) { - try { - const result = await contract[method](); - console.log(`${method}() call successful:`, result); - } catch (error) { - console.error(`Error calling ${method}():`, error); - } - } - - const rollupData = await fetchRollupContractData( - orbitChainRollupAddress, - parentChainRpcUrl - ); - - // Log the fetched data - console.log( - "Fetched Rollup Contract Data:", - JSON.stringify(rollupData, null, 2) - ); - - // Assertions to verify the structure and content of the fetched data - expect(rollupData).toHaveProperty("bridge"); - expect(rollupData).toHaveProperty("inbox"); - expect(rollupData).toHaveProperty("sequencerInbox"); - expect(rollupData).toHaveProperty("outbox"); - expect(rollupData).toHaveProperty("confirmPeriodBlocks"); - - // Check that the addresses are valid Ethereum addresses - const addressRegex = /^0x[a-fA-F0-9]{40}$/; - expect(rollupData.bridge).toMatch(addressRegex); - expect(rollupData.inbox).toMatch(addressRegex); - expect(rollupData.sequencerInbox).toMatch(addressRegex); - expect(rollupData.outbox).toMatch(addressRegex); - - // Check that confirmPeriodBlocks is a positive number - expect(rollupData.confirmPeriodBlocks).toBeGreaterThan(0); - - console.log("All assertions passed successfully"); - } catch (error) { - console.error("Test failed with error:", error); - throw error; - } - }, 30000); // Increase timeout to 30 seconds for network calls -}); diff --git a/packages/scripts/src/addOrbitChain/transforms.ts b/packages/scripts/src/addOrbitChain/transforms.ts index d20540c546..241593b0bc 100644 --- a/packages/scripts/src/addOrbitChain/transforms.ts +++ b/packages/scripts/src/addOrbitChain/transforms.ts @@ -3,6 +3,8 @@ import * as core from "@actions/core"; import { warning } from "@actions/core"; +import { getArbitrumNetworkInformationFromRollup } from "@arbitrum/sdk"; +import { JsonRpcProvider } from "@ethersproject/providers"; import axios from "axios"; import * as fs from "fs"; import sharp from "sharp"; @@ -15,7 +17,6 @@ import { getIssue, updateContent, } from "./github"; -import { fetchRollupContractData } from "./network"; import { chainDataLabelToKey, IncomingChainData, @@ -343,21 +344,24 @@ export const transformIncomingDataToOrbitChain = async ( const parentChainId = parseInt(chainData.parentChainId, 10); const isTestnet = TESTNET_PARENT_CHAIN_IDS.includes(parentChainId); - // Fetch rollup contract data - const rollupData = await fetchRollupContractData( + // Create a provider using the rpcUrl + const provider = new JsonRpcProvider(chainData.rpcUrl); + + // Fetch rollup contract data using getArbitrumNetworkInformationFromRollup + const rollupData = await getArbitrumNetworkInformationFromRollup( chainData.rollup, - chainData.rpcUrl + provider ); return { chainId: parseInt(chainData.chainId, 10), confirmPeriodBlocks: rollupData.confirmPeriodBlocks, ethBridge: { - bridge: rollupData.bridge, - inbox: rollupData.inbox, - outbox: rollupData.outbox, + bridge: rollupData.ethBridge.bridge, + inbox: rollupData.ethBridge.inbox, + outbox: rollupData.ethBridge.outbox, rollup: chainData.rollup, - sequencerInbox: rollupData.sequencerInbox, + sequencerInbox: rollupData.ethBridge.sequencerInbox, }, nativeToken: chainData.nativeTokenAddress, explorerUrl: chainData.explorerUrl, diff --git a/yarn.lock b/yarn.lock index 30f2747718..6c84f02186 100644 --- a/yarn.lock +++ b/yarn.lock @@ -80,7 +80,7 @@ "@arbitrum/sdk@^4.0.1": version "4.0.1" - resolved "https://registry.npmjs.org/@arbitrum/sdk/-/sdk-4.0.1.tgz" + resolved "https://registry.yarnpkg.com/@arbitrum/sdk/-/sdk-4.0.1.tgz#b51c7bb8ecef0143a35b7f3ab8538031bb1830d2" integrity sha512-uW0Pe/oICbmlHpIpYOaHHWsNQRG+3UbCa3s0SJsp2O1Kt9b0M0CX/fEdFOFLyAi3OxHonNEfzhfvQrALy9C3Yw== dependencies: "@ethersproject/address" "^5.0.8" @@ -2475,7 +2475,7 @@ "@stablelib/constant-time" "^1.0.1" "@stablelib/wipe" "^1.0.1" -"@stablelib/random@1.0.2", "@stablelib/random@^1.0.1", "@stablelib/random@^1.0.2": +"@stablelib/random@^1.0.1", "@stablelib/random@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@stablelib/random/-/random-1.0.2.tgz#2dece393636489bf7e19c51229dd7900eddf742c" integrity sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w== @@ -2506,7 +2506,7 @@ resolved "https://registry.npmjs.org/@stablelib/wipe/-/wipe-1.0.1.tgz" integrity sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg== -"@stablelib/x25519@1.0.3": +"@stablelib/x25519@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@stablelib/x25519/-/x25519-1.0.3.tgz#13c8174f774ea9f3e5e42213cbf9fc68a3c7b7fd" integrity sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw== @@ -3534,28 +3534,27 @@ eventemitter3 "^4.0.7" zustand "^4.3.1" -"@walletconnect/core@2.13.1": - version "2.13.1" - resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.13.1.tgz#a59646e39a5beaa3f3551d129af43cd404cf4faf" - integrity sha512-h0MSYKJu9i1VEs5koCTT7c5YeQ1Kj0ncTFiMqANbDnB1r3mBulXn+FKtZ2fCmf1j7KDpgluuUzpSs+sQfPcv4Q== +"@walletconnect/core@2.8.4": + version "2.8.4" + resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.8.4.tgz#fc207c8fa35a53e30012b0c85b6ca933cec7d955" + integrity sha512-3CQHud4As0kPRvlW1w/wSWS2F3yXlAo5kSEJyRWLRPqXG+aSCVWM8cVM8ch5yoeyNIfOHhEINdsYMuJG1+yIJQ== dependencies: - "@walletconnect/heartbeat" "1.2.2" - "@walletconnect/jsonrpc-provider" "1.0.14" - "@walletconnect/jsonrpc-types" "1.0.4" + "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/jsonrpc-provider" "1.0.13" + "@walletconnect/jsonrpc-types" "1.0.3" "@walletconnect/jsonrpc-utils" "1.0.8" - "@walletconnect/jsonrpc-ws-connection" "1.0.14" - "@walletconnect/keyvaluestorage" "1.1.1" - "@walletconnect/logger" "2.1.2" - "@walletconnect/relay-api" "1.0.10" - "@walletconnect/relay-auth" "1.0.4" - "@walletconnect/safe-json" "1.0.2" - "@walletconnect/time" "1.0.2" - "@walletconnect/types" "2.13.1" - "@walletconnect/utils" "2.13.1" - events "3.3.0" - isomorphic-unfetch "3.1.0" + "@walletconnect/jsonrpc-ws-connection" "^1.0.11" + "@walletconnect/keyvaluestorage" "^1.0.2" + "@walletconnect/logger" "^2.0.1" + "@walletconnect/relay-api" "^1.0.9" + "@walletconnect/relay-auth" "^1.0.4" + "@walletconnect/safe-json" "^1.0.2" + "@walletconnect/time" "^1.0.2" + "@walletconnect/types" "2.8.4" + "@walletconnect/utils" "2.8.4" + events "^3.3.0" lodash.isequal "4.5.0" - uint8arrays "3.1.0" + uint8arrays "^3.1.0" "@walletconnect/crypto@^1.0.3": version "1.0.3" @@ -3585,23 +3584,22 @@ dependencies: tslib "1.14.1" -"@walletconnect/ethereum-provider@2.13.1", "@walletconnect/ethereum-provider@2.8.4": - version "2.13.1" - resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.13.1.tgz#a9bdb8f9da303088b7b724fa98f4b5ca0d46a36d" - integrity sha512-bHJVqb++GrrMGlapsbSvvIyBlwulMGZEx6N5xwAl6ImPVzbDN0g0XmibNkjzJXVsi/+/d0R/HmKS1WyJQSNx3w== +"@walletconnect/ethereum-provider@2.8.4": + version "2.8.4" + resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.8.4.tgz#c627c237b479194efc542b8475596bae12fde52d" + integrity sha512-z7Yz4w8t3eEFv8vQ8DLCgDWPah2aIIyC0iQdwhXgJenQTVuz7JJZRrJUUntzudipHK/owA394c1qTPF0rsMSeQ== dependencies: - "@walletconnect/jsonrpc-http-connection" "1.0.8" - "@walletconnect/jsonrpc-provider" "1.0.14" - "@walletconnect/jsonrpc-types" "1.0.4" - "@walletconnect/jsonrpc-utils" "1.0.8" - "@walletconnect/modal" "2.6.2" - "@walletconnect/sign-client" "2.13.1" - "@walletconnect/types" "2.13.1" - "@walletconnect/universal-provider" "2.13.1" - "@walletconnect/utils" "2.13.1" - events "3.3.0" - -"@walletconnect/events@1.0.1", "@walletconnect/events@^1.0.1": + "@walletconnect/jsonrpc-http-connection" "^1.0.7" + "@walletconnect/jsonrpc-provider" "^1.0.13" + "@walletconnect/jsonrpc-types" "^1.0.3" + "@walletconnect/jsonrpc-utils" "^1.0.8" + "@walletconnect/sign-client" "2.8.4" + "@walletconnect/types" "2.8.4" + "@walletconnect/universal-provider" "2.8.4" + "@walletconnect/utils" "2.8.4" + events "^3.3.0" + +"@walletconnect/events@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@walletconnect/events/-/events-1.0.1.tgz#2b5f9c7202019e229d7ccae1369a9e86bda7816c" integrity sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ== @@ -3609,24 +3607,14 @@ keyvaluestorage-interface "^1.0.0" tslib "1.14.1" -"@walletconnect/heartbeat@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@walletconnect/heartbeat/-/heartbeat-1.2.2.tgz#e8dc5179db7769950c6f9cf59b23516d9b95227d" - integrity sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw== +"@walletconnect/heartbeat@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@walletconnect/heartbeat/-/heartbeat-1.2.1.tgz#afaa3a53232ae182d7c9cff41c1084472d8f32e9" + integrity sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q== dependencies: "@walletconnect/events" "^1.0.1" "@walletconnect/time" "^1.0.2" - events "^3.3.0" - -"@walletconnect/jsonrpc-http-connection@1.0.8": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.8.tgz#2f4c3948f074960a3edd07909560f3be13e2c7ae" - integrity sha512-+B7cRuaxijLeFDJUq5hAzNyef3e3tBDIxyaCNmFtjwnod5AGis3RToNqzFU33vpVcxFhofkpE7Cx+5MYejbMGw== - dependencies: - "@walletconnect/jsonrpc-utils" "^1.0.6" - "@walletconnect/safe-json" "^1.0.1" - cross-fetch "^3.1.4" - events "^3.3.0" + tslib "1.14.1" "@walletconnect/jsonrpc-http-connection@^1.0.4": version "1.0.7" @@ -3638,16 +3626,17 @@ cross-fetch "^3.1.4" tslib "1.14.1" -"@walletconnect/jsonrpc-provider@1.0.14": - version "1.0.14" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.14.tgz#696f3e3b6d728b361f2e8b853cfc6afbdf2e4e3e" - integrity sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow== +"@walletconnect/jsonrpc-http-connection@^1.0.7": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.8.tgz#2f4c3948f074960a3edd07909560f3be13e2c7ae" + integrity sha512-+B7cRuaxijLeFDJUq5hAzNyef3e3tBDIxyaCNmFtjwnod5AGis3RToNqzFU33vpVcxFhofkpE7Cx+5MYejbMGw== dependencies: - "@walletconnect/jsonrpc-utils" "^1.0.8" - "@walletconnect/safe-json" "^1.0.2" + "@walletconnect/jsonrpc-utils" "^1.0.6" + "@walletconnect/safe-json" "^1.0.1" + cross-fetch "^3.1.4" events "^3.3.0" -"@walletconnect/jsonrpc-provider@^1.0.6": +"@walletconnect/jsonrpc-provider@1.0.13", "@walletconnect/jsonrpc-provider@^1.0.6": version "1.0.13" resolved "https://registry.npmjs.org/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.13.tgz" integrity sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g== @@ -3656,15 +3645,16 @@ "@walletconnect/safe-json" "^1.0.2" tslib "1.14.1" -"@walletconnect/jsonrpc-types@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.4.tgz#ce1a667d79eadf2a2d9d002c152ceb68739c230c" - integrity sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ== +"@walletconnect/jsonrpc-provider@^1.0.13": + version "1.0.14" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.14.tgz#696f3e3b6d728b361f2e8b853cfc6afbdf2e4e3e" + integrity sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow== dependencies: + "@walletconnect/jsonrpc-utils" "^1.0.8" + "@walletconnect/safe-json" "^1.0.2" events "^3.3.0" - keyvaluestorage-interface "^1.0.0" -"@walletconnect/jsonrpc-types@^1.0.2", "@walletconnect/jsonrpc-types@^1.0.3": +"@walletconnect/jsonrpc-types@1.0.3", "@walletconnect/jsonrpc-types@^1.0.2", "@walletconnect/jsonrpc-types@^1.0.3": version "1.0.3" resolved "https://registry.npmjs.org/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.3.tgz" integrity sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw== @@ -3672,7 +3662,7 @@ keyvaluestorage-interface "^1.0.0" tslib "1.14.1" -"@walletconnect/jsonrpc-utils@1.0.8", "@walletconnect/jsonrpc-utils@^1.0.4", "@walletconnect/jsonrpc-utils@^1.0.6", "@walletconnect/jsonrpc-utils@^1.0.8": +"@walletconnect/jsonrpc-utils@1.0.8", "@walletconnect/jsonrpc-utils@^1.0.4", "@walletconnect/jsonrpc-utils@^1.0.6", "@walletconnect/jsonrpc-utils@^1.0.7", "@walletconnect/jsonrpc-utils@^1.0.8": version "1.0.8" resolved "https://registry.npmjs.org/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.8.tgz" integrity sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw== @@ -3681,7 +3671,7 @@ "@walletconnect/jsonrpc-types" "^1.0.3" tslib "1.14.1" -"@walletconnect/jsonrpc-ws-connection@1.0.14": +"@walletconnect/jsonrpc-ws-connection@^1.0.11": version "1.0.14" resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.14.tgz#eec700e74766c7887de2bd76c91a0206628732aa" integrity sha512-Jsl6fC55AYcbkNVkwNM6Jo+ufsuCQRqViOQ8ZBPH9pRREHH9welbBiszuTLqEJiQcO/6XfFDl6bzCJIkrEi8XA== @@ -3691,7 +3681,7 @@ events "^3.3.0" ws "^7.5.1" -"@walletconnect/keyvaluestorage@1.1.1": +"@walletconnect/keyvaluestorage@^1.0.2": version "1.1.1" resolved "https://registry.yarnpkg.com/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz#dd2caddabfbaf80f6b8993a0704d8b83115a1842" integrity sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA== @@ -3760,7 +3750,7 @@ detect-browser "^5.3.0" query-string "^6.13.5" -"@walletconnect/logger@2.1.2": +"@walletconnect/logger@^2.0.1": version "2.1.2" resolved "https://registry.yarnpkg.com/@walletconnect/logger/-/logger-2.1.2.tgz#813c9af61b96323a99f16c10089bfeb525e2a272" integrity sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw== @@ -3776,13 +3766,6 @@ buffer "6.0.3" valtio "1.10.6" -"@walletconnect/modal-core@2.6.2": - version "2.6.2" - resolved "https://registry.yarnpkg.com/@walletconnect/modal-core/-/modal-core-2.6.2.tgz#d73e45d96668764e0c8668ea07a45bb8b81119e9" - integrity sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA== - dependencies: - valtio "1.11.2" - "@walletconnect/modal-ui@2.5.5": version "2.5.5" resolved "https://registry.npmjs.org/@walletconnect/modal-ui/-/modal-ui-2.5.5.tgz" @@ -3793,24 +3776,6 @@ motion "10.16.2" qrcode "1.5.3" -"@walletconnect/modal-ui@2.6.2": - version "2.6.2" - resolved "https://registry.yarnpkg.com/@walletconnect/modal-ui/-/modal-ui-2.6.2.tgz#fa57c087c57b7f76aaae93deab0f84bb68b59cf9" - integrity sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA== - dependencies: - "@walletconnect/modal-core" "2.6.2" - lit "2.8.0" - motion "10.16.2" - qrcode "1.5.3" - -"@walletconnect/modal@2.6.2": - version "2.6.2" - resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.6.2.tgz#4b534a836f5039eeb3268b80be7217a94dd12651" - integrity sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA== - dependencies: - "@walletconnect/modal-core" "2.6.2" - "@walletconnect/modal-ui" "2.6.2" - "@walletconnect/modal@^2.5.4": version "2.5.5" resolved "https://registry.npmjs.org/@walletconnect/modal/-/modal-2.5.5.tgz" @@ -3829,14 +3794,14 @@ randombytes "^2.1.0" tslib "1.14.1" -"@walletconnect/relay-api@1.0.10": - version "1.0.10" - resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.10.tgz#5aef3cd07c21582b968136179aa75849dcc65499" - integrity sha512-tqrdd4zU9VBNqUaXXQASaexklv6A54yEyQQEXYOCr+Jz8Ket0dmPBDyg19LVSNUN2cipAghQc45/KVmfFJ0cYw== +"@walletconnect/relay-api@^1.0.9": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.11.tgz#80ab7ef2e83c6c173be1a59756f95e515fb63224" + integrity sha512-tLPErkze/HmC9aCmdZOhtVmYZq1wKfWTJtygQHoWtgg722Jd4homo54Cs4ak2RUFUZIGO2RsOpIcWipaua5D5Q== dependencies: "@walletconnect/jsonrpc-types" "^1.0.2" -"@walletconnect/relay-auth@1.0.4": +"@walletconnect/relay-auth@^1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@walletconnect/relay-auth/-/relay-auth-1.0.4.tgz#0b5c55c9aa3b0ef61f526ce679f3ff8a5c4c2c7c" integrity sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ== @@ -3848,90 +3813,90 @@ tslib "1.14.1" uint8arrays "^3.0.0" -"@walletconnect/safe-json@1.0.2", "@walletconnect/safe-json@^1.0.1", "@walletconnect/safe-json@^1.0.2": +"@walletconnect/safe-json@^1.0.1", "@walletconnect/safe-json@^1.0.2": version "1.0.2" resolved "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz" integrity sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA== dependencies: tslib "1.14.1" -"@walletconnect/sign-client@2.13.1": - version "2.13.1" - resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.13.1.tgz#7bdc9226218fd33caf3aef69dff0b4140abc7fa8" - integrity sha512-e+dcqcLsedB4ZjnePFM5Cy8oxu0dyz5iZfhfKH/MOrQV/hyhZ+hJwh4MmkO2QyEu2PERKs9o2Uc6x8RZdi0UAQ== +"@walletconnect/sign-client@2.8.4": + version "2.8.4" + resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.8.4.tgz#35e7cfe9442c65d7f667a7c20f1a5ee7e2a6e576" + integrity sha512-eRvWtKBAgzo/rbIkw+rkKco2ulSW8Wor/58UsOBsl9DKr1rIazZd4ZcUdaTjg9q8AT1476IQakCAIuv+1FvJwQ== dependencies: - "@walletconnect/core" "2.13.1" - "@walletconnect/events" "1.0.1" - "@walletconnect/heartbeat" "1.2.2" + "@walletconnect/core" "2.8.4" + "@walletconnect/events" "^1.0.1" + "@walletconnect/heartbeat" "1.2.1" "@walletconnect/jsonrpc-utils" "1.0.8" - "@walletconnect/logger" "2.1.2" - "@walletconnect/time" "1.0.2" - "@walletconnect/types" "2.13.1" - "@walletconnect/utils" "2.13.1" - events "3.3.0" + "@walletconnect/logger" "^2.0.1" + "@walletconnect/time" "^1.0.2" + "@walletconnect/types" "2.8.4" + "@walletconnect/utils" "2.8.4" + events "^3.3.0" -"@walletconnect/time@1.0.2", "@walletconnect/time@^1.0.2": +"@walletconnect/time@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@walletconnect/time/-/time-1.0.2.tgz#6c5888b835750ecb4299d28eecc5e72c6d336523" integrity sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g== dependencies: tslib "1.14.1" -"@walletconnect/types@2.13.1": - version "2.13.1" - resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.13.1.tgz#393e3bd4d60a755f3a70cbe769b58cf153450310" - integrity sha512-CIrdt66d38xdunGCy5peOOP17EQkCEGKweXc3+Gn/RWeSiRU35I7wjC/Bp4iWcgAQ6iBTZv4jGGST5XyrOp+Pg== +"@walletconnect/types@2.8.4": + version "2.8.4" + resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.8.4.tgz#23fad8593b094c7564d72f179e33b1cac9324a88" + integrity sha512-Fgqe87R7rjMOGSvx28YPLTtXM6jj+oUOorx8cE+jEw2PfpWp5myF21aCdaMBR39h0QHij5H1Z0/W9e7gm4oC1Q== dependencies: - "@walletconnect/events" "1.0.1" - "@walletconnect/heartbeat" "1.2.2" - "@walletconnect/jsonrpc-types" "1.0.4" - "@walletconnect/keyvaluestorage" "1.1.1" - "@walletconnect/logger" "2.1.2" - events "3.3.0" + "@walletconnect/events" "^1.0.1" + "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/jsonrpc-types" "1.0.3" + "@walletconnect/keyvaluestorage" "^1.0.2" + "@walletconnect/logger" "^2.0.1" + events "^3.3.0" -"@walletconnect/universal-provider@2.13.1": - version "2.13.1" - resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.13.1.tgz#e007c4963ca73fea7c29dc3ca4ca57e2607daafc" - integrity sha512-A/6WysrvzXWtYD933PKjJlj7PGtOWdkwKeRDiD6JEVk5fQ+DQ1x0p5qcUhaa57r3S0p559YvRNvHFFjx+PpMqA== +"@walletconnect/universal-provider@2.8.4": + version "2.8.4" + resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.8.4.tgz#7b62a76a7d99ea41c67374da54aaa4f1b4bc1d03" + integrity sha512-JRpOXKIciRMzd03zZxM1WDsYHo/ZS86zZrZ1aCHW1d45ZLP7SbGPRHzZgBY3xrST26yTvWIlRfTUEYn50fzB1g== dependencies: - "@walletconnect/jsonrpc-http-connection" "1.0.8" - "@walletconnect/jsonrpc-provider" "1.0.14" - "@walletconnect/jsonrpc-types" "1.0.4" - "@walletconnect/jsonrpc-utils" "1.0.8" - "@walletconnect/logger" "2.1.2" - "@walletconnect/sign-client" "2.13.1" - "@walletconnect/types" "2.13.1" - "@walletconnect/utils" "2.13.1" - events "3.3.0" + "@walletconnect/jsonrpc-http-connection" "^1.0.7" + "@walletconnect/jsonrpc-provider" "1.0.13" + "@walletconnect/jsonrpc-types" "^1.0.2" + "@walletconnect/jsonrpc-utils" "^1.0.7" + "@walletconnect/logger" "^2.0.1" + "@walletconnect/sign-client" "2.8.4" + "@walletconnect/types" "2.8.4" + "@walletconnect/utils" "2.8.4" + events "^3.3.0" -"@walletconnect/utils@2.13.1": - version "2.13.1" - resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.13.1.tgz#f44e81028754c6e056dba588ad9b9fa5ad047645" - integrity sha512-EcooXXlqy5hk9hy/nK2wBF/qxe7HjH0K8ZHzjKkXRkwAE5pCvy0IGXIXWmUR9sw8LFJEqZyd8rZdWLKNUe8hqA== +"@walletconnect/utils@2.8.4": + version "2.8.4" + resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.8.4.tgz#8dbd3beaef39388be2398145a5f9a061a0317518" + integrity sha512-NGw6BINYNeT9JrQrnxldAPheO2ymRrwGrgfExZMyrkb1MShnIX4nzo4KirKInM4LtrY6AA/v0Lu3ooUdfO+xIg== dependencies: "@stablelib/chacha20poly1305" "1.0.1" "@stablelib/hkdf" "1.0.1" - "@stablelib/random" "1.0.2" + "@stablelib/random" "^1.0.2" "@stablelib/sha256" "1.0.1" - "@stablelib/x25519" "1.0.3" - "@walletconnect/relay-api" "1.0.10" - "@walletconnect/safe-json" "1.0.2" - "@walletconnect/time" "1.0.2" - "@walletconnect/types" "2.13.1" - "@walletconnect/window-getters" "1.0.1" - "@walletconnect/window-metadata" "1.0.1" + "@stablelib/x25519" "^1.0.3" + "@walletconnect/relay-api" "^1.0.9" + "@walletconnect/safe-json" "^1.0.2" + "@walletconnect/time" "^1.0.2" + "@walletconnect/types" "2.8.4" + "@walletconnect/window-getters" "^1.0.1" + "@walletconnect/window-metadata" "^1.0.1" detect-browser "5.3.0" query-string "7.1.3" - uint8arrays "3.1.0" + uint8arrays "^3.1.0" -"@walletconnect/window-getters@1.0.1", "@walletconnect/window-getters@^1.0.1": +"@walletconnect/window-getters@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.1.tgz#f36d1c72558a7f6b87ecc4451fc8bd44f63cbbdc" integrity sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q== dependencies: tslib "1.14.1" -"@walletconnect/window-metadata@1.0.1", "@walletconnect/window-metadata@^1.0.1": +"@walletconnect/window-metadata@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz#2124f75447b7e989e4e4e1581d55d25bc75f7be5" integrity sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA== @@ -6362,7 +6327,20 @@ electron-to-chromium@^1.4.431: resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.431.tgz" integrity sha512-m232JTVmCawA2vG+1azVxhKZ9Sv1Q//xxNv5PkP5rWxGgQE8c3CiZFrh8Xnp+d1NmNxlu3QQrGIfdeW5TtXX5w== -elliptic@6.5.4, elliptic@6.5.7, elliptic@^6.5.4: +elliptic@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +elliptic@^6.5.4: version "6.5.7" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.7.tgz#8ec4da2cb2939926a1b9a73619d768207e647c8b" integrity sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q== @@ -7250,7 +7228,7 @@ eventemitter3@^4.0.0, eventemitter3@^4.0.7: resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@3.3.0, events@^3.3.0: +events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== @@ -9054,14 +9032,6 @@ isobject@^3.0.1: resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== -isomorphic-unfetch@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz#87341d5f4f7b63843d468438128cb087b7c3e98f" - integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q== - dependencies: - node-fetch "^2.6.1" - unfetch "^4.2.0" - isomorphic-ws@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz" @@ -9963,13 +9933,6 @@ lit-html@^2.7.0: dependencies: "@types/trusted-types" "^2.0.2" -lit-html@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/lit-html/-/lit-html-2.8.0.tgz#96456a4bb4ee717b9a7d2f94562a16509d39bffa" - integrity sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q== - dependencies: - "@types/trusted-types" "^2.0.2" - lit@2.7.5: version "2.7.5" resolved "https://registry.npmjs.org/lit/-/lit-2.7.5.tgz" @@ -9979,15 +9942,6 @@ lit@2.7.5: lit-element "^3.3.0" lit-html "^2.7.0" -lit@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/lit/-/lit-2.8.0.tgz#4d838ae03059bf9cafa06e5c61d8acc0081e974e" - integrity sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA== - dependencies: - "@lit/reactive-element" "^1.6.0" - lit-element "^3.3.0" - lit-html "^2.8.0" - loader-utils@^1.2.3: version "1.4.2" resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz" @@ -13680,14 +13634,7 @@ ufo@^1.4.0, ufo@^1.5.3: resolved "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz" integrity sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw== -uint8arrays@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.0.tgz#8186b8eafce68f28bd29bd29d683a311778901e2" - integrity sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog== - dependencies: - multiformats "^9.4.2" - -uint8arrays@^3.0.0: +uint8arrays@^3.0.0, uint8arrays@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== @@ -13745,11 +13692,6 @@ unenv@^1.9.0: node-fetch-native "^1.6.1" pathe "^1.1.1" -unfetch@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" - integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== - universal-user-agent@^6.0.0: version "6.0.1" resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz" @@ -13966,14 +13908,6 @@ valtio@1.10.6: proxy-compare "2.5.1" use-sync-external-store "1.2.0" -valtio@1.11.2: - version "1.11.2" - resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.11.2.tgz#b8049c02dfe65620635d23ebae9121a741bb6530" - integrity sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw== - dependencies: - proxy-compare "2.5.1" - use-sync-external-store "1.2.0" - vary@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" @@ -14362,10 +14296,10 @@ write-file-atomic@^4.0.2: imurmurhash "^0.1.4" signal-exit "^3.0.7" -ws@7.4.6, ws@7.5.10, ws@^7.4.5, ws@^7.5.1: - version "7.5.10" - resolved "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz" - integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== +ws@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== ws@8.13.0: version "8.13.0" @@ -14377,6 +14311,11 @@ ws@8.17.1, ws@^8.11.0, ws@^8.13.0, ws@^8.5.0: resolved "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz" integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== +ws@^7.4.5, ws@^7.5.1: + version "7.5.10" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + xml-name-validator@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz" From c86d1e4e65122f9c61a47c56636772a74ef555cb Mon Sep 17 00:00:00 2001 From: Doug <4741454+douglance@users.noreply.github.com> Date: Mon, 14 Oct 2024 14:08:41 -0400 Subject: [PATCH 5/5] remove comments --- packages/scripts/src/addOrbitChain/transforms.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/scripts/src/addOrbitChain/transforms.ts b/packages/scripts/src/addOrbitChain/transforms.ts index 241593b0bc..b90ee3893e 100644 --- a/packages/scripts/src/addOrbitChain/transforms.ts +++ b/packages/scripts/src/addOrbitChain/transforms.ts @@ -343,11 +343,7 @@ export const transformIncomingDataToOrbitChain = async ( ): Promise => { const parentChainId = parseInt(chainData.parentChainId, 10); const isTestnet = TESTNET_PARENT_CHAIN_IDS.includes(parentChainId); - - // Create a provider using the rpcUrl const provider = new JsonRpcProvider(chainData.rpcUrl); - - // Fetch rollup contract data using getArbitrumNetworkInformationFromRollup const rollupData = await getArbitrumNetworkInformationFromRollup( chainData.rollup, provider