From 6bce7b658ea0c6f29f938a764223495d5328a8de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dragi=C5=A1a=20Spasojevi=C4=87?= Date: Tue, 8 Oct 2024 12:24:23 +0200 Subject: [PATCH 1/2] refactor: return object from parent chain validator --- src/actions/buildInvalidateKeysetHash.ts | 2 +- src/actions/buildSetIsBatchPoster.ts | 2 +- src/actions/buildSetMaxTimeVariation.ts | 2 +- src/actions/buildSetValidKeyset.ts | 2 +- src/createRollupFetchTransactionHash.ts | 2 +- ...RollupPrepareCustomFeeTokenApprovalTransactionRequest.ts | 2 +- src/createRollupPrepareDeploymentParamsConfig.ts | 6 +++--- src/createRollupPrepareTransactionRequest.ts | 2 +- ...BridgePrepareCustomFeeTokenApprovalTransactionRequest.ts | 2 +- ...ateTokenBridgePrepareSetWethGatewayTransactionRequest.ts | 2 +- src/createTokenBridgePrepareTransactionRequest.ts | 2 +- src/getDefaultConfirmPeriodBlocks.ts | 2 +- src/getDefaultSequencerInboxMaxTimeVariation.ts | 2 +- src/prepareNodeConfig.ts | 4 +++- src/rollupAdminLogicPrepareTransactionRequest.ts | 2 +- src/sequencerInboxPrepareTransactionRequest.ts | 2 +- src/setValidKeysetPrepareTransactionRequest.ts | 2 +- src/types/ParentChain.ts | 4 ++-- src/utils/getParentChainFromId.ts | 2 +- src/utils/getRollupCreatorAddress.ts | 2 +- src/utils/getTokenBridgeCreatorAddress.ts | 2 +- 21 files changed, 26 insertions(+), 24 deletions(-) diff --git a/src/actions/buildInvalidateKeysetHash.ts b/src/actions/buildInvalidateKeysetHash.ts index 1034fca1..89327d44 100644 --- a/src/actions/buildInvalidateKeysetHash.ts +++ b/src/actions/buildInvalidateKeysetHash.ts @@ -35,7 +35,7 @@ export async function buildInvalidateKeysetHash { - const chainId = validateParentChain(client); + const { chainId } = validateParentChain(client); const request = await client.prepareTransactionRequest({ chain: client.chain, diff --git a/src/actions/buildSetIsBatchPoster.ts b/src/actions/buildSetIsBatchPoster.ts index e2cad7d9..380028fa 100644 --- a/src/actions/buildSetIsBatchPoster.ts +++ b/src/actions/buildSetIsBatchPoster.ts @@ -29,7 +29,7 @@ export async function buildSetIsBatchPoster( params, }: BuildSetIsBatchPosterParameters & { params: { enable: boolean } }, ): Promise { - const chainId = validateParentChain(client); + const { chainId } = validateParentChain(client); const request = await client.prepareTransactionRequest({ chain: client.chain, diff --git a/src/actions/buildSetMaxTimeVariation.ts b/src/actions/buildSetMaxTimeVariation.ts index 8c0b3d16..bf070182 100644 --- a/src/actions/buildSetMaxTimeVariation.ts +++ b/src/actions/buildSetMaxTimeVariation.ts @@ -31,7 +31,7 @@ export async function buildSetMaxTimeVariation params, }: BuildSetMaxTimeVariationParameters, ): Promise { - const chainId = validateParentChain(client); + const { chainId } = validateParentChain(client); const request = await client.prepareTransactionRequest({ chain: client.chain, diff --git a/src/actions/buildSetValidKeyset.ts b/src/actions/buildSetValidKeyset.ts index 70f0ca85..400afdf2 100644 --- a/src/actions/buildSetValidKeyset.ts +++ b/src/actions/buildSetValidKeyset.ts @@ -35,7 +35,7 @@ export async function buildSetValidKeyset( params, }: BuildSetValidKeysetParameters, ): Promise { - const chainId = validateParentChain(client); + const { chainId } = validateParentChain(client); const request = await client.prepareTransactionRequest({ chain: client.chain, diff --git a/src/createRollupFetchTransactionHash.ts b/src/createRollupFetchTransactionHash.ts index 65c7bebf..c1c2e8b9 100644 --- a/src/createRollupFetchTransactionHash.ts +++ b/src/createRollupFetchTransactionHash.ts @@ -62,7 +62,7 @@ export async function createRollupFetchTransactionHash) { - const chainId = validateParentChain(publicClient); + const { chainId } = validateParentChain(publicClient); const fromBlock = chainId in earliestRollupCreatorDeploymentBlockNumber diff --git a/src/createRollupPrepareCustomFeeTokenApprovalTransactionRequest.ts b/src/createRollupPrepareCustomFeeTokenApprovalTransactionRequest.ts index 41be6dc1..989698e7 100644 --- a/src/createRollupPrepareCustomFeeTokenApprovalTransactionRequest.ts +++ b/src/createRollupPrepareCustomFeeTokenApprovalTransactionRequest.ts @@ -31,7 +31,7 @@ export async function createRollupPrepareCustomFeeTokenApprovalTransactionReques publicClient, rollupCreatorAddressOverride, }: CreateRollupPrepareCustomFeeTokenApprovalTransactionRequestParams) { - const chainId = validateParentChain(publicClient); + const { chainId } = validateParentChain(publicClient); const fees = await createRollupGetRetryablesFeesWithDefaults(publicClient, { account, diff --git a/src/createRollupPrepareDeploymentParamsConfig.ts b/src/createRollupPrepareDeploymentParamsConfig.ts index 198baff3..c564c772 100644 --- a/src/createRollupPrepareDeploymentParamsConfig.ts +++ b/src/createRollupPrepareDeploymentParamsConfig.ts @@ -67,11 +67,11 @@ export function createRollupPrepareDeploymentParamsConfig, { chainConfig, ...params }: CreateRollupPrepareDeploymentParamsConfigParams, ): CreateRollupPrepareDeploymentParamsConfigResult { - const parentChainId = validateParentChain(client); + const { chainId } = validateParentChain(client); const defaultsBasedOnParentChain = { - confirmPeriodBlocks: getDefaultConfirmPeriodBlocks(parentChainId), - sequencerInboxMaxTimeVariation: getDefaultSequencerInboxMaxTimeVariation(parentChainId), + confirmPeriodBlocks: getDefaultConfirmPeriodBlocks(chainId), + sequencerInboxMaxTimeVariation: getDefaultSequencerInboxMaxTimeVariation(chainId), }; return { diff --git a/src/createRollupPrepareTransactionRequest.ts b/src/createRollupPrepareTransactionRequest.ts index 221f9e53..7a01f371 100644 --- a/src/createRollupPrepareTransactionRequest.ts +++ b/src/createRollupPrepareTransactionRequest.ts @@ -47,7 +47,7 @@ export async function createRollupPrepareTransactionRequest) { - const chainId = validateParentChain(publicClient); + const { chainId } = validateParentChain(publicClient); if (params.batchPosters.length === 0 || params.batchPosters.includes(zeroAddress)) { throw new Error(`"params.batchPosters" can't be empty or contain the zero address.`); diff --git a/src/createTokenBridgePrepareCustomFeeTokenApprovalTransactionRequest.ts b/src/createTokenBridgePrepareCustomFeeTokenApprovalTransactionRequest.ts index 1e75c7c6..11614683 100644 --- a/src/createTokenBridgePrepareCustomFeeTokenApprovalTransactionRequest.ts +++ b/src/createTokenBridgePrepareCustomFeeTokenApprovalTransactionRequest.ts @@ -28,7 +28,7 @@ export async function createTokenBridgePrepareCustomFeeTokenApprovalTransactionR publicClient, tokenBridgeCreatorAddressOverride, }: CreateTokenBridgePrepareCustomFeeTokenApprovalTransactionRequestParams) { - const chainId = validateParentChain(publicClient); + const { chainId } = validateParentChain(publicClient); const request = await approvePrepareTransactionRequest({ address: nativeToken, diff --git a/src/createTokenBridgePrepareSetWethGatewayTransactionRequest.ts b/src/createTokenBridgePrepareSetWethGatewayTransactionRequest.ts index e746ee8d..f5128c6f 100644 --- a/src/createTokenBridgePrepareSetWethGatewayTransactionRequest.ts +++ b/src/createTokenBridgePrepareSetWethGatewayTransactionRequest.ts @@ -103,7 +103,7 @@ export async function createTokenBridgePrepareSetWethGatewayTransactionRequest< retryableGasOverrides, tokenBridgeCreatorAddressOverride, }: CreateTokenBridgePrepareRegisterWethGatewayTransactionRequestParams) { - const chainId = validateParentChain(parentChainPublicClient); + const { chainId } = validateParentChain(parentChainPublicClient); // Ensure that networks are registered await registerNewNetwork( diff --git a/src/createTokenBridgePrepareTransactionRequest.ts b/src/createTokenBridgePrepareTransactionRequest.ts index 6755f5a2..de213e71 100644 --- a/src/createTokenBridgePrepareTransactionRequest.ts +++ b/src/createTokenBridgePrepareTransactionRequest.ts @@ -49,7 +49,7 @@ export async function createTokenBridgePrepareTransactionRequest< retryableGasOverrides, tokenBridgeCreatorAddressOverride, }: CreateTokenBridgePrepareTransactionRequestParams) { - const chainId = validateParentChain(parentChainPublicClient); + const { chainId } = validateParentChain(parentChainPublicClient); const isTokenBridgeAlreadyDeployed = await isTokenBridgeDeployed({ parentChainPublicClient, diff --git a/src/getDefaultConfirmPeriodBlocks.ts b/src/getDefaultConfirmPeriodBlocks.ts index 954676c4..b3bd33eb 100644 --- a/src/getDefaultConfirmPeriodBlocks.ts +++ b/src/getDefaultConfirmPeriodBlocks.ts @@ -7,7 +7,7 @@ import { base, baseSepolia } from './chains'; export function getDefaultConfirmPeriodBlocks( parentChainIdOrClient: ParentChainId | Client, ): bigint { - const parentChainId = validateParentChain(parentChainIdOrClient); + const { chainId: parentChainId } = validateParentChain(parentChainIdOrClient); const isMainnet = parentChainIsMainnet(parentChainId); const confirmPeriodBlocks = isMainnet ? 45_818n : 150n; diff --git a/src/getDefaultSequencerInboxMaxTimeVariation.ts b/src/getDefaultSequencerInboxMaxTimeVariation.ts index f3caf344..8cfd07c2 100644 --- a/src/getDefaultSequencerInboxMaxTimeVariation.ts +++ b/src/getDefaultSequencerInboxMaxTimeVariation.ts @@ -13,7 +13,7 @@ export type SequencerInboxMaxTimeVariation = { export function getDefaultSequencerInboxMaxTimeVariation( parentChainIdOrClient: ParentChainId | Client, ): SequencerInboxMaxTimeVariation { - const parentChainId = validateParentChain(parentChainIdOrClient); + const { chainId: parentChainId } = validateParentChain(parentChainIdOrClient); const delaySeconds = 60 * 60 * 24 * 4; // 4 days; const futureSeconds = 60 * 60; // 1 hour; diff --git a/src/prepareNodeConfig.ts b/src/prepareNodeConfig.ts index 60a010b9..a5481e83 100644 --- a/src/prepareNodeConfig.ts +++ b/src/prepareNodeConfig.ts @@ -60,13 +60,15 @@ export function prepareNodeConfig({ throw new Error(`"parentChainBeaconRpcUrl" is required for L2 Orbit chains.`); } + const { chainId: parentChainIdValidated } = validateParentChain(parentChainId); + const config: NodeConfig = { 'chain': { 'info-json': stringifyInfoJson([ { 'chain-id': chainConfig.chainId, 'parent-chain-id': parentChainId, - 'parent-chain-is-arbitrum': parentChainIsArbitrum(validateParentChain(parentChainId)), + 'parent-chain-is-arbitrum': parentChainIsArbitrum(parentChainIdValidated), 'chain-name': chainName, 'chain-config': chainConfig, 'rollup': { diff --git a/src/rollupAdminLogicPrepareTransactionRequest.ts b/src/rollupAdminLogicPrepareTransactionRequest.ts index 05cc9762..ee497c67 100644 --- a/src/rollupAdminLogicPrepareTransactionRequest.ts +++ b/src/rollupAdminLogicPrepareTransactionRequest.ts @@ -83,7 +83,7 @@ export async function rollupAdminLogicPrepareTransactionRequest< client: PublicClient, params: RollupAdminLogicPrepareTransactionRequestParameters, ) { - const chainId = validateParentChain(client); + const { chainId } = validateParentChain(client); // params is extending RollupAdminLogicPrepareFunctionDataParameters, it's safe to cast const { to, data, value } = rollupAdminLogicPrepareFunctionData({ diff --git a/src/sequencerInboxPrepareTransactionRequest.ts b/src/sequencerInboxPrepareTransactionRequest.ts index 2d84b65a..199f9b9e 100644 --- a/src/sequencerInboxPrepareTransactionRequest.ts +++ b/src/sequencerInboxPrepareTransactionRequest.ts @@ -80,7 +80,7 @@ export async function sequencerInboxPrepareTransactionRequest< client: PublicClient, params: SequencerInboxPrepareTransactionRequestParameters, ) { - const chainId = validateParentChain(client); + const { chainId } = validateParentChain(client); // params is extending SequencerInboxPrepareFunctionDataParameters, it's safe to cast const { to, data, value } = sequencerInboxPrepareFunctionData({ diff --git a/src/setValidKeysetPrepareTransactionRequest.ts b/src/setValidKeysetPrepareTransactionRequest.ts index 51ab5d17..d00fe862 100644 --- a/src/setValidKeysetPrepareTransactionRequest.ts +++ b/src/setValidKeysetPrepareTransactionRequest.ts @@ -18,7 +18,7 @@ export async function setValidKeysetPrepareTransactionRequest) { - const chainId = validateParentChain(publicClient); + const { chainId } = validateParentChain(publicClient); // @ts-ignore (todo: fix viem type issue) const request = await publicClient.prepareTransactionRequest({ diff --git a/src/types/ParentChain.ts b/src/types/ParentChain.ts index 7fe0d6c6..715cb4c1 100644 --- a/src/types/ParentChain.ts +++ b/src/types/ParentChain.ts @@ -16,12 +16,12 @@ function isValidParentChainId(parentChainId: number | undefined): parentChainId export function validateParentChain( chainIdOrClient: number | Client, -): ParentChainId { +): { chainId: ParentChainId } { const chainId = typeof chainIdOrClient === 'number' ? chainIdOrClient : chainIdOrClient.chain?.id; if (!isValidParentChainId(chainId)) { throw new Error(`Parent chain not supported: ${chainId}`); } - return chainId; + return { chainId }; } diff --git a/src/utils/getParentChainFromId.ts b/src/utils/getParentChainFromId.ts index ff2ebddb..409d34fd 100644 --- a/src/utils/getParentChainFromId.ts +++ b/src/utils/getParentChainFromId.ts @@ -4,7 +4,7 @@ import { chains } from '../chains'; import { ParentChain, validateParentChain } from '../types/ParentChain'; export function getParentChainFromId(chainId: number): ParentChain { - const parentChainId = validateParentChain(chainId); + const { chainId: parentChainId } = validateParentChain(chainId); return extractChain({ chains, diff --git a/src/utils/getRollupCreatorAddress.ts b/src/utils/getRollupCreatorAddress.ts index c3515c38..e6fd5b5f 100644 --- a/src/utils/getRollupCreatorAddress.ts +++ b/src/utils/getRollupCreatorAddress.ts @@ -6,7 +6,7 @@ import { validateParentChain } from '../types/ParentChain'; export function getRollupCreatorAddress( client: Client, ) { - const chainId = validateParentChain(client); + const { chainId } = validateParentChain(client); if (!rollupCreatorAddress[chainId]) { throw new Error(`Parent chain not supported: ${chainId}`); diff --git a/src/utils/getTokenBridgeCreatorAddress.ts b/src/utils/getTokenBridgeCreatorAddress.ts index 5fe88893..d66d55ef 100644 --- a/src/utils/getTokenBridgeCreatorAddress.ts +++ b/src/utils/getTokenBridgeCreatorAddress.ts @@ -6,7 +6,7 @@ import { validateParentChain } from '../types/ParentChain'; export function getTokenBridgeCreatorAddress( client: Client, ) { - const chainId = validateParentChain(client); + const { chainId } = validateParentChain(client); if (!tokenBridgeCreatorAddress[chainId]) { throw new Error(`Parent chain not supported: ${chainId}`); From ed413fdb32484469e360eff1d4e0d8a44859c5e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dragi=C5=A1a=20Spasojevi=C4=87?= Date: Tue, 8 Oct 2024 12:26:20 +0200 Subject: [PATCH 2/2] reduce diff --- src/createRollupPrepareDeploymentParamsConfig.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/createRollupPrepareDeploymentParamsConfig.ts b/src/createRollupPrepareDeploymentParamsConfig.ts index c564c772..08173204 100644 --- a/src/createRollupPrepareDeploymentParamsConfig.ts +++ b/src/createRollupPrepareDeploymentParamsConfig.ts @@ -67,11 +67,11 @@ export function createRollupPrepareDeploymentParamsConfig, { chainConfig, ...params }: CreateRollupPrepareDeploymentParamsConfigParams, ): CreateRollupPrepareDeploymentParamsConfigResult { - const { chainId } = validateParentChain(client); + const { chainId: parentChainId } = validateParentChain(client); const defaultsBasedOnParentChain = { - confirmPeriodBlocks: getDefaultConfirmPeriodBlocks(chainId), - sequencerInboxMaxTimeVariation: getDefaultSequencerInboxMaxTimeVariation(chainId), + confirmPeriodBlocks: getDefaultConfirmPeriodBlocks(parentChainId), + sequencerInboxMaxTimeVariation: getDefaultSequencerInboxMaxTimeVariation(parentChainId), }; return {