Cross-Chain CoWs the Simple Way: Minimal Protocol Changes Using Espresso + Across Infrastructure

TL;DR

We can turn CoW Protocol into a truly chain-agnostic DEX with native cross-chain swaps by wiring its batch-auction engine into Espresso Systems’ global confirmation layer (for real-time, credibly-neutral cross-chain state) and Across Protocol’s intent bridge (for instant liquidity when no direct CoW exists). Espresso lets solvers view and settle intents across chains in a few seconds, enabling atomic cross-chain coincidences of wants (CoWs) that need no bridge at all. When a perfect match is absent, solvers automatically fall back to a swap-on-origin → bridge-via-Across → (optional) swap-on-destination path that still finalizes in seconds and inherits CoW’s price competition. The only things we need are (1) small extensions to the settlement contracts, (2) a cross-chain-aware solver workflow, and (3) minor UI updates to capture source/destination chain in the order schema.

:one: Why Cross-Chain Swaps, Why Now?

  • Liquidity is fragmented: each current CoW deployment runs its own batch auction silo.
  • A direct user-level bridge costs two on-chain txs and exposes MEV/latency.
  • Previous CoW³ threads already identified cross-chain CoWs as the “holy grail” for atomic swaps and gas savings.
  • Transforms CoW Protocol from a single-chain DEX aggregator into a global liquidity discovery system.

Espresso’s confirmation layer was built exactly for this: it turns many chains into one logically-synchronous network with BFT finality in ~2 blocks (≈ 2-7 s). Across, meanwhile, is the leading intents bridge; its relayers pay the user on the destination chain first and get reimbursed later, achieving sub-10 s bridge UX when paired with Espresso.

:two: Architecture at a Glance

┌──────────────────────────────────────────────────────────────────┐
│ User creates intent: "Swap ETH on Arbitrum for USDC on Optimism" │
└─────────────────────┬────────────────────────────────────────────┘
                      ▼
              [Broadcast via Espresso]
                      │
        ┌─────────────┴─────────────┐
        ▼                           ▼
[Direct CoW Found?]          [No Match Found]
   ✅ Yes: 0 bridges              ❌ Use Across
   Alice ←→ Bob directly          Swap + Bridge
   Zero bridge fees!              Still <1 minute
Step What Happens Tech Used
1. Intent broadcast User signs order with originChain / destChain fields; frontend posts it to Espresso. Espresso SDK
2. Global discovery All solvers subscribe to the CoW namespace on Espresso and see every cross-chain swap order, regardless of chain. HotShot consensus
3A. Direct CoW (best case) Solver finds a counter-order on the opposite chain; both sides escrow tokens, Espresso confirms both locks, contracts release to the counterparties. CoW settlement + Espresso
3B. Swap + Bridge (fallback) Solver swaps on source chain, deposits result into Across SpokePool; Across relayer pays user on destination, possibly after a destination-side swap; Espresso proof slashes risk window. CoW swap + Across intents
4. Finality Either path finalizes; user sees target token or nothing happens.

:three: Cross-Chain Swap Execution Flow

3.1 Espresso-Powered Global Intent Discovery

Cross-chain swap intents are broadcast to all solvers via Espresso’s network - no blockchain transaction required at this stage. Solvers watching Espresso instantly see new intents regardless of which chain they originate from, creating a truly global orderbook.

3.2 Direct Cross-Chain CoWs

  • Perfect 1-1 example: 100 DAI Mainnet ↔ 100 DAI Gnosis saves two bridge txs
  • Atomicity: settlement contract on each chain releases only after an Espresso attestation that the opposite escrow succeeded, following the “resource lock → release” pattern proposed in CoW³ security notes.

3.3 Swap + Across Bridge

  • If no match for the cross-chain swap, solver swaps sell-token → bridge-token on source chain (still inside CoW batch auction).
  • Deposit goes to Across SpokePool; relayer fills within seconds, backed by HubPool liquidity and UMA optimistic proofs.
  • Espresso confirmation means relayer risk window ≈ 0; competition drives fees down.
  • User gets target asset fast; solver accounts for bridge fee in the quote, so price ≤ DIY bridge.

:four: Required Changes to Enable Cross-Chain Swaps

Component Minimal Extension Needed
Settlement contracts Add cross-chain escrow & release hooks; whitelist Across SpokePool as a receiver; optional light-client for Espresso attestations.
Order schema Two new fields: originChainId, destinationChainId, (+optional bridgdeSpeedHint).
Solver stack Global order injector; pricing module for cross-chain swaps via Across quotes; execution engine that can emit N txs (one per chain + bridge deposit).
Batch auction logic Allow multi-chain bundles; scoring already works because surplus is chain-agnostic.
Frontend Chain selector in “From” / “To” dropdown; show estimated bridge fee & ETA for cross-chain swaps.
Bonds / risk Direct CoWs are escrow-based (no extra bond). Swap + Across risk is borne by bonded relayers per Across design.

:five: Security & Finality

  • Fast BFT: HotShot finalizes after two blocks; rolls up to ETH security via restaking.
  • Bridge risk externalized: Across relayers front capital; HubPool + optimistic bundles refund them, not the user.
  • Atomic or refund: If any leg of the cross-chain swap fails, funds remain in the original escrow; user never ends up half-way.
  • Solver inventory optional: Permissionless liquidity can be used per settlement, as outlined in CoW³ analysis.

:six: Risks & Mitigations

Risk Mitigation
Espresso downtime Fallback to current single-chain CoW behavior
Across liquidity shortage Dynamic fees attract more relayers; solver can reject unprofitable orders
Cross-chain MEV Espresso’s BFT consensus + atomic execution windows
Smart contract bugs Phased rollout with volume caps; formal verification of escrow logic

:seven: Call to Action

I’ve developed a proof-of-concept for cross-chain swaps using Espresso + Across and am deeply interested in joining the CoW team to bring this vision to production.

I’m ready to contribute full-time to make CoW Protocol the first truly chain-agnostic DEX. My expertise includes:

  • Understanding of the technical integration between CoW, Espresso, and Across
  • Smart contract integration for multi-chain settlement
  • A bit of Solver development and cross-chain intent matching algorithms

To the CoW team: I’d love to discuss how we can work together to implement this architecture. I’m committed to seeing this through from PoC to mainnet launch.

Please reach out via forum DM or Discord (@khrafts) - let’s make any-asset-any-chain swaps a reality! :cow_face::bridge_at_night::rocket:

:books: References

  1. Espresso Network docs – confirmation layer.
  2. Across docs – cross-chain intents bridge
1 Like

Hi @khrafts,

Thank you for your proposal. It sounds interesting. Is Espresso already capable of attesting inclusion of Mainnet Ethereum transactions? How they deal with its slow finality (I couldn’t find anything with this regard in their docs)? If I understand correctly, having consensus about tx inclusion on all connected chains is crucial for deciding whether the ressource lock can be released on the source chain.

Do you have a link to the prototype you were mentioning?

1 Like

Hi @fleupold
Thanks for going through this. Was out for a few days hence the late reply.
Currently Espresso is only capable of global confirmations across connected L2/L3 chains and as such would be limited in use case.
In hindsight, I sincerely was too optimistic about this. I’d developed a PoC in my local alongside working on this publication. As per my eventual experience, it’s not yet suited for the use case of cross-chain CoWs - at least not yet.
I have made efforts to contact the team as to where they’re in plans of integrating the major OP stack chains and I’m yet to get a response. I’d add an update here as soon as I have one.

1 Like