diff --git a/package.json b/package.json index 08aac72..17b11d9 100644 --- a/package.json +++ b/package.json @@ -2,12 +2,12 @@ "name": "orbit-setup-script", "dependencies": { "@arbitrum/nitro-contracts": "^1.1.1", - "@arbitrum/orbit-sdk": "^0.8.0", + "@arbitrum/orbit-sdk": "^0.17.1", "@arbitrum/token-bridge-contracts": "^1.2.1", "viem": "^1.20.0" }, "devDependencies": { - "@arbitrum/sdk": "^3.2.0", + "@arbitrum/sdk": "^4.0.0", "@typescript-eslint/eslint-plugin": "^5.14.0", "@typescript-eslint/eslint-plugin-tslint": "^5.27.1", "@typescript-eslint/parser": "^5.14.0", diff --git a/scripts/createTokenBridge.ts b/scripts/createTokenBridge.ts index 98373ad..387f0de 100644 --- a/scripts/createTokenBridge.ts +++ b/scripts/createTokenBridge.ts @@ -1,8 +1,6 @@ import { JsonRpcProvider } from '@ethersproject/providers' import { - L1Network, - L2Network, - constants as arbitrumSdkConstants, + ArbitrumNetwork, } from '@arbitrum/sdk' import { IERC20Bridge__factory } from '@arbitrum/sdk/dist/lib/abi/factories/IERC20Bridge__factory' import { RollupAdminLogic__factory } from '@arbitrum/sdk/dist/lib/abi/factories/RollupAdminLogic__factory' @@ -265,9 +263,9 @@ export const createNewTokenBridge = async ( }) ).getCoreContracts() - const l1Network: L1Network = { + const l1Network = { blockTime: 10, - chainID: l1NetworkInfo.chainId, + chainId: l1NetworkInfo.chainId, explorerUrl: '', isCustom: true, name: l1NetworkInfo.name, @@ -275,8 +273,8 @@ export const createNewTokenBridge = async ( isArbitrum: false, } - const l2Network: L2Network = { - chainID: l2NetworkInfo.chainId, + const l2Network: ArbitrumNetwork = { + chainId: l2NetworkInfo.chainId, confirmPeriodBlocks: (await rollup.confirmPeriodBlocks()).toNumber(), ethBridge: { bridge: coreContracts.bridge, @@ -285,35 +283,28 @@ export const createNewTokenBridge = async ( rollup: rollup.address, sequencerInbox: coreContracts.sequencerInbox, }, - explorerUrl: '', - isArbitrum: true, isCustom: true, name: 'OrbitChain', - partnerChainID: l1NetworkInfo.chainId, - partnerChainIDs: [], + parentChainId: l1NetworkInfo.chainId, retryableLifetimeSeconds: 7 * 24 * 60 * 60, - nitroGenesisBlock: 0, - nitroGenesisL1Block: 0, - depositTimeout: 900000, tokenBridge: { - l1CustomGateway: parentChainContracts.customGateway, - l1ERC20Gateway: parentChainContracts.standardGateway, - l1GatewayRouter: parentChainContracts.router, - l1MultiCall: parentChainContracts.multicall, + parentCustomGateway: parentChainContracts.customGateway, + parentErc20Gateway: parentChainContracts.standardGateway, + parentGatewayRouter: parentChainContracts.router, + parentMultiCall: parentChainContracts.multicall, // todo: fix - l1ProxyAdmin: constants.AddressZero, - l1Weth: parentChainContracts.weth, - l1WethGateway: parentChainContracts.wethGateway, - - l2CustomGateway: orbitChainContracts.customGateway, - l2ERC20Gateway: orbitChainContracts.standardGateway, - l2GatewayRouter: orbitChainContracts.router, - l2Multicall: orbitChainContracts.multicall, - l2ProxyAdmin: orbitChainContracts.proxyAdmin, - l2Weth: orbitChainContracts.weth, - l2WethGateway: orbitChainContracts.wethGateway, + parentProxyAdmin: constants.AddressZero, + parentWeth: parentChainContracts.weth, + parentWethGateway: parentChainContracts.wethGateway, + + childCustomGateway: orbitChainContracts.customGateway, + childErc20Gateway: orbitChainContracts.standardGateway, + childGatewayRouter: orbitChainContracts.router, + childMultiCall: orbitChainContracts.multicall, + childProxyAdmin: orbitChainContracts.proxyAdmin, + childWeth: orbitChainContracts.weth, + childWethGateway: orbitChainContracts.wethGateway, }, - blockTime: arbitrumSdkConstants.ARB_MINIMUM_BLOCK_TIME_IN_SECONDS, } return { @@ -378,22 +369,22 @@ export const createERC20Bridge = async ( tokenBridgeContracts: { l2Contracts: { - customGateway: l2Network.tokenBridge.l1CustomGateway, - multicall: l2Network.tokenBridge.l1MultiCall, - proxyAdmin: l2Network.tokenBridge.l1ProxyAdmin, - router: l2Network.tokenBridge.l1GatewayRouter, - standardGateway: l2Network.tokenBridge.l1ERC20Gateway, - weth: l2Network.tokenBridge.l1Weth, - wethGateway: l2Network.tokenBridge.l1WethGateway, + customGateway: l2Network!.tokenBridge!.parentCustomGateway, + multicall: l2Network!.tokenBridge!.parentMultiCall, + proxyAdmin: l2Network!.tokenBridge!.parentProxyAdmin, + router: l2Network!.tokenBridge!.parentGatewayRouter, + standardGateway: l2Network!.tokenBridge!.parentErc20Gateway, + weth: l2Network!.tokenBridge!.parentWeth, + wethGateway: l2Network!.tokenBridge!.parentWethGateway, }, l3Contracts: { - customGateway: l2Network.tokenBridge.l2CustomGateway, - multicall: l2Network.tokenBridge.l2Multicall, - proxyAdmin: l2Network.tokenBridge.l2ProxyAdmin, - router: l2Network.tokenBridge.l2GatewayRouter, - standardGateway: l2Network.tokenBridge.l2ERC20Gateway, - weth: l2Network.tokenBridge.l2Weth, - wethGateway: l2Network.tokenBridge.l2WethGateway, + customGateway: l2Network!.tokenBridge!.childCustomGateway, + multicall: l2Network!.tokenBridge!.childMultiCall, + proxyAdmin: l2Network!.tokenBridge!.childProxyAdmin, + router: l2Network!.tokenBridge!.childGatewayRouter, + standardGateway: l2Network!.tokenBridge!.childErc20Gateway, + weth: l2Network!.tokenBridge!.childWeth, + wethGateway: l2Network!.tokenBridge!.childWethGateway, }, }, } diff --git a/yarn.lock b/yarn.lock index 00a2955..6a7d012 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,6 +12,11 @@ resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q== +"@adraffy/ens-normalize@1.10.1": + version "1.10.1" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz#63430d04bd8c5e74f8d7d049338f1cd9d4f02069" + integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw== + "@arbitrum/nitro-contracts@1.1.1", "@arbitrum/nitro-contracts@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@arbitrum/nitro-contracts/-/nitro-contracts-1.1.1.tgz#2d8a2f9ab757bb7654562aebe435bff833c4b98d" @@ -22,19 +27,20 @@ "@openzeppelin/contracts-upgradeable" "4.5.2" patch-package "^6.4.7" -"@arbitrum/orbit-sdk@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@arbitrum/orbit-sdk/-/orbit-sdk-0.8.0.tgz#67b437afb2b2d17f9ec28391bcbbde9689c42a04" - integrity sha512-UrcCOqDA3crCKIhOW957DmGvglPkpU/VT1QvcgCD+i4UFjkyT0/aMizVoj8AgsLaq5X46trMN2HKBkrAEjhLlg== +"@arbitrum/orbit-sdk@^0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@arbitrum/orbit-sdk/-/orbit-sdk-0.17.1.tgz#55ab88af2a98fc6b3cc1d792564e334d85f8278b" + integrity sha512-I9rlYgc+USH55kAlLXRGpN+i7vd2aUs7cbiCUJtCyOyBXdpQKHvF5gHKW/tpgrNvTrcGNEUv7F0p05ykYf2V2w== dependencies: - "@arbitrum/sdk" "^3.2.0" + "@arbitrum/sdk" "^4.0.0" "@arbitrum/token-bridge-contracts" "^1.2.1" + "@safe-global/protocol-kit" "^4.0.2" ethers "^5.7.2" -"@arbitrum/sdk@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@arbitrum/sdk/-/sdk-3.2.0.tgz#9cc2d2d1df929c7a1702f366a444d1439d17dc08" - integrity sha512-Y8NyL1EgWE8SGRFFxtqYIedQzKe7pMS9P9j0iDQ3eL1xvOf0t0WKb8vcta0cP2TcAOOpRZ3TWKPVfpBtwMsXCg== +"@arbitrum/sdk@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@arbitrum/sdk/-/sdk-4.0.0.tgz#8eb2deed1a438250acb4084a4bb8fc7eae7659b6" + integrity sha512-wNZFRs4yYxd6Pyc6xEjksp3C59PikmmVPIw49ceMoLY5D0e6xJt2nuA7jjsemDgRe7q6EvLFvHAY2At6XUWrkg== dependencies: "@ethersproject/address" "^5.0.8" "@ethersproject/bignumber" "^5.1.1" @@ -547,6 +553,11 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== +"@noble/hashes@^1.3.3": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" + integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== + "@noble/hashes@~1.3.0", "@noble/hashes@~1.3.2": version "1.3.3" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" @@ -830,6 +841,33 @@ proper-lockfile "^4.1.1" solidity-ast "^0.4.51" +"@safe-global/protocol-kit@^4.0.2": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@safe-global/protocol-kit/-/protocol-kit-4.0.3.tgz#d8195bd4d7839dd816bac4211bd08813e1ad3780" + integrity sha512-r/HguW5jRqC7dXa+2uy2k233b3XKASrnjOuF7ZFtybXqxRMCuAjptM1Veqmhj+/olLRuh7toupwEtRTYepBgMQ== + dependencies: + "@noble/hashes" "^1.3.3" + "@safe-global/safe-core-sdk-types" "^5.0.3" + "@safe-global/safe-deployments" "^1.37.1" + abitype "^1.0.2" + ethereumjs-util "^7.1.5" + ethers "^6.13.1" + semver "^7.6.2" + +"@safe-global/safe-core-sdk-types@^5.0.3": + version "5.0.3" + resolved "https://registry.yarnpkg.com/@safe-global/safe-core-sdk-types/-/safe-core-sdk-types-5.0.3.tgz#0093898a0585efcae01b4da9cdd5998bc1f4a251" + integrity sha512-SNoIq/bYeUvxtB9bn+9FVMcCW3SCOJaK6crRN7DXY+N2xaLtTMAaGeUCPuOGsHxfAJVkO+CdiwWNFoqt9GN0Zg== + dependencies: + abitype "^1.0.2" + +"@safe-global/safe-deployments@^1.37.1": + version "1.37.2" + resolved "https://registry.yarnpkg.com/@safe-global/safe-deployments/-/safe-deployments-1.37.2.tgz#d63947bf631d63f5991f3732fad08b17b7264505" + integrity sha512-kWRim5vY9W/yNKUUehUQDhCHz7NWzXjhkpMDvvnrrkEn9U461zwCcmJmPVnPrjnaY4dPpJsGZSzUuU4+uxH+vg== + dependencies: + semver "^7.6.2" + "@scure/base@~1.1.0": version "1.1.1" resolved "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz" @@ -991,6 +1029,11 @@ resolved "https://registry.npmjs.org/@types/node/-/node-20.2.5.tgz" integrity sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ== +"@types/node@18.15.13": + version "18.15.13" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.13.tgz#f64277c341150c979e42b00e4ac289290c9df469" + integrity sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q== + "@types/pbkdf2@^3.0.0": version "3.1.0" resolved "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz" @@ -1119,6 +1162,11 @@ abitype@0.9.8: resolved "https://registry.yarnpkg.com/abitype/-/abitype-0.9.8.tgz#1f120b6b717459deafd213dfbf3a3dd1bf10ae8c" integrity sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ== +abitype@^1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.5.tgz#29d0daa3eea867ca90f7e4123144c1d1270774b6" + integrity sha512-YzDhti7cjlfaBhHutMaboYB21Ha3rXR9QTkNJFzYC4kC8YclaiwPBBBJY8ejFdu2wnJeZCVZSMlQJ7fi8S6hsw== + abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" @@ -1169,6 +1217,11 @@ aes-js@3.0.0: resolved "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz" integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== +aes-js@4.0.0-beta.5: + version "4.0.0-beta.5" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873" + integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== + agent-base@6: version "6.0.2" resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" @@ -2044,7 +2097,7 @@ ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1: ethjs-util "0.1.6" rlp "^2.2.3" -ethereumjs-util@^7.0.3: +ethereumjs-util@^7.0.3, ethereumjs-util@^7.1.5: version "7.1.5" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== @@ -2091,6 +2144,19 @@ ethers@^5.1.0, ethers@^5.7.1, ethers@^5.7.2: "@ethersproject/web" "5.7.1" "@ethersproject/wordlists" "5.7.0" +ethers@^6.13.1: + version "6.13.1" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.13.1.tgz#2b9f9c7455cde9d38b30fe6589972eb083652961" + integrity sha512-hdJ2HOxg/xx97Lm9HdCWk949BfYqYWpyw4//78SiwOLgASyfrNszfMUNB2joKjvGUdwhHfaiMMFFwacVVoLR9A== + dependencies: + "@adraffy/ens-normalize" "1.10.1" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@types/node" "18.15.13" + aes-js "4.0.0-beta.5" + tslib "2.4.0" + ws "8.17.1" + ethjs-util@0.1.6, ethjs-util@^0.1.6: version "0.1.6" resolved "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz" @@ -3564,6 +3630,11 @@ semver@^7.2.1, semver@^7.3.7: dependencies: lru-cache "^6.0.0" +semver@^7.6.2: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + serialize-javascript@6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" @@ -3840,6 +3911,11 @@ ts-node@^10.9.1: v8-compile-cache-lib "^3.0.1" yn "3.1.1" +tslib@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + tslib@^1.8.1, tslib@^1.9.3: version "1.14.1" resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" @@ -4076,6 +4152,11 @@ ws@8.13.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== +ws@8.17.1: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== + ws@^7.4.6: version "7.5.9" resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz"