Skip to content

Commit

Permalink
fix : update for safe and finalized
Browse files Browse the repository at this point in the history
  • Loading branch information
tHeMaskedMan981 committed Jun 15, 2024
1 parent 7269de5 commit 40ce362
Show file tree
Hide file tree
Showing 7 changed files with 46 additions and 201 deletions.
40 changes: 1 addition & 39 deletions scripts/rpcConfig/constants/confirmations.ts
Original file line number Diff line number Diff line change
@@ -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,
};
8 changes: 8 additions & 0 deletions scripts/rpcConfig/constants/defaultFinalityBucket.ts
Original file line number Diff line number Diff line change
@@ -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,
};
108 changes: 2 additions & 106 deletions scripts/rpcConfig/constants/finality.ts
Original file line number Diff line number Diff line change
@@ -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;
};
11 changes: 0 additions & 11 deletions scripts/rpcConfig/constants/zeroBlockFinalityChains.ts

This file was deleted.

22 changes: 20 additions & 2 deletions scripts/rpcConfig/rpcConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ import {
arbL3Chains,
polygonCDKChains,
S3ChainConfig,
ChainFinalityInfo,
FinalityBucket,
} from "../../src";
import {
confirmations,
Expand All @@ -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";
Expand Down Expand Up @@ -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],
};
};
Expand Down Expand Up @@ -160,3 +164,17 @@ export const generateProdConfig = async (txData: TxData): Promise<S3Config> => {
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;
};
14 changes: 4 additions & 10 deletions src/socket-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -253,6 +246,7 @@ export interface S3ChainConfig {
explorer?: string;
icon?: string;
finalityInfo?: ChainFinalityInfo;
defaultFinalityBucket?: FinalityBucket;
}

export type S3Config = {
Expand Down
44 changes: 11 additions & 33 deletions src/transmission-utils.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import { ChainFinalityType } from "./socket-types";

/*
Transmission param format:
- first byte - version - current version is 1
Expand Down Expand Up @@ -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;
};

0 comments on commit 40ce362

Please sign in to comment.