Warp supports two patterns for crosschain execution:Documentation Index
Fetch the complete documentation index at: https://docs.rhinestone.dev/llms.txt
Use this file to discover all available pages before exploring further.
- Bridge and execute: transfer tokens to a destination chain and run arbitrary calls there in the same intent.
- Gas relay: execute calls on a destination chain without bridging any tokens. The relayer fronts gas on the destination and takes repayment from the user’s existing balance on the source chain.
Bridge and execute
Use this when the destination calls need tokens on that chain — for example, depositing into a vault, buying an NFT, or performing a swap. ProvidetokenRequests for the tokens needed on the destination, and calls for the actions to execute there. Warp bridges the tokens and executes the calls in a single intent.
The
calls execute in the context of the user’s account on the destination chain. If the vault returns receipt tokens, they are already credited to the account — no additional transfer is needed.Gas relay
Use this when the user wants to execute a transaction on another chain but doesn’t need to bridge tokens. The user might have ETH or USDC on Base and want to call a contract on Arbitrum without holding any gas on Arbitrum. The relayer fronts gas on the destination chain and claims repayment from the user’s balance on the source chain. NotokenRequests needed — the repayment token is chosen automatically.
sourceChains:
Source calls
You can also run executions on the source side, before the claim. Source calls are bundled into the intent at routing time and covered by the user’s mandate signature. Use them for pre-bridge actions on the source chain — ERC-20 approvals, ETH→WETH wraps, unstaking, or pulling funds out of a vault you need to spend.Declaring tokens the source call provides
If the source call hands over tokens (an unwrap, an unstake, withdrawing from a vault), declare them viaprovides. Routing then treats those tokens as available, the same way auxiliaryFunds does:
Caveats
- Source calls only fire when the orchestrator creates an element on that chain. Sponsored or no-op fills with no source movement skip the source element entirely, and the
sourceCallskeyed on that chain are silently dropped. - The chain id must appear in
sourceChains(cross-chain intents) or equal the same-chainchain. - For same-chain intents, source calls run before the destination
callson the same chain.
Next steps
Unified balance
Let users spend their full cross-chain balance in a single intent.
Multi-input bridge
Combine tokens from multiple chains into one destination transaction.