← Protocols
ERC-7683 — Cross-Chain Intents
Standard / EIP·EVM

ERC-7683 — Cross-Chain Intents

01Description

Draft ERC defining a shared order-struct and settlement interface for cross-chain intent systems, so different filler networks can compete on the same orders. Backed by Across and Uniswap as canonical reference implementations.

02Best for
  • 01cross-chain swap UX
  • 02intent-based bridging
  • 03filler / solver networks
  • 04shared liquidity across chains
  • 05gasless cross-chain orders
03Install
  • forge install across-protocol/contracts
  • pnpm add @uniswap/uniswapx-sdk
05Prompt snippet
Implement settlement contracts against the IOriginSettler interface — exposing `open(OnchainCrossChainOrder)` for on-chain submission and `openFor(GaslessCrossChainOrder, signature, originFillerData)` for EIP-712-signed gasless orders — and `IDestinationSettler.fill(orderId, originData, fillerData)` on the destination chain. Resolve user-submitted orders into the canonical `ResolvedCrossChainOrder` struct via `resolve` / `resolveFor` so any filler can quote against them. The `orderData` / `orderDataType` fields are intentionally implementation-specific: Across uses it for relayer-funded fast fills, Uniswap's UniswapX uses it for Dutch-auction parameters. Emit `Open` events with a stable `orderId` so off-chain solvers can index requests.
06Gotchas
  • `orderData` is opaque to the standard — fillers MUST decode it according to the `orderDataType` bytes32 selector, and unknown selectors should be skipped, not guessed.
  • Gasless orders (`openFor`) rely on EIP-712 signatures over the `GaslessCrossChainOrder` struct — domain-separator mistakes silently make signatures unverifiable on chain.
  • Fill deadlines and exclusivity windows are part of `ResolvedCrossChainOrder.fillInstructions` — fillers that ignore them risk losing collateral or having fills reverted.
  • Settlement assumes a trusted oracle / message bridge between origin and destination settlers (e.g. Across's UMA optimistic oracle, Hyperlane, LayerZero) — pick the bridge before designing the order.
  • `orderId` MUST be globally unique across chains; reusing nonces between origin and destination causes replay across implementations.
07Alternatives