Cross-chain deposits, powered by Rhinestone

Cross-chain deposits, powered by Rhinestone

Finding a better yield on a different chain used to mean leaving the app: find a bridge, wait for confirmation, then deposit separately. That's three steps where one should do.

Cross-chain deposits are now live in vaults.fyi, built in partnership with Rhinestone. Pick any vault, enter an amount, and review the full cost before signing. The bridge happens in the background.

Watch it in action:

How the deposit flow works

When you select a vault on a different chain than your current USDC, the app detects the mismatch and generates a quote automatically. Before anything runs, you see the complete breakdown:

  • Bridge fee
  • Gas on both source and destination chains
  • Orchestrator fees
  • The exact amount you will receive in the vault

In the example above: 1,000 USDC from Optimism into Fluid USDC on Arbitrum, with a bridge fee of 0.0155 USDC. The flow completes in two steps: a preparation transaction, then signing the intent. No manual bridging, no separate deposit.

Works with both EOA wallets and smart accounts.

Built with Rhinestone

The cross-chain routing is powered by Rhinestone's intent-based execution network. Rather than using a message-passing bridge (where you wait for cross-chain finality), Rhinestone routes your deposit through a competitive solver network. Solvers provide immediate liquidity before your funds leave the source chain, with settlement completing in under 1.5 seconds.

Settlement is atomic: all-or-nothing. An on-chain Resource Lock mechanism ensures solvers can't claim fees without completing the deposit. The underlying settlement layer is Across Protocol.

EOA support uses EIP-7702, which gives standard Ethereum addresses the same chain-abstraction capabilities as smart accounts without requiring a migration.

Networks at launch

Cross-chain deposits are initially available between Ethereum mainnet, Arbitrum, Base, and Optimism. More networks will follow.


For developers: cross-chain API endpoints

The same flow is available through our API. Three endpoints cover the full lifecycle.

1. Get a quote

POST /alpha/transactions/intent/getQuote

Takes an input position (token address, network, amount in base units), an output position (vault address and destination network), and a fee token. Returns:

  • An EIP-712 payload ready to sign
  • A fees[] array typed by: bridge | gas | orchestrator | protocol
  • The expected received position (vault shares)
  • Any required setup transactions, such as token approvals

Two providers are supported: rhinestone and biconomy.

Example request:

{
  "userAddress": "0x...",
  "inputPosition": {
    "address": "0x...",
    "network": "optimism",
    "amount": "1000000000"
  },
  "outputPosition": {
    "address": "0x...",
    "network": "arbitrum"
  },
  "feeToken": {
    "address": "0x...",
    "network": "optimism"
  },
  "provider": "rhinestone"
}

2. Execute

POST /alpha/transactions/intent/execute

Submit the signed EIP-712 payload. Returns a crosschainTransactionId for tracking.

3. Check status

GET /alpha/transactions/intent/status?crosschainTransactionId=...&provider=...

Returns pending, success, or failed.


These endpoints are currently in alpha.

If you'd like to build with our API, DM us on X (@vaultsfyi) or contact us on Telegram (@ryanrodenbaugh).