← All posts

Mar 11, 2026

Base to Solana: Executing Cross-Chain Swaps Without Destination Gas

How to route a swap from Base to Solana in a single call — the user never holds SOL. A walkthrough of the UGF flow across EVM and non-EVM.

UGFSolanaBaseCross-chainSwap

The classic cross-chain swap is three transactions. Bridge USDC to Solana. Wait for confirmation. Pay SOL gas to swap into a Solana token. Each step is a chance for the flow to fail or for the price to move against the user. The whole thing assumes the user can produce SOL on demand, which they often cannot.

The Universal Gas Framework collapses that into one call. Source value stays on Base. The action lands on Solana. The user never holds SOL. This post walks through what that looks like in practice and what is happening behind the scenes.

The setup

A user has 100 USDC on Base. They want to swap into SOL on Solana. The traditional path:

  1. Bridge USDC from Base to Solana (3-5 minutes, bridge fee).
  2. Acquire some SOL for gas (separate purchase or faucet).
  3. Sign and execute the swap on Solana.

The UGF path:

  1. await client.quote.get(...) — get a quote.
  2. await client.chains.sol.sponsorCustomTx(...) — execute.

That's it.

The code

import { UGFClient } from "@tychilabs/ugf-sdk";

const client = new UGFClient({
  baseUrl: "https://gateway.universalgasframework.com",
});

await client.auth.login(wallet);

const solanaQuote = await client.quote.get({
  payment_coin: "USDC",
  payment_chain: "8453",         // Base
  payment_chain_type: "evm",
  dest_chain_id: "sol-mainnet",
  dest_chain_type: "sol",
});

await client.chains.sol.sponsorCustomTx(
  solanaQuote.digest,
  keypair,
  connection,
  buildSwapTx,
);

The buildSwapTx function is whatever Solana transaction does the swap — typically a Jupiter or Raydium route, but any signed Solana instruction set works. UGF doesn't care what the transaction does, only that it is correctly signed by the user's Solana keypair.

What's happening under the hood

Three pieces of infrastructure are coordinating:

The vault on Base. When the user pays USDC, it lands in a Tychi-operated vault. The vault is the accounting source — every cross-chain action draws from it.

The relayer on Solana. A Tychi node on Solana holds a SOL reserve. When a payment is confirmed on Base, the relayer is authorized to execute the user's transaction using that SOL reserve.

The correlation gateway. The link between the two. It watches Base for the payment, validates the quote hasn't expired, then signals the Solana relayer to execute. If anything goes wrong — quote expired, payment underpaid, destination reverts — the user is refunded on Base.

From the user's perspective: one signature, one outcome, no SOL held.

Why "remote transaction" is the right name for this

The phrase we use internally is remote transactions. The transaction is happening remotely from the user's value. Their assets stay on Base. The action happens on Solana. The two are tied together by a quote that holds prices and parameters constant for a short window.

This differs from a bridge in two important ways. A bridge moves the value first. A remote transaction never moves the user's value — it moves value of equivalent settlement in the destination chain's reserve. The user's USDC remains on Base.

When this is the right call to make

  • Token swaps where liquidity is on a different chain. Solana has deeper liquidity for many tokens than EVM bridges.
  • Cross-chain NFT mints. Some collections only mint on Solana or Sui; users with EVM balances no longer need to bridge.
  • Multi-chain DeFi rebalancing. Move into and out of Solana yield without ever holding SOL.
  • AI agent flows. Agents operating across both EVM and Solana use a single source-chain balance.

When it isn't

  • Pure token bridges with no destination action — use a bridge.
  • Operations that require native SOL specifically (staking, validator ops) — those need actual SOL on the user's account.
  • Atomic two-leg transactions with on-chain rollback semantics — UGF handles failure with refunds, not on-chain atomicity.

Where to read more

The UGF docs cover the full method surface, including non-EVM specifics for Solana, Sui, Tron, and TON. The SDK quickstart gets you to a live transaction in about ten minutes.

If you build something interesting on top of this, tell us. Cross-chain Solana flows are exactly the case UGF was designed for, and we want to hear what works and what doesn't.

More posts