From 7c14c8e01ba42b6eb49511f18b04ac05d8d6e569 Mon Sep 17 00:00:00 2001 From: Henry <11198460+godzillaba@users.noreply.github.com> Date: Tue, 1 Sep 2026 13:51:04 -0400 Subject: [PATCH 1/9] add chains --- src/chains.ts | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/src/chains.ts b/src/chains.ts index 8ab30e6e0..b92ba0dbd 100644 --- a/src/chains.ts +++ b/src/chains.ts @@ -58,6 +58,49 @@ const nitroTestnodeL3 = defineChain({ testnet: true, }); +const rhMainnet = defineChain({ + id: 4_663, + network: 'robinhood-chain', + name: 'Robinhood Chain', + nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 }, + rpcUrls: { + default: { + http: ['https://rpc.mainnet.chain.robinhood.com'], + }, + public: { + http: ['https://rpc.mainnet.chain.robinhood.com'], + }, + }, + blockExplorers: { + default: { + name: 'Blockscout', + url: 'https://robinhoodchain.blockscout.com', + }, + }, +}); + +const rhTestnet = defineChain({ + id: 46_630, + network: 'robinhood-chain-testnet', + name: 'Robinhood Chain Testnet', + nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 }, + rpcUrls: { + default: { + http: ['https://rpc.testnet.chain.robinhood.com'], + }, + public: { + http: ['https://rpc.testnet.chain.robinhood.com'], + }, + }, + blockExplorers: { + default: { + name: 'Blockscout', + url: 'https://explorer.testnet.chain.robinhood.com', + }, + }, + testnet: true, +}); + const customParentChains: Record = {}; export function getCustomParentChains(): Chain[] { @@ -131,6 +174,7 @@ export const mainnets = [ arbitrumOne, arbitrumNova, base, + rhMainnet, ]; export const testnets = [ @@ -139,6 +183,7 @@ export const testnets = [ // testnet L2 arbitrumSepolia, baseSepolia, + rhTestnet, // local nitro-testnode nitroTestnodeL1, nitroTestnodeL2, @@ -154,11 +199,13 @@ export { arbitrumOne, arbitrumNova, base, + rhMainnet, // testnet L1 sepolia, // testnet L2 arbitrumSepolia, baseSepolia, + rhTestnet, // local nitro-testnode nitroTestnodeL1, nitroTestnodeL2, From f5f85c0c52b924b203e4708629a2bf2e17c1d0cd Mon Sep 17 00:00:00 2001 From: Henry <11198460+godzillaba@users.noreply.github.com> Date: Tue, 1 Sep 2026 14:32:39 -0400 Subject: [PATCH 2/9] add rh contrct entries and loosen types --- wagmi.config.ts | 6 ++++++ wagmi.generate.ts | 19 +++++++++++++------ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/wagmi.config.ts b/wagmi.config.ts index fc7a168ca..2e5e2a7d3 100644 --- a/wagmi.config.ts +++ b/wagmi.config.ts @@ -6,9 +6,11 @@ import { arbitrumOne, arbitrumNova, base, + rhMainnet, sepolia, arbitrumSepolia, baseSepolia, + rhTestnet, nitroTestnodeL1, nitroTestnodeL2, } from './src/chains'; @@ -94,11 +96,13 @@ const contracts: ContractConfig[] = [ [arbitrumOne.id]: '0xF5962AD061A1aD6F38F340F5b267b3593cC1Cd7B', [arbitrumNova.id]: '0xF5962AD061A1aD6F38F340F5b267b3593cC1Cd7B', [base.id]: '0x8d1668636D053C10F57367D68118bD624f41ffe6', + [rhMainnet.id]: '0xF5962AD061A1aD6F38F340F5b267b3593cC1Cd7B', // testnet L1 [sepolia.id]: '0xe06Bc77336E201c4C08751918A4bB99ddf0e1Bf7', // testnet L2 [arbitrumSepolia.id]: '0xF5962AD061A1aD6F38F340F5b267b3593cC1Cd7B', [baseSepolia.id]: '0x8d1668636D053C10F57367D68118bD624f41ffe6', + [rhTestnet.id]: '0xF5962AD061A1aD6F38F340F5b267b3593cC1Cd7B', // local nitro-testnode (on "release" branch with --tokenbridge --l3node --l3-token-bridge flags) [nitroTestnodeL1.id]: '0xe6D50099f4d891240435143193d46581A1447202', [nitroTestnodeL2.id]: '0xbcF51F3AAb5D5Efa025b4A2B235BDc9F3f69b4d2', @@ -114,11 +118,13 @@ const contracts: ContractConfig[] = [ [arbitrumOne.id]: '0x2f5624dc8800dfA0A82AC03509Ef8bb8E7Ac000e', [arbitrumNova.id]: '0x8B9D9490a68B1F16ac8A21DdAE5Fd7aB9d708c14', [base.id]: '0x4C240987d6fE4fa8C7a0004986e3db563150CA55', + [rhMainnet.id]: '0x8B1EFf64E1eAd493A82C6798f5708183AF91A3AD', // testnet L1 [sepolia.id]: '0x7edb2dfBeEf9417e0454A80c51EE0C034e45a570', // testnet L2 [arbitrumSepolia.id]: '0x56C486D3786fA26cc61473C499A36Eb9CC1FbD8E', [baseSepolia.id]: '0xFC71d21a4FE10Cc0d34745ba9c713836f82f8DE3', + [rhTestnet.id]: '0xB27b615369d2B846183c36AD8406B4DD7990fb70', // local nitro-testnode (on "release" branch with --tokenbridge --l3node --l3-token-bridge flags) [nitroTestnodeL1.id]: '0x4Af567288e68caD4aA93A272fe6139Ca53859C70', [nitroTestnodeL2.id]: '0x38F35Af53bF913c439eaB06A367e09D6eb253492', diff --git a/wagmi.generate.ts b/wagmi.generate.ts index 3f5a132db..0a3e22183 100644 --- a/wagmi.generate.ts +++ b/wagmi.generate.ts @@ -27,10 +27,11 @@ if (!apiKey) { throw new Error('Missing the ETHERSCAN_API_KEY environment variable!'); } +// address maps may omit parent chains where older contract versions are not deployed export type ContractConfig = { name: string; version?: string; - address: Record | `0x${string}`; + address: Partial> | `0x${string}`; }; async function fetchAbi(chainId: ParentChainId, address: `0x${string}`) { @@ -119,9 +120,14 @@ async function assertContractAbisMatch(contract: ContractConfig) { */ async function generateAbiForFactoryContract( name: string, - address: Record, + address: Partial>, ) { const chainId = referenceChain.id; + const referenceAddress = address[chainId]; + + if (typeof referenceAddress === 'undefined') { + throw new Error(`Missing address for ${name} on reference chain ${chainId}`); + } await assertContractAbisMatch({ name, address }); @@ -130,11 +136,12 @@ async function generateAbiForFactoryContract( transport: http(), }); - const implementation = await getImplementation({ client, address: address[chainId] }); - const resolvedAddress = implementation !== zeroAddress ? implementation : address[chainId]; + const implementation = await getImplementation({ client, address: referenceAddress }); + const resolvedAddress = implementation !== zeroAddress ? implementation : referenceAddress; const abi = await fetchAbi(chainId, resolvedAddress); - return [{ name, abi, address }]; + // cast: Partial's undefined values never materialize, absent chains simply have no key + return [{ name, abi, address: address as Record }]; } /** @@ -194,7 +201,7 @@ export function generate({ address, }: { name: string; - address: Record | `0x${string}`; + address: ContractConfig['address']; }): Plugin { return { name: 'generate', From bdbddbb5924e91622a0627faf02c381293128287 Mon Sep 17 00:00:00 2001 From: Henry <11198460+godzillaba@users.noreply.github.com> Date: Tue, 1 Sep 2026 14:34:57 -0400 Subject: [PATCH 3/9] add weths and deployment blocks --- src/contracts/WETH.ts | 3 +++ src/utils/getEarliestRollupCreatorDeploymentBlockNumber.ts | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/src/contracts/WETH.ts b/src/contracts/WETH.ts index b17cc76a9..e88d9a962 100644 --- a/src/contracts/WETH.ts +++ b/src/contracts/WETH.ts @@ -3,12 +3,15 @@ // * https://github.com/OffchainLabs/arbitrum-token-bridge/blob/master/packages/arb-token-bridge-ui/src/util/networksNitroTestnode.ts // * https://docs.base.org/chain/base-contracts#base-mainnet // * https://docs.base.org/chain/base-contracts#base-testnet-sepolia +// * https://docs.robinhood.com/chain/protocol-contracts export const wethAddress = { 1: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', 1337: '0x217788c286797D56Cd59aF5e493f3699C39cbbe8', + 4663: '0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73', 8453: '0x4200000000000000000000000000000000000006', 42161: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', 42170: '0x722E8BdD2ce80A4422E880164f2079488e115365', + 46630: '0x7943e237c7F95DA44E0301572D358911207852Fa', 84532: '0x4200000000000000000000000000000000000006', 412346: '0xF5fE98ee962e3E077A75FBe6fE8aBaeF80F3c12d', 421614: '0x980B62Da83eFf3D4576C647993b0c1D7faf17c73', diff --git a/src/utils/getEarliestRollupCreatorDeploymentBlockNumber.ts b/src/utils/getEarliestRollupCreatorDeploymentBlockNumber.ts index b06f9032a..e543f0f90 100644 --- a/src/utils/getEarliestRollupCreatorDeploymentBlockNumber.ts +++ b/src/utils/getEarliestRollupCreatorDeploymentBlockNumber.ts @@ -4,9 +4,11 @@ import { arbitrumOne, arbitrumNova, base, + rhMainnet, sepolia, arbitrumSepolia, baseSepolia, + rhTestnet, nitroTestnodeL1, nitroTestnodeL2, } from '../chains'; @@ -19,11 +21,13 @@ const earliestRollupCreatorDeploymentBlockNumber: Record = { [arbitrumOne.id]: 150_599_584n, [arbitrumNova.id]: 47_798_739n, [base.id]: 12_978_604n, + [rhMainnet.id]: 51_078_803n, // testnet L1 [sepolia.id]: 4_741_823n, // testnet L2 [arbitrumSepolia.id]: 654_628n, [baseSepolia.id]: 10_606_961n, + [rhTestnet.id]: 111_220_754n, // local nitro-testnode [nitroTestnodeL1.id]: 0n, [nitroTestnodeL2.id]: 0n, From 84fb683b71b7395ccbbe376c1dded3379cee5152 Mon Sep 17 00:00:00 2001 From: Henry <11198460+godzillaba@users.noreply.github.com> Date: Tue, 1 Sep 2026 14:37:29 -0400 Subject: [PATCH 4/9] fill switch statements --- src/createRollupGetMaxDataSize.ts | 4 ++++ src/parentChainIsArbitrum.ts | 2 ++ src/parentChainIsMainnet.ts | 2 ++ src/utils/getParentChainLayer.ts | 4 ++++ 4 files changed, 12 insertions(+) diff --git a/src/createRollupGetMaxDataSize.ts b/src/createRollupGetMaxDataSize.ts index 1beb51e36..2e7419205 100644 --- a/src/createRollupGetMaxDataSize.ts +++ b/src/createRollupGetMaxDataSize.ts @@ -3,9 +3,11 @@ import { arbitrumOne, arbitrumNova, base, + rhMainnet, sepolia, arbitrumSepolia, baseSepolia, + rhTestnet, nitroTestnodeL1, nitroTestnodeL2, } from './chains'; @@ -26,9 +28,11 @@ export function createRollupGetMaxDataSize(parentChainId: ParentChainId): bigint case arbitrumOne.id: case arbitrumNova.id: case base.id: + case rhMainnet.id: // testnet L2 case arbitrumSepolia.id: case baseSepolia.id: + case rhTestnet.id: // local nitro-testnode L2 case nitroTestnodeL2.id: return BigInt(104_857); diff --git a/src/parentChainIsArbitrum.ts b/src/parentChainIsArbitrum.ts index 35f09bfc1..7d0f36c40 100644 --- a/src/parentChainIsArbitrum.ts +++ b/src/parentChainIsArbitrum.ts @@ -13,7 +13,9 @@ export function parentChainIsArbitrum(parentChainId: ParentChainId): boolean { case chains.arbitrumOne.id: case chains.arbitrumNova.id: + case chains.rhMainnet.id: case chains.arbitrumSepolia.id: + case chains.rhTestnet.id: case chains.nitroTestnodeL2.id: return true; } diff --git a/src/parentChainIsMainnet.ts b/src/parentChainIsMainnet.ts index 4d4c69c90..1998d5100 100644 --- a/src/parentChainIsMainnet.ts +++ b/src/parentChainIsMainnet.ts @@ -8,11 +8,13 @@ export function parentChainIsMainnet(parentChainId: ParentChainId): boolean { case chains.arbitrumOne.id: case chains.arbitrumNova.id: case chains.base.id: + case chains.rhMainnet.id: return true; case chains.sepolia.id: case chains.arbitrumSepolia.id: case chains.baseSepolia.id: + case chains.rhTestnet.id: case chains.nitroTestnodeL1.id: case chains.nitroTestnodeL2.id: return false; diff --git a/src/utils/getParentChainLayer.ts b/src/utils/getParentChainLayer.ts index 63af8b532..322a6719d 100644 --- a/src/utils/getParentChainLayer.ts +++ b/src/utils/getParentChainLayer.ts @@ -5,8 +5,10 @@ import { arbitrumOne, arbitrumNova, base, + rhMainnet, arbitrumSepolia, baseSepolia, + rhTestnet, nitroTestnodeL2, } from '../chains'; import { ParentChainId } from '../types/ParentChain'; @@ -26,9 +28,11 @@ export function getParentChainLayer(parentChainId: ParentChainId): 1 | 2 { case arbitrumOne.id: case arbitrumNova.id: case base.id: + case rhMainnet.id: // testnet L2 case arbitrumSepolia.id: case baseSepolia.id: + case rhTestnet.id: // local nitro-testnode L2 case nitroTestnodeL2.id: return 2; From 2683e380f792b0201381cc1e4972b11ca6c5e488 Mon Sep 17 00:00:00 2001 From: Henry <11198460+godzillaba@users.noreply.github.com> Date: Tue, 1 Sep 2026 15:22:44 -0400 Subject: [PATCH 5/9] add blockscout generalization and fix getRollupCreatorAddress --- src/utils/getRollupCreatorAddress.ts | 16 +++++++++++++--- wagmi.generate.ts | 17 +++++++++++++---- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/utils/getRollupCreatorAddress.ts b/src/utils/getRollupCreatorAddress.ts index 7b431f093..7487bc4ec 100644 --- a/src/utils/getRollupCreatorAddress.ts +++ b/src/utils/getRollupCreatorAddress.ts @@ -3,7 +3,7 @@ import { Client, Transport, Chain, ChainContract, Address } from 'viem'; import { rollupCreatorAddress as rollupCreatorV3Dot2Address } from '../contracts/RollupCreator/v3.2'; import { rollupCreatorAddress as rollupCreatorV2Dot1Address } from '../contracts/RollupCreator/v2.1'; -import { validateParentChain } from '../types/ParentChain'; +import { ParentChainId, validateParentChain } from '../types/ParentChain'; import { RollupCreatorSupportedVersion } from '../types/createRollupTypes'; export function getRollupCreatorAddress( @@ -25,12 +25,22 @@ export function getRollupCreatorAddress( return address; } - const rollupCreatorAddress = + // TODO: consider batching this change with deprecating v2.1 rollup creator in the sdk + // older versions are not deployed on all parent chains, so their maps may miss entries + const rollupCreatorAddress: Partial> = rollupCreatorVersion === 'v3.2' ? // rollupCreatorV3Dot2Address : // rollupCreatorV2Dot1Address; - return rollupCreatorAddress[parentChainId]; + const address = rollupCreatorAddress[parentChainId]; + + if (typeof address === 'undefined') { + throw new Error( + `RollupCreator ${rollupCreatorVersion} is not deployed on parent chain ${parentChainId}`, + ); + } + + return address; } diff --git a/wagmi.generate.ts b/wagmi.generate.ts index 0a3e22183..edf1c9453 100644 --- a/wagmi.generate.ts +++ b/wagmi.generate.ts @@ -5,7 +5,9 @@ import dotenv from 'dotenv'; import { ParentChainId } from './src'; import { arbitrumNova, + rhMainnet, arbitrumSepolia, + rhTestnet, nitroTestnodeL1, nitroTestnodeL2, nitroTestnodeL3, @@ -34,11 +36,18 @@ export type ContractConfig = { address: Partial> | `0x${string}`; }; +// chains not supported by the Etherscan v2 API, fetched from their Blockscout instance instead +const blockscoutUrls: Partial> = { + [arbitrumNova.id]: 'https://arbitrum-nova.blockscout.com', + [rhMainnet.id]: 'https://robinhoodchain.blockscout.com', + [rhTestnet.id]: 'https://explorer.testnet.chain.robinhood.com', +}; + async function fetchAbi(chainId: ParentChainId, address: `0x${string}`) { - if (chainId === arbitrumNova.id) { - const response = await fetch( - `https://arbitrum-nova.blockscout.com/api/v2/smart-contracts/${address}`, - ); + const blockscoutUrl = blockscoutUrls[chainId]; + + if (blockscoutUrl) { + const response = await fetch(`${blockscoutUrl}/api/v2/smart-contracts/${address}`); const responseJson = await response.json(); if (!response.ok || !responseJson.abi) { From 40e4018659fea194fc257824eeab79426639ddd2 Mon Sep 17 00:00:00 2001 From: Henry <11198460+godzillaba@users.noreply.github.com> Date: Tue, 1 Sep 2026 15:28:00 -0400 Subject: [PATCH 6/9] blockscout UA hack --- wagmi.generate.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wagmi.generate.ts b/wagmi.generate.ts index edf1c9453..f12f7c142 100644 --- a/wagmi.generate.ts +++ b/wagmi.generate.ts @@ -47,7 +47,10 @@ async function fetchAbi(chainId: ParentChainId, address: `0x${string}`) { const blockscoutUrl = blockscoutUrls[chainId]; if (blockscoutUrl) { - const response = await fetch(`${blockscoutUrl}/api/v2/smart-contracts/${address}`); + const response = await fetch(`${blockscoutUrl}/api/v2/smart-contracts/${address}`, { + // Some blockscout instances reject non-browser user agents + headers: { 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36' }, + }); const responseJson = await response.json(); if (!response.ok || !responseJson.abi) { From 7340da7f7539617ce3d1cf625d15a2da8e5b63b4 Mon Sep 17 00:00:00 2001 From: Henry <11198460+godzillaba@users.noreply.github.com> Date: Tue, 1 Sep 2026 15:32:24 -0400 Subject: [PATCH 7/9] generate wagmi files --- src/contracts/RollupCreator/v3.2.ts | 2 ++ src/contracts/TokenBridgeCreator/v1.2.ts | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/contracts/RollupCreator/v3.2.ts b/src/contracts/RollupCreator/v3.2.ts index 0fa4e849e..d72c34587 100644 --- a/src/contracts/RollupCreator/v3.2.ts +++ b/src/contracts/RollupCreator/v3.2.ts @@ -262,9 +262,11 @@ export const rollupCreatorABI = [ export const rollupCreatorAddress = { 1: '0xe06Bc77336E201c4C08751918A4bB99ddf0e1Bf7', 1337: '0xe6D50099f4d891240435143193d46581A1447202', + 4663: '0xF5962AD061A1aD6F38F340F5b267b3593cC1Cd7B', 8453: '0x8d1668636D053C10F57367D68118bD624f41ffe6', 42161: '0xF5962AD061A1aD6F38F340F5b267b3593cC1Cd7B', 42170: '0xF5962AD061A1aD6F38F340F5b267b3593cC1Cd7B', + 46630: '0xF5962AD061A1aD6F38F340F5b267b3593cC1Cd7B', 84532: '0x8d1668636D053C10F57367D68118bD624f41ffe6', 412346: '0xbcF51F3AAb5D5Efa025b4A2B235BDc9F3f69b4d2', 421614: '0xF5962AD061A1aD6F38F340F5b267b3593cC1Cd7B', diff --git a/src/contracts/TokenBridgeCreator/v1.2.ts b/src/contracts/TokenBridgeCreator/v1.2.ts index 9ef7b34de..84a776dfa 100644 --- a/src/contracts/TokenBridgeCreator/v1.2.ts +++ b/src/contracts/TokenBridgeCreator/v1.2.ts @@ -414,9 +414,11 @@ export const tokenBridgeCreatorABI = [ export const tokenBridgeCreatorAddress = { 1: '0x60D9A46F24D5a35b95A78Dd3E793e55D94EE0660', 1337: '0x4Af567288e68caD4aA93A272fe6139Ca53859C70', + 4663: '0x8B1EFf64E1eAd493A82C6798f5708183AF91A3AD', 8453: '0x4C240987d6fE4fa8C7a0004986e3db563150CA55', 42161: '0x2f5624dc8800dfA0A82AC03509Ef8bb8E7Ac000e', 42170: '0x8B9D9490a68B1F16ac8A21DdAE5Fd7aB9d708c14', + 46630: '0xB27b615369d2B846183c36AD8406B4DD7990fb70', 84532: '0xFC71d21a4FE10Cc0d34745ba9c713836f82f8DE3', 412346: '0x38F35Af53bF913c439eaB06A367e09D6eb253492', 421614: '0x56C486D3786fA26cc61473C499A36Eb9CC1FbD8E', From 9917641e094e11698e6255fd8aa414e5cd01958d Mon Sep 17 00:00:00 2001 From: Henry <11198460+godzillaba@users.noreply.github.com> Date: Tue, 1 Sep 2026 15:41:58 -0400 Subject: [PATCH 8/9] bump token bridge to 1.2.5 --- .github/workflows/build-test.yml | 6 +++--- pnpm-lock.yaml | 16 +++++++++++----- src/createTokenBridge-testHelpers.ts | 2 +- src/package.json | 2 +- token-bridge-contracts/Dockerfile | 2 +- 5 files changed, 17 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index f3b2d5bb6..209ac7397 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -296,9 +296,9 @@ jobs: with: context: token-bridge-contracts load: true - tags: arbitrum-chain-sdk-token-bridge-contracts:v1.2.2 - cache-from: type=gha,scope=token-bridge-contracts-v1.2.2 - cache-to: type=gha,mode=max,scope=token-bridge-contracts-v1.2.2 + tags: arbitrum-chain-sdk-token-bridge-contracts:v1.2.5 + cache-from: type=gha,scope=token-bridge-contracts-v1.2.5 + cache-to: type=gha,mode=max,scope=token-bridge-contracts-v1.2.5 - name: Set up the local node run: | diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5afeec5ba..f1d302c77 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -202,8 +202,8 @@ importers: specifier: ^4.0.4 version: 4.0.4 '@arbitrum/token-bridge-contracts': - specifier: ^1.2.2 - version: 1.2.2 + specifier: ^1.2.5 + version: 1.2.5 '@ethersproject/abstract-provider': specifier: ^5.7.0 version: 5.7.0 @@ -250,8 +250,8 @@ packages: resolution: {integrity: sha512-GscwlkHYmPzRKs9huDHntbqx1xMRhTraTUvTC9exu+prjndKxHe9ZORuIcqmtEqwLwma/l8nqxI+k+pEEdIO6Q==} engines: {node: '>=v11', npm: please-use-yarn, yarn: '>= 1.0.0'} - '@arbitrum/token-bridge-contracts@1.2.2': - resolution: {integrity: sha512-PAAJpnAtql7/xPc2o437m+f47tuGVcwEsbvEuoLinOE1nENVx26luXRON2ONMouwg1D/F05DYpmcuxODJ+rHJg==} + '@arbitrum/token-bridge-contracts@1.2.5': + resolution: {integrity: sha512-wIekHs2hNGt0uxlKN8NiEcAoiN1Y4rN9jhbx/BX8T6E1B6XsabrLNVRs0lbsn7uLhV5Z61OaRTy9HirGmTs5+A==} '@esbuild/aix-ppc64@0.25.1': resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==} @@ -737,6 +737,9 @@ packages: peerDependencies: prettier: ^2.8.3 + '@offchainlabs/stablecoin-evm@1.0.0-orbit-alpha.2': + resolution: {integrity: sha512-g9SO/KD4QoIA5Mvo+wE7GDe3PwNtQ0IK3b+RNRClHKH2if4emneQtEj/eD0Tc32BuYzPRK5cbd4/lBjARo9izQ==} + '@offchainlabs/upgrade-executor@1.1.0-beta.0': resolution: {integrity: sha512-mpn6PHjH/KDDjNX0pXHEKdyv8m6DVGQiI2nGzQn0JbM1nOSHJpWx6fvfjtH7YxHJ6zBZTcsKkqGkFKDtCfoSLw==} @@ -2831,9 +2834,10 @@ snapshots: - bufferutil - utf-8-validate - '@arbitrum/token-bridge-contracts@1.2.2': + '@arbitrum/token-bridge-contracts@1.2.5': dependencies: '@arbitrum/nitro-contracts': 1.1.1 + '@offchainlabs/stablecoin-evm': 1.0.0-orbit-alpha.2 '@offchainlabs/upgrade-executor': 1.1.0-beta.0 '@openzeppelin/contracts': 4.8.3 '@openzeppelin/contracts-upgradeable': 4.8.3 @@ -3335,6 +3339,8 @@ snapshots: dependencies: prettier: 2.8.8 + '@offchainlabs/stablecoin-evm@1.0.0-orbit-alpha.2': {} + '@offchainlabs/upgrade-executor@1.1.0-beta.0': dependencies: '@openzeppelin/contracts': 4.7.3 diff --git a/src/createTokenBridge-testHelpers.ts b/src/createTokenBridge-testHelpers.ts index 7b534c763..ff013cd47 100644 --- a/src/createTokenBridge-testHelpers.ts +++ b/src/createTokenBridge-testHelpers.ts @@ -7,7 +7,7 @@ import { getNitroTestnodePrivateKeyAccounts } from './testHelpers'; const execFilePromise = promisify(execFile); const testnodeAccounts = getNitroTestnodePrivateKeyAccounts(); const tokenBridgeContractsImage = - process.env.TOKEN_BRIDGE_CONTRACTS_IMAGE ?? 'arbitrum-chain-sdk-token-bridge-contracts:v1.2.2'; + process.env.TOKEN_BRIDGE_CONTRACTS_IMAGE ?? 'arbitrum-chain-sdk-token-bridge-contracts:v1.2.5'; const skipTokenBridgeContractsImageBuild = process.env.TOKEN_BRIDGE_CONTRACTS_SKIP_BUILD === 'true'; let tokenBridgeContractsImagePromise: Promise | undefined; diff --git a/src/package.json b/src/package.json index a38103d86..71bc1b543 100644 --- a/src/package.json +++ b/src/package.json @@ -59,7 +59,7 @@ "dependencies": { "@arbitrum/nitro-contracts": "^3.2.0", "@arbitrum/sdk": "^4.0.4", - "@arbitrum/token-bridge-contracts": "^1.2.2", + "@arbitrum/token-bridge-contracts": "^1.2.5", "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/providers": "^5.7.2", "@offchainlabs/fund-distribution-contracts": "^1.1.0", diff --git a/token-bridge-contracts/Dockerfile b/token-bridge-contracts/Dockerfile index 8a06ed00c..59850de1e 100644 --- a/token-bridge-contracts/Dockerfile +++ b/token-bridge-contracts/Dockerfile @@ -3,7 +3,7 @@ RUN apt-get update && \ apt-get install -y --no-install-recommends ca-certificates git docker.io python3 chromium build-essential && \ rm -rf /var/lib/apt/lists/* WORKDIR /workspace -RUN git clone -b v1.2.2 https://github.com/OffchainLabs/token-bridge-contracts.git ./ +RUN git clone -b v1.2.5 https://github.com/OffchainLabs/token-bridge-contracts.git ./ RUN yarn install RUN yarn build ENTRYPOINT ["yarn"] From 893da4cb8159b72e8eddbcfbb6ec12e9aefd8b0d Mon Sep 17 00:00:00 2001 From: Henry <11198460+godzillaba@users.noreply.github.com> Date: Wed, 2 Sep 2026 10:22:00 -0400 Subject: [PATCH 9/9] remove deprecation comment --- src/utils/getRollupCreatorAddress.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/utils/getRollupCreatorAddress.ts b/src/utils/getRollupCreatorAddress.ts index 7487bc4ec..85a5d00fc 100644 --- a/src/utils/getRollupCreatorAddress.ts +++ b/src/utils/getRollupCreatorAddress.ts @@ -25,7 +25,6 @@ export function getRollupCreatorAddress( return address; } - // TODO: consider batching this change with deprecating v2.1 rollup creator in the sdk // older versions are not deployed on all parent chains, so their maps may miss entries const rollupCreatorAddress: Partial> = rollupCreatorVersion === 'v3.2'