Let's follow this scenario - You're trying to swap 1,000 USDC
on Ethereum
for some SOL
on Solana
. With traditional bridges, you'd need to wrap your USDC, find a bridge (hoping it doesn't get hacked), wait 20 minutes or more for finality, pay ridiculous fees, then unwrap on the other side. By the time you're done, the price has moved, you've burned through $50
in gas, and you're questioning your life choices, Damn!
What if I told you there's a better way? What if you could just say I want 100 SOL for my 1000 USDC and have the blockchain figure out the rest? That's exactly what intents do. They let you declare exactly what you want instead of going through the hassle of getting it.
Think of intents
as the difference between telling someone "drive to the supermarket, turn left at ilford high road, park in spot 11 and walk to aisle 5..." versus just saying "get me milk". The outcome essentially is the same, but one approach is declarative "(exactly what you want) while the other is imperative (step-by-step instructions).
In technical terms, intents
are signed messages that express a user's desired outcome without specifying execution details. Instead of crafting complex transaction sequences yourself, you broadcast your intent to a network of solvers
(sophisticated actors) who then compete to fulfill your request.
This is what a sample intent looks like:
{
"user": "alice.near",
"intent_type": "token_swap",
"give": {
"token": "usdc.near",
"amount": "1000000000"
},
"receive": {
"token": "sol.near",
"min_amount": "100000000000"
},
"deadline": 1735689600,
"signature": "0x..."
}
Quite simple, right? Alice really doesn't care about routing complexity, she just wants her SOL in exchange for her USDC and that's all.
Cross-chain DeFi protocols are quite complex for the normal user. They need to understand different protocols, manage multiple gas tokens, and navigate around with tons of security risks. Traditional solutions often involve:
Intents flip this model around. Instead of pushing complexity to users, the system pulls it into a competitive solver network. Users express desires, solvers figure out execution, everyone wins 🔥.
Solvers in this context are the backbone of intent-based systems. They're specialized actors, could be market makers, AI agents, or sophisticated traders - who are competing to fulfill user intents within the system.
This is how it works: when you broadcast an intent, multiple solvers analyze it and submit competing quotes. They might route through different DEXs
, use off-chain liquidity, or even batch your intent with others for better pricing. The best solution wins.
Now, think of solvers as your personal trading assistants who understand every connected protocol, every liquidity source, and every optimization trick in DeFi. They make money by providing better execution than you could achieve yourself and savs you a alot of time.
Intent-based architectures aren't an entirely new concept. UniswapX
pioneered the concept for Ethereum
, processing over $2B in volume through Dutch auctions
where "fillers" compete to fulfill swap requests.
CoW
Protocol expanded this with batch auctions
and MEV
protection, accumulating over $15B in trading volume. Their insight? By batching intents and finding coincidence of wants, they could eliminate MEV
while improving execution.
But these systems are then single-chain solutions. UniswapX
works great for ETH
ecosystem trades, but cross-chain? You're back to complexity hell, welcome back!
NEAR Protocol built the first genuinely cross-chain intent system. The numbers speak for themselves: over $1.075B in total volume, 2-3 second finality, and native Bitcoin support without wrapping.
How did they achieve this? Chain Signatures
. Through multi-party computation (MPC), NEAR validators can collectively sign transactions on foreign blockchains without any single party holding private keys. It's like having a universal remote for the entire crypto ecosystem.
import { createIntent, signIntent } from '@defuse-protocol/intents-sdk';
const intent = createIntent({
from: 'alice.near',
give: { token: 'usdc.near', amount: '1000000000' },
receive: { token: 'sol.near', minAmount: '100000000000' },
expiry: Date.now() + 300000
});
const signedIntent = await signIntent(intent, wallet);
await broadcastIntent(signedIntent);
Flow chart showing Intent Creation → Solver Competition → Settlement Pipeline with three distinct phases and actors
Distribution: Apps, wallets, and exchanges where users create these intents.
Solver Networks: Decentralized market makers, AI agents or similar competing to fulfill requests. They access liquidity from CEXs, DEXs, or off-chain sources.
Verifier: The NEAR smart contract that ensures the atomic settlement of intents.
The core verification logic:
fn execute_token_diff_intents(intents: &[TokenDiff]) -> Result<(), Error> {
let mut net_changes: HashMap<TokenId, i128> = HashMap::new();
for intent in intents {
*net_changes.entry(intent.token_in).or_default() -= intent.amount_in;
*net_changes.entry(intent.token_out).or_default() += intent.amount_out;
}
for (_, net_change) in net_changes.iter() {
if *net_change != 0 {
return Err("Non-zero sum transaction".into());
}
}
Ok(())
}
This guy ensures the perfect balance, for every token going out, an equivalent amount comes in across all batched intents.
Diagram showing the three layer stack with data flow between Distribution, Solver Networks, and the Verifier, including specific components like 1Click API, MPC Network, and Chain Signatures
Part of the secret to making this work at scale is the 1Click API
, this guy abstracts away all the complexity end to end. Developers can create cross-chain intents without thinking about MPC
, Chain Signatures
, or solver routing
. It handles fetching quotes from multiple solvers, selects the best route across DEXs
and bridges
, watches the execution, handles retries, and even handles gas optimization and timing, all in one api call, everything else is taken care of under the hood.
What it looks like:
import { IntentsSDK } from '@near-intents/sdk';
const sdk = new IntentsSDK({
network: 'mainnet',
apiKey: process.env.NEAR_INTENTS_API_KEY
});
async function createSwapIntent(fromToken, toToken, amount) {
const quote = await sdk.getQuote({
tokenIn: fromToken,
tokenOut: toToken,
amountIn: amount,
slippage: 0.005
});
const intent = await sdk.createIntent({
tokenIn: { address: fromToken, amount },
tokenOut: { address: toToken, minAmount: quote.amountOut },
deadline: Date.now() + 300000
});
// watch the execution
sdk.watchIntent(intent.id)
.on('executed', (result) => console.log(`Done! TX: ${result.hash}`))
.on('failed', (error) => console.error(`Failed: ${error.reason}`));
}
Read more about it here.
Defuse just shows how to build production DEX
interfaces with intents. Instead of managing complex routing logic, you get:
import { DefuseKit } from '@defuse-protocol/intents-sdk';
const defuse = new DefuseKit({ network: 'mainnet' });
const quotes = await defuse.requestQuotes({
tokenIn: 'ethereum:0x...',
tokenOut: 'solana:native',
amountIn: amount
});
const bestQuote = quotes.reduce((best, current) =>
BigInt(current.amountOut) > BigInt(best.amountOut) ? current : best
);
const result = await defuse.executeIntent(bestQuote);
This gives you:
The client handles all the complexity, users just see the best price and fastest execution, and moves on.
Paycrest bridges blockchain intents with traditional payment systems. Here's how it works:
crypto-to-fiat
conversion pathcrypto
to stable asset, then to fiat paymentfunc (a *Aggregator) ProcessPaymentIntent(intent *PaymentIntent) error {
routes := a.findPaymentRoutes(intent)
bestRoute := a.selectOptimalRoute(routes)
switch bestRoute.Type {
case "crypto_to_fiat":
return a.executeCrossSystemPayment(intent, bestRoute)
case "direct_crypto":
return a.executeCryptoPayment(intent, bestRoute)
}
}
The primary challenge lies in cross-system payments that bridge crypto and fiat. Paycrest handles this through multiple stages:
Solver Competition: A competitive market of solvers ensures efficient execution on-chain. As the number of solvers on the network increases, competition drives down costs and improves execution speed for users. This open market also encourages support for a wider variety of assets and allows for the integration of advanced solvers, such as AI agents, capable of complex algorithmic operations.
Batching Network Effects: A higher volume of user intents allows a verifier
to aggregate multiple operations into a single optimized on-chain transaction, this gradually writes off fixed costs (like gas fees) across many users, resulting in lower fees and greater capital efficiency for everyone on the network.
Multi-Chain Parallelization: Intents can be parallelized and executed across multiple blockchains significantly improving over the sequential processing model of many traditional bridges. A complex trade involving assets on Ethereum, Solana, and Bitcoin can be settled concurrently, reducing total time and latency of the cross-chain transactions.
Simplifying Complex Routing
These mechanisms abstract the underlying operational complexity from the user. The below snippet demonstrates how a user can specify a multi-hop, gas-optimized, cross-chain transaction in a single request:
const response = await fetch('https://api.near-intents.org/v1/quote', {
method: 'POST',
body: JSON.stringify({
tokenIn: 'usdc.near',
tokenOut: 'bitcoin:native',
routing: {
maxHops: 3,
excludeProtocols: ['slow_bridge'],
preferredSolvers: ['defuse', 'paycrest'],
gasOptimization: true
}
})
});
The API handles optimization, timing, and failure recovery automatically.
NEAR
isn't the only one doing this. UniswapX dominates Ethereum
trading, CoW Protocol excels at MEV protection, 1inch Fusion provides DEX aggregation.