---
# System prepended metadata

title: Cross-Chain Swap Design For Hop Protocol

---

# Cross-Chain Swap Design For Hop Protocol
Hop protocol doesn't support cross-chain callData, hence we need to connect the swap after cross-chain token transfer.

For example, users want to swap 10 UNI to QUICK on Polygon. Steps are:
1. Swap 10 UNI to 300 USDC on ETH thru Swing aggregator contract
2. Send 300 USDC to Polygon thru Hop bridge
3. Hop deposits 300 USDC to user's wallet on Polygon. Hop contract will emit event after deposit
4. Swing frontend will monitor the event emitted by Hop contract. It will 
    4a. Asking user to approve our contract to use 300 USDC
    4b. Swap 300 USDC to QUICK
    
__Hop events we need to monitor__
Going L1 -> L2, you should look for event TransferSentToL2.
Going L2 -> L2 or L2 -> L1, you should look for event WithdrawalBonded

L1 = ETH; L2 = Optimism, Arbitrum or Polygon

____

__Hop Contract__
https://github.com/hop-protocol/contracts

__Hop Contract addresses__
https://github.com/hop-protocol/hop/blob/develop/packages/core/src/addresses/mainnet.ts

____
Assignments:
1. Chuqiao will implement steps 1 and 2. 
2. David will be working on step 3 and 4. 
