From 40ce36242c4286af62a7ac33b7b3bf93162f1152 Mon Sep 17 00:00:00 2001 From: Akash Date: Sat, 15 Jun 2024 19:50:29 +0530 Subject: [PATCH] fix : update for safe and finalized --- scripts/rpcConfig/constants/confirmations.ts | 40 +------ .../constants/defaultFinalityBucket.ts | 8 ++ scripts/rpcConfig/constants/finality.ts | 108 +----------------- .../constants/zeroBlockFinalityChains.ts | 11 -- scripts/rpcConfig/rpcConfig.ts | 22 +++- src/socket-types.ts | 14 +-- src/transmission-utils.ts | 44 ++----- 7 files changed, 46 insertions(+), 201 deletions(-) create mode 100644 scripts/rpcConfig/constants/defaultFinalityBucket.ts delete mode 100644 scripts/rpcConfig/constants/zeroBlockFinalityChains.ts diff --git a/scripts/rpcConfig/constants/confirmations.ts b/scripts/rpcConfig/constants/confirmations.ts index 2122152d..72099c9b 100644 --- a/scripts/rpcConfig/constants/confirmations.ts +++ b/scripts/rpcConfig/constants/confirmations.ts @@ -1,44 +1,6 @@ import { ChainSlug } from "../../../src"; export const confirmations = { - [ChainSlug.AEVO]: 2, - [ChainSlug.ARBITRUM]: 1, - [ChainSlug.LYRA]: 2, - [ChainSlug.OPTIMISM]: 15, - [ChainSlug.BSC]: 1, [ChainSlug.POLYGON_MAINNET]: 256, - [ChainSlug.MAINNET]: 18, - [ChainSlug.BASE]: 1, - [ChainSlug.MODE]: 2, - [ChainSlug.ARBITRUM_GOERLI]: 1, - [ChainSlug.AEVO_TESTNET]: 1, - [ChainSlug.LYRA_TESTNET]: 1, - [ChainSlug.OPTIMISM_GOERLI]: 1, - [ChainSlug.GOERLI]: 1, - [ChainSlug.XAI_TESTNET]: 1, - [ChainSlug.SX_NETWORK_TESTNET]: 1, - [ChainSlug.SX_NETWORK]: 1, - [ChainSlug.MODE_TESTNET]: 1, - [ChainSlug.VICTION_TESTNET]: 1, - [ChainSlug.CDK_TESTNET]: 1, - [ChainSlug.ARBITRUM_SEPOLIA]: 1, - [ChainSlug.OPTIMISM_SEPOLIA]: 1, - [ChainSlug.SEPOLIA]: 1, - [ChainSlug.ANCIENT8_TESTNET]: 1, - [ChainSlug.ANCIENT8_TESTNET2]: 1, - [ChainSlug.HOOK_TESTNET]: 1, - [ChainSlug.HOOK]: 1, - [ChainSlug.PARALLEL]: 1, - [ChainSlug.MANTLE]: 1, - [ChainSlug.REYA_CRONOS]: 1, - [ChainSlug.REYA]: 0, - [ChainSlug.SYNDR_SEPOLIA_L3]: 1, - [ChainSlug.POLYNOMIAL_TESTNET]: 1, - [ChainSlug.BOB]: 0, - [ChainSlug.KINTO]: 0, - [ChainSlug.KINTO_DEVNET]: 0, - [ChainSlug.SIPHER_FUNKI_TESTNET]: 0, - [ChainSlug.WINR]: 0, - [ChainSlug.BLAST]: 0, - [ChainSlug.BSC_TESTNET]: 1, + [ChainSlug.MAINNET]: 6, }; diff --git a/scripts/rpcConfig/constants/defaultFinalityBucket.ts b/scripts/rpcConfig/constants/defaultFinalityBucket.ts new file mode 100644 index 00000000..2ef68df1 --- /dev/null +++ b/scripts/rpcConfig/constants/defaultFinalityBucket.ts @@ -0,0 +1,8 @@ +import { ChainSlug } from "../../../src/enums/chainSlug"; + +import { FinalityBucket } from "../../../src/socket-types"; + +export const defaultFinalityBucket = { + [ChainSlug.POLYGON_MAINNET]: FinalityBucket.slow, + [ChainSlug.MAINNET]: FinalityBucket.medium, +}; diff --git a/scripts/rpcConfig/constants/finality.ts b/scripts/rpcConfig/constants/finality.ts index 0f649b57..b37c5de2 100644 --- a/scripts/rpcConfig/constants/finality.ts +++ b/scripts/rpcConfig/constants/finality.ts @@ -1,117 +1,13 @@ -import { arbL3Chains, opStackL2Chain, polygonCDKChains } from "../../../src"; import { ChainSlug } from "../../../src/enums/chainSlug"; -import { - FinalityBucket, - ChainFinalityType, - ChainFinalityInfo, -} from "../../../src/socket-types"; -import { chainsWithZeroBlockFinality } from "./zeroBlockFinalityChains"; - -const zeroBlockFinalityDefault = { - type: ChainFinalityType.time, - defaultBucket: FinalityBucket.fast, - [FinalityBucket.fast]: 30, - [FinalityBucket.medium]: 60, - [FinalityBucket.slow]: 120, -}; - -const polygonCDKChainsDefault = { - type: ChainFinalityType.block, - defaultBucket: FinalityBucket.fast, - [FinalityBucket.fast]: 1, - [FinalityBucket.medium]: 10, - [FinalityBucket.slow]: 20, -}; - -const opStackL2ChainDefault = { - type: ChainFinalityType.block, - defaultBucket: FinalityBucket.fast, - [FinalityBucket.fast]: 1, - [FinalityBucket.medium]: 10, - [FinalityBucket.slow]: 20, -}; - -const arbL3ChainsDefault = { - type: ChainFinalityType.block, - defaultBucket: FinalityBucket.fast, - [FinalityBucket.fast]: 1, - [FinalityBucket.medium]: 10, - [FinalityBucket.slow]: 20, -}; - -const defaultFinality = { - type: ChainFinalityType.block, - defaultBucket: FinalityBucket.fast, - [FinalityBucket.fast]: 1, - [FinalityBucket.medium]: 10, - [FinalityBucket.slow]: 20, -}; +import { ChainFinalityInfo, FinalityBucket } from "../../../src/socket-types"; export const finalityOverrides: { [chainSlug in ChainSlug]?: ChainFinalityInfo; } = { - [ChainSlug.AEVO]: { - type: ChainFinalityType.block, - defaultBucket: FinalityBucket.fast, - [FinalityBucket.fast]: 2, - [FinalityBucket.medium]: 10, - [FinalityBucket.slow]: 20, - }, - - [ChainSlug.LYRA]: { - type: ChainFinalityType.block, - defaultBucket: FinalityBucket.fast, - [FinalityBucket.fast]: 2, - [FinalityBucket.medium]: 10, - [FinalityBucket.slow]: 20, - }, - [ChainSlug.OPTIMISM]: { - type: ChainFinalityType.block, - defaultBucket: FinalityBucket.fast, - [FinalityBucket.fast]: 15, - [FinalityBucket.medium]: 30, - [FinalityBucket.slow]: 40, - }, [ChainSlug.POLYGON_MAINNET]: { - type: ChainFinalityType.block, - defaultBucket: FinalityBucket.slow, - [FinalityBucket.fast]: 50, + [FinalityBucket.fast]: 64, [FinalityBucket.medium]: 150, [FinalityBucket.slow]: 256, }, - [ChainSlug.MAINNET]: { - type: ChainFinalityType.block, - defaultBucket: FinalityBucket.slow, - [FinalityBucket.fast]: 6, - [FinalityBucket.medium]: 10, - [FinalityBucket.slow]: 18, - }, - [ChainSlug.MODE]: { - type: ChainFinalityType.block, - defaultBucket: FinalityBucket.fast, - [FinalityBucket.fast]: 2, - [FinalityBucket.medium]: 10, - [FinalityBucket.slow]: 20, - }, -}; - -export const getFinality = (chainSlug: ChainSlug): ChainFinalityInfo => { - let finalityOverride = finalityOverrides[chainSlug]; - // if override exists, return it - if (finalityOverride) return finalityOverride; - - if (chainsWithZeroBlockFinality.includes(chainSlug)) { - return zeroBlockFinalityDefault; - } - if (polygonCDKChains.includes(chainSlug)) { - return polygonCDKChainsDefault; - } - if (opStackL2Chain.includes(chainSlug)) { - return opStackL2ChainDefault; - } - if (arbL3Chains.includes(chainSlug)) { - return arbL3ChainsDefault; - } - return defaultFinality; }; diff --git a/scripts/rpcConfig/constants/zeroBlockFinalityChains.ts b/scripts/rpcConfig/constants/zeroBlockFinalityChains.ts deleted file mode 100644 index 1ed0cd85..00000000 --- a/scripts/rpcConfig/constants/zeroBlockFinalityChains.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { ChainSlug } from "../../../src/enums/chainSlug"; - -export const chainsWithZeroBlockFinality = [ - ChainSlug.REYA, - ChainSlug.BOB, - ChainSlug.KINTO, - ChainSlug.KINTO_DEVNET, - ChainSlug.SIPHER_FUNKI_TESTNET, - ChainSlug.WINR, - ChainSlug.BLAST, -]; diff --git a/scripts/rpcConfig/rpcConfig.ts b/scripts/rpcConfig/rpcConfig.ts index 189aacd2..1b0a0147 100644 --- a/scripts/rpcConfig/rpcConfig.ts +++ b/scripts/rpcConfig/rpcConfig.ts @@ -17,6 +17,8 @@ import { arbL3Chains, polygonCDKChains, S3ChainConfig, + ChainFinalityInfo, + FinalityBucket, } from "../../src"; import { confirmations, @@ -26,8 +28,9 @@ import { prodFeesUpdaterSupportedChainSlugs, rpcs, version, - getFinality, + finalityOverrides, } from "./constants"; +import { defaultFinalityBucket } from "./constants/defaultFinalityBucket"; import { getChainTxData } from "./txdata-builder/generate-calldata"; import dotenv from "dotenv"; @@ -92,8 +95,9 @@ const getChainData = async ( chainTxData: await getChainTxData(chainSlug, txData), nativeToken: getCurrency(chainSlug), chainType: getChainType(chainSlug), - confirmations: confirmations[chainSlug], + confirmations: getConfirmations(chainSlug), finalityInfo: getFinality(chainSlug), + defaultFinalityBucket: getDefaultFinalityBucket(chainSlug), icon: icons[chainSlug], }; }; @@ -160,3 +164,17 @@ export const generateProdConfig = async (txData: TxData): Promise => { chainSlugToId: ChainSlugToId, }; }; + +export const getFinality = (chainSlug: ChainSlug): ChainFinalityInfo => { + return finalityOverrides[chainSlug]; +}; + +export const getDefaultFinalityBucket = ( + chainSlug: ChainSlug +): FinalityBucket => { + return defaultFinalityBucket[chainSlug] ?? FinalityBucket.fast; +}; + +export const getConfirmations = (chainSlug: ChainSlug) => { + return confirmations[chainSlug] ?? 0; +}; diff --git a/src/socket-types.ts b/src/socket-types.ts index 00bba999..584313cf 100644 --- a/src/socket-types.ts +++ b/src/socket-types.ts @@ -207,23 +207,16 @@ export enum ChainType { } export enum FinalityBucket { - fast = 1, - medium = 2, - slow = 3, + fast = 1, // latest + medium = 2, // safe + slow = 3, // finalized } export enum TransmissionParamFinalityType { bucket = 1, } -export enum ChainFinalityType { - block = 1, - time = 2, -} - export type ChainFinalityInfo = { - type: ChainFinalityType; - defaultBucket: FinalityBucket; [FinalityBucket.fast]: number; [FinalityBucket.medium]: number; [FinalityBucket.slow]: number; @@ -253,6 +246,7 @@ export interface S3ChainConfig { explorer?: string; icon?: string; finalityInfo?: ChainFinalityInfo; + defaultFinalityBucket?: FinalityBucket; } export type S3Config = { diff --git a/src/transmission-utils.ts b/src/transmission-utils.ts index 95860717..7467d96d 100644 --- a/src/transmission-utils.ts +++ b/src/transmission-utils.ts @@ -1,5 +1,3 @@ -import { ChainFinalityType } from "./socket-types"; - /* Transmission param format: - first byte - version - current version is 1 @@ -41,39 +39,19 @@ export const encodeTransmissionParams = ( }; export const isTxFinalized = ( - type: ChainFinalityType, currentBlock: number, eventBlock: number, - currentTime: number, - eventTime: number, - finalityBlockDiff: number, - finalityTimeDiff: number + finalityBlockDiff: number ) => { - if (type === ChainFinalityType.block) { - if ( - currentBlock == null || - currentBlock == undefined || - eventBlock == null || - eventBlock == undefined || - finalityBlockDiff == null || - finalityBlockDiff == undefined - ) { - throw new Error("Invalid data for block finality check"); - } - return currentBlock - eventBlock >= finalityBlockDiff; - } else if (type === ChainFinalityType.time) { - if ( - currentTime == null || - currentTime == undefined || - eventTime == null || - eventTime == undefined || - finalityTimeDiff == null || - finalityTimeDiff == undefined - ) { - throw new Error("Invalid data for time finality check"); - } - return currentTime - eventTime >= finalityTimeDiff; - } else { - throw new Error("Invalid finality type"); + if ( + currentBlock == null || + currentBlock == undefined || + eventBlock == null || + eventBlock == undefined || + finalityBlockDiff == null || + finalityBlockDiff == undefined + ) { + throw new Error("Invalid data for block finality check"); } + return currentBlock - eventBlock >= finalityBlockDiff; };