ByAUJay
Summary: Decision-makers are looking for ways to transform “intents” into quick, secure, and profitable actions on today’s modular rollups. This guide walks you through the process of designing, launching, and managing a production-grade solver. We’ll cover which intent rails to focus on first (like CoW, UniswapX, and ERC‑7683), how to connect with OP‑Stack chains using Rollup‑Boost, shared sequencers, and the latest DA layers. Plus, we’ll dive into enhancing privacy/MEV, simulation, and monitoring.
How to Build a Solver for Blockchain Intents: From Intents to Execution on Modular Rollups
The "intent → solver → execution" pattern is making its way from brainstorming sessions to real-life applications. We’ve got UniswapX, CoW Protocol, and ERC‑7683 cross‑chain intents up and running. Plus, OP-Stack rollups are rolling out fault proofs, and we're seeing some cool changes in rollup ordering with verifiable priority, TEEs, and shared sequencers. On top of that, the pressure from MEV is now a big deal for scalability, which means that solvers who can handle MEV and cut down on spam are becoming essential infrastructure, not just optional extras. (docs.uniswap.org)
Here’s a straightforward guide to creating a solver that not only gets fills now but is also ready to adapt to modular rollups in the future.
1) What you’re actually building: the intent-to-execution pipeline
At a high level, your solver tackles five main tasks:
- Intake: Gather intents from one or more “intent rails”:
- CoW Protocol batch auctions (FCBA) for swaps on EVM L1/L2s. Check it out here.
- UniswapX auctions (Dutch, limit, priority) happening across Ethereum and Layer 2s. You can dive into the details here.
- ERC‑7683 cross‑chain intents (Across + Uniswap standard) aimed at settlement across different chains. Get the scoop here.
- Normalize: transform each intent into a handy internal model that includes constraints and preferences like price limits, time restrictions, chain or settlement goals, slippage, and privacy settings.
3) Plan
Let’s dive into calculating routes through AMMs and RFQ/MM quotes. We’ll also look into cross-chain settlement paths and explore internalization opportunities like peer matches and backruns--all while keeping an eye on gas costs and MEV limitations.
4) Simulate and Prove Safety
Let’s kick things off with a pre-trade simulation that accounts for bundle or batch constraints. This step is all about setting up conditions that mirror the real deal, ensuring everything runs smoothly before we hit that "go" button.
Next up, we need to prove our post-conditions. This means we’ll verify a few key details:
- Amount Out: Did we send the right amount?
- Recipients: Are the right folks receiving what they were supposed to?
- Timings: Were everything and everyone on schedule?
By going through these checks, we can make sure that everything is just as it should be before we actually proceed with the trade.
- Execute and settle: Start by calling the protocol’s settlement contracts or going through rollup-native paths, and it's a good idea to do this over private or OFA-protected order flow. Make sure to sort out any refunds or rebates, and don’t forget to write down observability.
Anoma’s concept of the “intent machine” really comes in handy here. Solvers kick things off by taking those unbalanced intents, finding the right matchings, and then spinning out balanced transactions that meet all the necessary constraints. Think of this as your abstract layer, even if you're initially working with specific platforms like CoW or UniswapX. You can check out more details here.
2) Pick your first rails (and what “production details” actually look like)
A. CoW Protocol: win batch auctions with FCBA
CoW gathers up user intents off-chain and runs its batch auctions pretty often. Solvers can submit either single-order bids or combinatorial ones. The protocol then picks a fair mix that boosts user benefits, all while protecting against MEV with uniform clearing prices and that nifty "coincidence of wants" concept. So, if you’re working with a solver, here’s what you need to nail down:
- Mixed-integer and heuristic optimization that spans both on-chain liquidity and internal peer matches.
- Solid checks for solution validity and fairness, which are enforced by the settlement contract. You can find more details here.
Production specifics you can act on:
- The auction pace is super fast--happening every few seconds--so your algorithm needs to adapt quickly to those tight deadlines. If you're looking for some guidance, CoW has got your back with solver tutorials and public dashboards showcasing solver performance. Check it out here: (docs.cow.fi).
- With the FCBA rollout, there are measurable boosts in both throughput and rewards. You’ll be receiving those rewards weekly according to the CIP schedule in COW, which really helps create a thriving solver market. Make sure to plan your ROI based on these real incentive parameters. Dive deeper into the details here: (outposts.io).
Design Tips:
- Keep two engines running: one that's reliable and quick, ensuring consistent performance, and another that's a bit more unpredictable but can really boost your results under time constraints (think less than 1-2 seconds). Make sure to decide on a stop rule in advance--if things start to stall, just switch back to the reliable baseline. Research shows that multi-objective genetic algorithms can actually hit sub-second medians while staying within those 2-second limits for CoW-style batches. Check out the details here: (arxiv.org).
B. UniswapX: fillers and quoters with strict latency and onchain hooks
UniswapX is all about auctions where fillers are in a friendly competition to snag users the best prices on their orders. If you're diving into Ethereum’s mainnet, there’s a special “quoter” role that parameters orders through a Request for Quote (RFQ), but when it comes to Layer 2s (L2s), anyone can jump in as a permissionless filler. Here’s what you need to keep in mind regarding the architecture:
- Aim to respond to those Ethereum RFQs in under 500 ms; any slowpokes will get the boot. The RFQ server is hosted in AWS us-east-2, so you might want to co-locate if it makes sense for you. The expected quotes per second (RPS) is around 1. (docs.uniswap.org)
- For L2s, it's all about direct auctions without RFQs. Fillers can either poll for orders (starting with 6 RPS) or set up webhooks. On Arbitrum, with its speedy 250 ms block cadence, V3 Dutch has a neat trick where it uses block numbers for decay instead of timestamps. (docs.uniswap.org)
- You’ll want to check out Permit2's “permitWitnessTransferFrom” which works with the order as a witness. Your fill contract can execute through reactorCallback, or if you prefer, you can “directFill” using address(1) for those capital-on-hand fills. (docs.uniswap.org)
What to Ship First
- A filler that includes: quick price/hedge quotes, a cancel-aware simulator, strict checks for order freshness, and a latency service-level objective (SLO) of p95 < 200 ms end-to-end. Also, set up a top-notch "fade" manager; if you keep fading RFQs, expect a temporary block. (docs.uniswap.org)
C. ERC‑7683 cross‑chain intents: standardized settlement for multi-chain UX
Uniswap Labs and Across teamed up to create ERC‑7683, which aims to bring together cross-chain intentions through a standard order structure and “CrossChainSettler” interfaces. This move makes it easier to engage with filler networks across various apps and chains. Notably, Optimism has shown support for this standard to enhance Superchain user experience. If you're thinking about multi-chain capabilities, it's a good idea to shape your solver's settlement layer around 7683 right now. Check it out at erc7683.org.
Action Items:
- Get started on implementing CrossChainOrder parsing and settlement callbacks. You'll need to create a risk engine that handles timeouts, on-destination verification, and escrow release rules. Remember, the settler should only release user funds after confirming proof of fulfillment.
- Make sure to integrate OP‑Stack bridges and messaging as primary targets in your planner.
3) Target execution venues: OP‑Stack rollups, shared sequencers, and DA choices
A. OP‑Stack chains with Rollup‑Boost: verifiable priority and 250 ms Flashblocks
OP‑Stack rollups have officially rolled out production fault proofs, marking a big step forward for the ecosystem as it transitions to Stage‑1 decentralization. The goal is to reach Stage‑2 with multiple independent provers down the line. When it comes to solvers, there are two key points to keep in mind:
- Trust guarantees for exits are much stronger now that we have fault proofs in place.
- We can enhance ordering and user guarantees through Rollup‑Boost extensions. You can check out more about this here.
Rollup‑Boost, a collaboration between Flashbots, Uniswap Labs, and OP Labs, offers some pretty cool features:
- Flashblocks: These give you around 250 ms streaming confirmations, plus revert protection and improved gas throughput.
- Verifiable priority ordering in TEEs: This means you get reliable and neutral ordering rules, ensuring users can trust the process.
Unichain is the main deployment route for this tech. Plus, well-known cloud providers like Alchemy are already rolling out Rollup‑Boost for development rollups. Check out more details here.
Tactical Advice:
- When you're diving into OP‑Stack chains using Rollup‑Boost, think of revert protection as a handy tool for ensuring safe-once routes (like multi-leg AMM routing that keeps revert costs low). It's a smart move to set up a policy that says, “no submission without revert protection” for those bigger orders.
B. Shared sequencers and cross-rollup atomicity
Shared sequencers like Astria allow several rollups to share their ordering, which speeds up confirmations and makes atomic cross-rollup inclusion a breeze, all while relying on Celestia for data availability. To get a handle on integration, it's essential to know the main parts of Astria:
- Composer (for writing)
- Conductor (for reading)
- Relayer
- Namespaced data availability using Celestia light nodes for each rollup.
With your solver, you can pinpoint multi-rollup atomics by managing inclusion windows at the shared sequencer. Check it out here: (astria.org).
If you're setting up your own appchain or L3, here’s something to consider:
- With Astria’s RaaS and dev clusters, you can get a Geth rollup up and running in just one click. It’s all connected to the shared sequencer. Your solver just needs to write to Composer and keep an eye on Conductor for those firm/final confirmations. Check it out at astria.org.
C. Data availability: Celestia vs EigenDA vs Ethereum blobs
Your solver might not pick DA, but your clients definitely will--and this has a big impact on fee models and latency:
- Celestia + Blobstream brings DA through DAS and a ZK light client (SP1) on Ethereum/Arbitrum. The initial blobspace is up to 8 MB per block, which could translate to about 9,000-30,000 ERC‑20 TPS based on compression. Good news for builders: Blobstream is already live! Check it out here.
- EigenDA is gaining traction with high‑throughput L2s; they’ve mentioned around ~15 MB/s live throughput with V2 testnets aiming for around ~50 MB/s. This is pretty useful info to keep in mind when figuring out fees and latency for flood‑fill solvers. Dive deeper into this here.
4) Orderflow, privacy, and MEV: build it in on day one
Key Reality
MEV is putting some serious economic constraints on scaling. The bots out there are hogging a big chunk of gas and throughput on popular rollups. So, if you're working on a solver, you need to keep a few things in mind: minimize any public leakage, capture backrun value for users, and steer clear of adding to the spam problem. Check out more details in this Flashbots article.
Concrete Layers to Implement:
Here are the various layers of concrete you might want to consider implementing:
- Base Layer
This is where it all starts. The base layer provides essential support for the rest of the concrete structure. It’s usually made up of compacted gravel or crushed stone, so make sure it's really solid before moving on. - Sub-Base Layer
Next up is the sub-base layer, which helps with drainage and adds an extra layer of support. Typically, this is made from a mix of sand and gravel or crushed stone. It's super important for keeping everything stable. - Concrete Slab
Here’s where the magic happens! The concrete slab is the main part of your structure. You’ll want to make sure it’s properly mixed and poured to ensure it’s strong and durable. Don’t forget about the curing process to make sure it sets right. - Reinforcement
To give your concrete that extra strength, adding reinforcement is key. This can be in the form of steel rebar or mesh. It helps prevent cracking and adds durability, especially in high-stress areas. - Finishing Layer
Finally, you’ll want to think about the finishing layer. This could be a smooth surface finish, a stamped design, or even an exposed aggregate look. Whichever finish you choose, make sure it’s done well for a polished look!
By keeping these layers in mind, you’ll set yourself up for a concrete structure that’s both sturdy and long-lasting. Happy building!
- Private RPC + OFAs:
- Flashbots MEV‑Share is a cool order flow auction setup that helps redistribute backrun value to users and wallets. It comes with privacy features, validity checks, and APIs for bundles. Definitely make this your go-to for any sensitive transactions. Check it out here.
- MEV Blocker RPC provides endpoints that help protect your flow with added revert protection. It connects to multiple builders and even gives you rebates. If you’re handling critical orders, don’t forget to integrate “/noreverts.” Plus, you can find MEV-protected routes through infra providers like Alchemy and GetBlock. More info can be found here.
- TEE-backed ordering:
- For rollups using Rollup‑Boost, make sure to put transactions that take advantage of verifiable priority ordering and Flashblocks at the top of your list. This helps to minimize the chances of information leaks affecting your strategies. (writings.flashbots.net)
- Time-based ordering markets:
- Arbitrum's Timeboost introduces a cool “express lane” through sealed-bid second-price auctions. If you're working on Arbitrum, it's a good idea to integrate some bidding logic and expected value models. This system has already brought in some solid fees for the DAO and can easily be tweaked for Orbit chains. Check it out here: (docs.arbitrum.io)
5) Simulation and safety: how you avoid paying for reverts
Before you hit that submit button for your settlement transactions or fills:
- Want to take your multi-leg route evaluations up a notch? Check out bundled simulations! Tenderly has got you covered with their
tenderly_simulateBundlefeature available through RPC and API. You can create simulation clusters for each target chain with state overrides, making your gas/price testing a lot more reliable. Get the details here. - Keep an eye on mempool telemetry to see "what just changed," especially as we near auction close. Even though some public tools are fading away, you can still rely on the remaining explorers and archives to dig into private/public ratios and latency windows. Check it out here.
- Don't forget to set up some solid hard guards:
- Use valid-until timestamps and block-based decay windows, especially important for L2s with sub-1 second blocks. More info can be found here.
- Make dominance checks against AMM reference routes to ensure you’re “never worse than EBBO” for those CoW-style batches. Learn more here.
- And most importantly, no sending without revert protection for any significant sizes on Rollup-Boost rollups or through MEV Blocker’s
/noreverts. Get the scoop here.
6) Account abstraction realities you can leverage
After Post-Pectra, EIP-7702 makes it super easy for Externally Owned Accounts (EOAs) to delegate to smart wallet logic using a type-0x04 “set code” transaction that comes with an authorization list. This means you can enjoy the benefits of smart-account behavior that sticks around until you decide to revoke it.
In real-world terms, this enhances the user experience for solvers working with policy wallets, paymasters, and session keys across chains that play nice with 7702-compatible semantics. Just remember to use strict allowlists and set up auto-revoke procedures for added security. You can read more about it here.
For intent systems that support ERC‑4337 UserOperations, make sure your bundler integrations are always current. Today’s setups often mix protocol-level 7702 with 4337 alt-mempool flows based on the chain. Check it out here: (eips.ethereum.org)
7) An execution blueprint (90 days)
Phase 0-2 weeks: Platform Choices and Safety Rails
- Pick your initial rails: CoW (batch) + UniswapX (auction) + ERC‑7683 for some cross-chain action.
- Get MEV‑Share and MEV Blocker routes up and running; and don’t forget to outline privacy tiers for each flow.
- Establish those SLOs: aim for p95 quote latency under 200 ms, fill success over 98%, and keep the revert rate below 1%.
Phase 3-6 weeks: Solver Core and Sims
- Let’s kick things off by implementing dual-engine routing. We’ll set up a deterministic baseline alongside a heuristic improver, aiming for a quick 1-2 seconds wall-time.
- Next up, we’ll integrate Tenderly bundle simulations for all our target chains. We’ll also need to build post-condition validators and make sure we have price/bound proofs in place. Check out the details here.
- Finally, we’ll get the UniswapX filler wired up. This includes handling webhooks/polling, managing permit2, and exploring directFill modes. If we’re pushing for mainnet quoter access, we’ll need to meet that 500 ms RFQ constraint. You can find more info here.
Phase 7-10 weeks: Rollup Integration and Ordering
- Get things rolling on OP‑Stack L2 (think Base or Unichain) with the Rollup‑Boost sidecar in staging. We need to check out the revert protection and see how the Flashblocks latencies are doing. Check out more details on this here.
- If you’re aiming for Arbitrum, it’s time to add the Timeboost bidding feature. Just make sure to gate those bids behind EV>0 and keep an eye on slippage-aware reprice. You can find all the info you need here.
- Don’t forget to include the ERC‑7683 settlement module and make sure we’ve got the OP‑Stack bridge handling sorted. Dive into the specifics here.
Phase 11-13 weeks: Monitoring, Incentives, and Cutover
- Keep an eye on the per-order and per-batch metrics: check the surplus delta against AMM fallback, track rebates/MEV refunds, and differentiate between private and public inclusions, as well as the reasons for reverts.
- Sign up for CoW solver rewards and join UniswapX trusted channels when relevant. You can find more info here: (docs.cow.fi).
- Conduct a thorough security review, focusing on signature domain checks, permit2 nonces, destination allowlists, and on-chain guards.
8) KPIs that actually matter to decision‑makers
- Price improvement compared to the baseline (AMM/EBBO) based on size bucket, minus gas fees. (docs.cow.fi)
- Fill rate, along with cancel/fade rates and the 95th/99th percentile latencies (from quote to on-chain inclusion).
- Revert rate (both gross and net of revert protection) and average simulation error.
- MEV refunds that users/wallets receive (thanks to MEV‑Share/MEV Blocker) as a percentage of the overall flow. (docs.flashbots.net)
- Cross-chain fill times and failure rates for ERC‑7683 orders. (erc7683.org)
- Operational costs per 1,000 fills for each chain (including RPC, simulation, and infrastructure).
9) Example: cross‑chain treasury swap with execution guarantees
Scenario
Imagine a treasury looking to swap 1,000,000 USDC on Base for stETH on an OP‑Stack L2. They want to do this with revert protection and ensure they get the best net price possible.
Steps to Execute the Swap
- Select the Right DEX: First up, find a decentralized exchange (DEX) that supports this kind of swap. You’ll want something that handles both USDC and stETH, ideally with a good reputation for slippage and low fees.
- Check for Revert Protection: Ensure that the DEX provides revert protection. This means if something goes wrong during the transaction, you won’t lose your funds.
- Compare Rates: Before confirming the swap, compare the rates across different DEXs. Sometimes, a little price difference can make a significant impact on your final amount of stETH.
- Execute the Swap: Once you’ve found the best rate and ensured you have revert protection, go ahead and execute the transaction.
- Monitor the Transaction: After the swap, keep an eye on the transaction status to make sure everything goes smoothly.
Example Code Snippet
Here’s a quick code snippet to give you an idea of how this might look in practice:
const usdcAmount = 1000000;
const slippage = 0.01; // 1% slippage
const revertProtection = true;
// Function to execute the swap
async function swapUSDCtoStETH() {
// Logic for selecting DEX and executing the swap goes here
}
Key Things to Remember
- Security First: Always prioritize platforms that have robust security measures.
- Stay Updated: The crypto space changes fast, so keep an eye on market trends and rates.
- Documentation: Make sure to read through the DEX’s documentation for any specific requirements or processes.
By following these steps, the treasury can effectively swap their USDC for stETH while minimizing risks and maximizing their returns.
Plan:
- Express as ERC‑7683 order: We'll settle the funds in a standard CrossChainSettler contract. Make sure we have a deadline of 7 minutes, with a slippage of 20 bps. Oh, and don’t forget--privacy is key, so we need a private relay. Check out the details here.
- Solver route: Here’s the game plan:
- Capture the best price on Base through a protected flow.
- Hedge and bridge using the intents filler network.
- Settle on the destination rollup, and make use of Rollup‑Boost revert protection.
- Finally, we’ll return any surplus and rebates back to the treasury according to OFA rebate rules. Get more info here.
- Safety: We’ll bundle-simulate both legs of the transaction. We need to ensure that we require attestable ordering on the destination. If we can't guarantee revert protection or if our simulation confidence is below the threshold, we’ll block the submission. For details on bundled simulations, you can refer to this link.
10) Emerging best practices we see winning in 2026
- Start private, prove public: It’s a good idea to kick things off using OFAs/private RPC for any sensitive stuff. Once things are settled, go ahead and share post-trade receipts and proofs so that everything's clear for audits. (docs.flashbots.net)
- Build for verifiable ordering: Whenever you can, aim for TEE-attested ordering (like Rollup-Boost) or sealed-bid lanes (think Timeboost). It's way better to have straightforward expected value policies rather than getting caught up in latency races. (writings.flashbots.net)
- Compose with standards: Make sure to use ERC-7683 for cross-chain intents. As the OP-Stack interop gets better, try to plug into that instead of creating your own bridges--those bespoke ones can be a hassle. (erc7683.org)
- Keep DA assumptions explicit: If your clients are going with Celestia (Blobstream) or EigenDA, don’t forget to tweak your fee and timing models accordingly. Also, it’s super important to document how any data availability outages could impact your service level agreements (SLAs). (blog.celestia.org)
- Treat MEV as a cost center: Keep track of those “spam externalities” and make sure to reward practices that boost overall user benefits. It’s all about finding a balance and aligning with Builder/Sequencer ecosystems that give back value (like MEV-Share and Rollup-Boost). (docs.flashbots.net)
11) Implementation notes you’ll thank yourself for later
- Here are some key UniswapX details to include in your runbooks:
- Make sure the RFQ response time is under 500 ms; set the quote server region to us-east-2; apply small-order filters; keep in mind the “fade” penalties; and don't forget to use the OrderQuoter sim to check for fillability before you deal with gas. (docs.uniswap.org)
- For V3 Dutch, remember that it uses block numbers for decay--this is especially relevant on Arbitrum with those speedy 250 ms blocks. (docs.uniswap.org)
- Lastly, check out the Permit2 witness semantics and the directFill(address(1)) path for tapping into your own inventory. (docs.uniswap.org)
- CoW Protocol details:
- Make sure to follow FCBA fairness constraints and pick your auction wisely; only submit combinatorial bids that beat out single-order bids to steer clear of any “unfair” filtering. Oh, and don’t forget to sign up for the weekly COW rewards! (docs.cow.fi)
- OP-Stack Realities:
- Fault proofs are up and running! Stage-2 is our guiding star (think multi-proof, with a security council ready for emergencies). There's a budget in place for upgrades and a rhythm for shared governance. Check out more details here!
- Shared sequencers:
- When you’re aiming for Astria, make sure to set up your Composer/Conductor clients and get familiar with namespace filtering. Also, anticipate using Celestia light nodes for each rollup to secure DAS guarantees. Check it out here: (astria.org)
- Simulation and observability:
- Take advantage of bundled simulations; keep an ongoing model comparing revert-protected and non-protected submission costs by chain. Plus, make sure to archive those parameter studies that look at slippage versus latency by venue. (docs.tenderly.co)
Close
Intents aren’t here to take over transactions; instead, they're shaking things up in terms of who’s in the game and how value gets distributed. To really stand out as a solver, you need to focus on three key areas:
- Protocol-native correctness and safety that never slips up.
- Decisive latency and privacy engineering to keep things smooth and secure.
- Modular rollup awareness--this means making the most of verifiable ordering, shared sequencers, and efficient data availability.
So, build your solutions using the existing infrastructure we have today, like CoW, UniswapX, and ERC‑7683. Launch with private and MEV-aware execution from the get-go, and be ready to adapt to where rollups are headed: think quicker confirmations, better withdrawal assurances, and programmable ordering. Check out more details in the official documentation: (docs.cow.fi)
Looking for a blueprint that's customized just for your stack--whether it’s assets, chains, or your specific latency/SLO targets? We've got your back! We can help you launch a pilot in just 90 days and get a competitive solver up and running in a quarter.
Like what you're reading? Let's build together.
Get a free 30-minute consultation with our engineering team.
Related Posts
ByAUJay
Building a Donation-Based Crowdfunding Platform That Gives Tax Receipts
**Summary:** Donation-based crowdfunding that includes tax receipts has become quite the complex puzzle across different regions. You've got to navigate IRS Pub 1771/526 rules, UK Gift Aid declarations, Canada’s CRA receipting, and the new eIDAS/OpenID4VCI wallets--all while keeping everything running smoothly.
ByAUJay
Why 'Full-Lifecycle Advisory' Beats Just Coding
**Summary:** Engineering teams that focus solely on “writing Solidity” often find themselves caught off guard by shifts in protocols, the need for composable security, and the procurement hurdles that are now impacting real ROI. Our full-lifecycle advisory service bridges the gap by connecting EIP-7702 smart accounts, modular decentralized applications (DA), and ZK-based compliance solutions.
ByAUJay
Why Your Project Could Really Use a 'Protocol Economist
Summary: A lot of Web3 teams are missing a crucial player: the “protocol economist.” And you can really see the impact--value slips away through MEV routing, token incentives that are all out of whack, and those sneaky changes to wallets after Pectra that end up messing with the unit economics. In this playbook, we’ll explore what a protocol economist can do to tackle these issues head-on.

