Skip to content

Conversation

@yrong
Copy link
Contributor

@yrong yrong commented Dec 4, 2025

Resolves: https://linear.app/snowfork/issue/SNO-1656

Context

This PR includes a POC demonstrating L2 integration using the Stargate composability call, based primarily on the following documentation:
https://docs.stargate.finance/developers/protocol-docs/composability

The dependent contract components have already been deployed on Sepolia (Ethereum and Optimism). We only need to configure the .env file in the contracts directory and run this command:

contracts git:(ron/l2-stargate) ✗ pnpm bridge-l2

@yrong
Copy link
Contributor Author

yrong commented Dec 4, 2025

Though EURC on Base is not listed in the supported chain/token list (here), I checked the codebase (here) and it appears that support exists for Mainnet. I’ll double-check with the team to confirm.

@claravanstaden
Copy link
Contributor

Hey @yrong! Looks very cool! Would we need to deploy these adapter, receiver, etc contracts on Mainnet? Would that be through Polkadot governance, or how do you imagine that would work?

@alistair-singh
Copy link
Contributor

Though EURC on Base is not listed in the supported chain/token list (here), I checked the codebase (here) and it appears that support exists for Mainnet. I’ll double-check with the team to confirm.

I think we need to use the official Circle bridge for USDC/EUROC.

@alistair-singh
Copy link
Contributor

Hey @yrong! Looks very cool! Would we need to deploy these adapter, receiver, etc contracts on Mainnet? Would that be through Polkadot governance, or how do you imagine that would work?

No governance at all, no upgrades, we just deploy the contracts. Then route xcm to the deployed contracts to complete the transfer. We build the xcm offchain so no governance required to route to these contracts. If we need to upgrade, we deploy a new set of contracts and then change the xcm to route to those contracts.

@alistair-singh
Copy link
Contributor

I think whats missing from this, is a script which issues a transact from asset hub, that uses the composer to send ETH to base.

@yrong
Copy link
Contributor Author

yrong commented Dec 4, 2025

No governance at all, no upgrades, we just deploy the contracts. Then route xcm to the deployed contracts to complete the transfer. We build the xcm offchain so no governance required to route to these contracts. If we need to upgrade, we deploy a new set of contracts and then change the xcm to route to those contracts.

Yeah, I assume governance control won’t be required. For transactions from P to E, the user-controlled agent will communicate with the adaptor to perform certain L2 calls.

This is just a proof of concept to demonstrate the integration of a transfer and how to compose a message that is later executed on the destination side. For a pure token transfer from P to Ethereum L2, we might not even need the receiver contract.

For the reverse direction—from L2 back to Polkadot—the receiver on Ethereum L1 will forward the XCM and invoke the send function on the Gateway.

@yrong
Copy link
Contributor Author

yrong commented Dec 4, 2025

I think whats missing from this, is a script which issues a transact from asset hub, that uses the composer to send ETH to base.

We've done this before in the canonical bridge integration here: https://github.com/Snowfork/snowbridge/blob/main/smoketest/tests/v2/transact_p2e_l2.rs

I'll add another test for this integration as well.

@codecov
Copy link

codecov bot commented Dec 4, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 85.94%. Comparing base (2ab4c6f) to head (1b892f1).
⚠️ Report is 10 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #1643   +/-   ##
=======================================
  Coverage   85.94%   85.94%           
=======================================
  Files          21       21           
  Lines         925      925           
  Branches      162      162           
=======================================
  Hits          795      795           
  Misses        104      104           
  Partials       26       26           
Flag Coverage Δ
solidity 85.94% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@yrong
Copy link
Contributor Author

yrong commented Dec 4, 2025

I think we need to use the official Circle bridge for USDC/EUROC.

I'd assume Stargate is a high-level ommichain protocol that leverages appropriate underlying messaging protocols such as LayerZero or Circle’s CCTP to execute the cross-chain token transfers.

Based on the code and comments here, it appears that this functionality is already supported.

@yrong
Copy link
Contributor Author

yrong commented Dec 9, 2025

Closed in favor of #1649

@yrong yrong closed this Dec 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants