Multi-chain intents let you make cross-chain transactions. Those intents specify both the target (destination) and the source chain(s). The actual transaction (fill) happens on the target chain, while the funds are taken on the source chains (claims). Specifying source chains is optional. Rhinestone finds the optimal path automatically. Multi-chain intents work similarly to single-chain intents, but with the introduction of settlement layers. From your perspective, making cross-chain transactions is as simple as making normal Ethereum transactions. The Rhinestone Orchestrator handles path finding, liquidity management, and intent execution for you. Learn more about how Rhinestone intents work here.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.
Example
We will make a cross-chain token transfer using multi-chain intents.Source Chain
Providing the source chain deploys the account on that chain, as well as uses the funds on that chain to fulfill the intent. If you already have an account deployed on one or more source chains, you can omit thesourceChain. In that case, the orchestrator will use the best chain(s) to source funds.
Token Requests
tokenRequests is a list of token assets and their amounts that are required on the target chain to make the transaction. It tells the solvers to ensure those assets are present before executing the transaction calls. If you don’t need any assets on the target chain, you can omit this.
Gas Limit
You can override the default gas limit for the target chain execution withgasLimit. Doing this will make the intent better priced, because we can more accurately calculate the fee that a solver needs to be reimbursed with for paying the gas. If this is not provided, we calculate using a gas limit of 1_000_000.
Source Assets
You can specify what token (or tokens) to use as an input asset:Chain-specific
sourceAssets take precendence over sourceChain parameter.Auxiliary Funds
In case you have funds not available immediately for an intent (e.g. locked in a vault or sitting in an exchange), you can specify them as auxiliary funds:Wait for Execution
sendTransaction returns a pending intent. To wait until it gets executed, use waitForExecution:
Get Intent Status
You can also fetch the intent status directly to implement a custom polling logic:Liquidity Splitting
When transferring large token amounts, a single settlement layer may not have enough liquidity to fill the intent efficiently. UsesplitIntents to break the amount into smaller portions that can be routed through different settlement layers in parallel, improving execution speed and pricing.
First, compute the splits: