Skip to content

Conversation

@dohaki
Copy link
Contributor

@dohaki dohaki commented Oct 31, 2025

Closes ACX-4608

Adds support for sponsored CCTP route strategy. The strategy is enabled for Sepolia Arbitrum -> HyperCore Testnet. Here is an example request.

Examples

Testnet

Below are some test transactions that at least validate that the signatures are correct and the values are correctly set. We can't test the full e2e flow yet though:

Mainnet

Below example deposit flow for simple transfer USDC with HyperEVM fallback as there is no link for USDC on Mainnet yet. This is the only flow that can be tested currently.

@linear
Copy link

linear bot commented Oct 31, 2025

@vercel
Copy link

vercel bot commented Oct 31, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
app-frontend-v3 Ready Ready Preview Comment Nov 11, 2025 9:08am
sepolia-frontend-v3 Ready Ready Preview Comment Nov 11, 2025 9:08am

Copy link
Contributor

@melisaguevara melisaguevara left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking good! Left some questions

Copy link
Member

@ashwinrava ashwinrava left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good! I've also been using this branch to create sponsored deposits from Arbitrum Sepolia and it's been working well.


export const SPONSORED_CCTP_DST_PERIPHERY_ADDRESSES = {
[CHAIN_IDs.HYPEREVM]: "0x7b164050bbc8e7ef3253e7db0d74b713ba3f1c95",
[CHAIN_IDs.HYPEREVM_TESTNET]: "0x0000000000000000000000000000000000000000",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be 0x06C61D54958a0772Ee8aF41789466d39FfeaeB13 right?

Comment on lines +272 to +299
export const CCTP_FILL_TIME_ESTIMATES: {
fast: Record<number, number>;
standard: Record<number, number>;
} = {
standard: {
[CHAIN_IDs.MAINNET]: 19 * 60,
[CHAIN_IDs.ARBITRUM]: 19 * 60,
[CHAIN_IDs.BASE]: 19 * 60,
[CHAIN_IDs.HYPEREVM]: 5,
[CHAIN_IDs.INK]: 30 * 60,
[CHAIN_IDs.OPTIMISM]: 19 * 60,
[CHAIN_IDs.POLYGON]: 8,
[CHAIN_IDs.SOLANA]: 25,
[CHAIN_IDs.UNICHAIN]: 19 * 60,
[CHAIN_IDs.WORLD_CHAIN]: 19 * 60,
},
fast: {
[CHAIN_IDs.MAINNET]: 20,
[CHAIN_IDs.ARBITRUM]: 8,
[CHAIN_IDs.BASE]: 8,
[CHAIN_IDs.HYPEREVM]: 5,
[CHAIN_IDs.INK]: 8,
[CHAIN_IDs.OPTIMISM]: 8,
[CHAIN_IDs.POLYGON]: 8,
[CHAIN_IDs.SOLANA]: 8,
[CHAIN_IDs.UNICHAIN]: 8,
[CHAIN_IDs.WORLD_CHAIN]: 8,
},
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have some of these set differently on the indexer side. Is it okay? We can also consider unifying them or moving it to the SDK in the future.

const ATTESTATION_TIMES = {
  [CHAIN_IDs.MAINNET]: { standard: 13 * 60, fast: 20 },
  [CHAIN_IDs.ARBITRUM]: { standard: 13 * 60, fast: 8 },
  [CHAIN_IDs.BASE]: { standard: 13 * 60, fast: 8 },
  [CHAIN_IDs.BSC]: { standard: 2, fast: 8 },
  [CHAIN_IDs.HYPEREVM]: { standard: 5, fast: 8 },
  [CHAIN_IDs.INK]: { standard: 30 * 60, fast: 8 },
  [CHAIN_IDs.LINEA]: { standard: 6 * 60 * 60, fast: 8 },
  [CHAIN_IDs.OPTIMISM]: { standard: 13 * 60, fast: 8 },
  [CHAIN_IDs.POLYGON]: { standard: 8, fast: 8 },
  [CHAIN_IDs.SOLANA]: { standard: 25, fast: 8 },
  [CHAIN_IDs.UNICHAIN]: { standard: 13 * 60, fast: 8 },
  [CHAIN_IDs.WORLD_CHAIN]: { standard: 13 * 60, fast: 8 },
  [CHAIN_IDs.ARBITRUM_SEPOLIA]: { standard: 13 * 60, fast: 8 },
};

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants