Across has an opportunity to enable cross-chain swaps using the same technology it has pioneered for bridging. If a user wants swap token x on the source chain for token y on the destination chain then it works exactly as bridging. The user pays token x to Across on the source chain and a relayer sends token y to the user on the destination chain. Relayers are reimbursed token x after UMA confirms they indeed sent token y.
Swapping different tokens altogether and not just the same token in different environments is a huge UX boost. For example, users bridging from Ethereum to BNB Chain might want to swap ETH for BNB, USDC for BNB, etc.
I would love to hear other’s thoughts on enabling this feature - I believe this can help increase Across’s usage.
An additional consideration I forgot to mention: if we used the exact same design with swaps as for bridging then LPs would have delta exposure similar to GMX (i.e. user swaps USDC for BNB and it isn’t filled by a relayer so it goes through slow path and the Across pool sends BNB to the user).
Two possible solutions:
separate LP pools for swaps that act as counterparty in slow path
if a relayer does not fill the swap the user gets refunded their initial deposit
I like the latter solution of refunding the user in the case that a relayer does not fill the swap. This removes the delta problem because relayers would be refunded the same token the user deposited to Across.
Relayers in this case are taking the delta risk and it’s their job to hedge it. This is great because it should be easy enough for them to do if they get a fee.
Would be ideal, sure, as the need regularly arises. Symbiosis offers something like that. But it was rather expensive to use. Would depend on the technical economics here.
yeah, this is something we’re starting to talk more about. The general concept of Bridge + action is one we’ve enabled but need to build out. Because of the latency issue with bridging, this makes sense to me as one of the only feasible ways to do a swap. But there needs to be some additional thought on how a relayed swap would be verified as the correct amount.
You also bring up a good point about things that get slow relayed. I’m not sure exactly how that would get handled.
I am in favor of this, lately I have used some cross-chain swaps, and they worked great. It was a lot less of a hassle to swap tokens between chains. Starknet is a drag in this regard, and cross-chain swaps are perfect for this.
Maybe one way to handle the basis risk is to treat deposits as a limit order. User deposits amount X of token T1 on chain C1, and is willing to receive amount Y of token T2 on chain C2. This could also potentially help even out spoke pool balances as a user could make a market on the same token across chains, so when demand is heavily skewed the limit orders will help reduce fee volatility. Or I guess alternatively, depending on the intents design, integrating with existing dexes/aggs as opposed to building concretely into the protocol.