Oryn splits responsibilities across services. The contracts enforce settlement. The orderbook coordinates intent and state. Watchers keep the database aligned with on-chain events. Solvers provide liquidity.

Components

ComponentOwnsDoes not own
AppUser flow, wallet calls, quote selectionSettlement guarantees
Quote servicePrices, route selection, quote expiryEscrow state
OrderbookOrder records, deterministic vault addresses, status readsCustody of funds
ContractsClaim, cancel, bridge dispatch rulesQuotes or UI state
RelayerGas-assisted destination claim submissionQuote validation or custody
WatcherOn-chain event ingestionUser intent creation
SolverDestination liquidity and source-side claimUser wallet control
The orderbook is coordination infrastructure. The contracts are the settlement boundary. When debugging, always separate “what the API says” from “what the chain has finalized.”

Data flow

  1. Quote service returns a route and exact amounts.
  2. Orderbook consumes the quote and records the two escrow intents.
  3. App and solver initiate the source and destination escrows.
  4. Watchers update order state from contract events.
  5. Relayer submits the destination claim when the user reveals the secret.
  6. Solver claims the source escrow using the revealed secret.

Why this split exists

RequirementDesign response
Users should not trust the orderbook with fundsFunds live in escrow contracts.
Solvers need deterministic addressesFactories compute vaults from immutable parameters.
UIs need readable stateWatchers turn chain events into orderbook fields.
Claims should work without user gas on destinationRelayer validates and submits claim transactions.
Avalanche L1 settlement needs bridge routingHop vaults call ICMBridgeFactory after secret verification.