From 4dbd4711516f6de0aaffff14288fef8911385cdf Mon Sep 17 00:00:00 2001 From: Aleksa Colovic Date: Fri, 19 Dec 2025 12:25:12 +0100 Subject: [PATCH 1/2] feat: Create HyperCore account if destination token is USDC --- src/cctp-finalizer/utils/evmUtils.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/cctp-finalizer/utils/evmUtils.ts b/src/cctp-finalizer/utils/evmUtils.ts index f4b75c80d9..3adad1e408 100644 --- a/src/cctp-finalizer/utils/evmUtils.ts +++ b/src/cctp-finalizer/utils/evmUtils.ts @@ -7,6 +7,8 @@ import { CHAIN_IDs, depositToHypercore, decodeCctpV2HookData, + TOKEN_SYMBOLS_MAP, + CCTPHookData, } from "../../utils"; import { CONTRACT_ADDRESSES } from "../../common/ContractAddresses"; import { DestinationInfo } from "../types"; @@ -36,13 +38,19 @@ export async function checkIfAlreadyProcessedEvm( return await utils.hasCCTPMessageBeenProcessedEvm(nonce, contract); } +export function shouldCreateHyperCoreAccount(hookData?: CCTPHookData): boolean { + const isDestinationUsdc = hookData?.finalToken === TOKEN_SYMBOLS_MAP.USDC.addresses[CHAIN_IDs.HYPEREVM]; + const isSponsoredFlow = hookData?.maxBpsToSponsor > 0; + return isSponsoredFlow || isDestinationUsdc; +} + export async function createHyperCoreAccountIfNotExists( message: string, signer: ethers.Wallet, logger: winston.Logger ): Promise { const hookData = decodeCctpV2HookData(message); - if (!hookData || hookData.maxBpsToSponsor === 0) { + if (shouldCreateHyperCoreAccount(hookData)) { logger.debug({ at: "evmUtils#createHyperCoreAccountIfNotExists", message: "Skipping deposit to Hypercore because its not sponsored flow", From 93f253b0098a84eb104a7cd7789a1481f76f6959 Mon Sep 17 00:00:00 2001 From: Aleksa Colovic Date: Fri, 19 Dec 2025 12:56:05 +0100 Subject: [PATCH 2/2] fix condition --- src/cctp-finalizer/utils/evmUtils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cctp-finalizer/utils/evmUtils.ts b/src/cctp-finalizer/utils/evmUtils.ts index 3adad1e408..abc48ff46b 100644 --- a/src/cctp-finalizer/utils/evmUtils.ts +++ b/src/cctp-finalizer/utils/evmUtils.ts @@ -50,7 +50,7 @@ export async function createHyperCoreAccountIfNotExists( logger: winston.Logger ): Promise { const hookData = decodeCctpV2HookData(message); - if (shouldCreateHyperCoreAccount(hookData)) { + if (!shouldCreateHyperCoreAccount(hookData)) { logger.debug({ at: "evmUtils#createHyperCoreAccountIfNotExists", message: "Skipping deposit to Hypercore because its not sponsored flow",