Skip to main content
A negotiated quote commits live amounts, keys, timeouts, and route-specific construction data before settlement begins. This page defines the wire family that carries those quotes — one family for every route. Served today: the four BTC corridor pairs. The intra-Arkade transport (arkadeSwapRequest) is specified and joins when served — Arkade Asset Swaps covers how that route sources its quote today.

Quote Lifecycle

1

Discover eligible solvers

Filter accepted solver cards by network, route, amount, and application policy. Discovery advertises capability; it does not prove inventory.
2

Request terms

Address an encrypted request to one solver, or publish the request and select one sealed bid.
3

Verify the quote

Check solver identity, route, amounts, expiry, timing, and settlement profile. Derive the contract locally and reject any mismatch.
4

Persist and commit

Persist the complete recovery record, then perform the route’s first enforceable commitment before valid_until.
5

Settle or recover

Complete the destination action and required claims, or follow the settlement profile’s timeout and refund paths.

Addressed and Published Requests

Neither a request nor a bid locks funds. A bid is signed and attributable but not bonded. The signed quote returned by the selected solver is the binding RFQ message. A client publisher for published requests is tracked in ts-sdk#725; with it, dropping the transport’s solverPubkey is the entire client change.

Relay

RFQ messages may travel through Nostr relays. Client and solver each dial out; neither needs to accept inbound connections. A relay transports messages but does not select a solver, aggregate quotes, or touch funds. The negotiation kinds sit in NIP-01’s ephemeral range: relays deliver them to live subscribers and store nothing, so an expired negotiation leaves no public record. The cost is no store-and-forward — a request sent while the solver is offline is dropped, which the client timeout and retry cover. The advertisement is replaceable: standing state a relay keeps the current version of. Kind numbers remain provisional.

Message Family

Every payload carries the envelope {"v": 1, "type": …}. Addressed payloads are transport-independent. The reference service accepts HTTP and Nostr traffic; clients can implement another transport while preserving the same payloads.

Quote Boundary

Economic commitments stay at the top level. Settlement construction data stays inside profile. Profile fields are also checked against client-owned inputs such as an invoice, payment hash, destination, and network. Recheck time-sensitive conditions immediately before value moves.

Transport Requirements

Regardless of transport implementation:
  • reconnect after both connection errors and clean closes;
  • restore live subscriptions on a new connection;
  • bound and persist or reject outbound events queued while disconnected;
  • correlate every response with the expected RFQ identifier and route;
  • treat a status timeout as unknown, not failed.
Contract and destination-network evidence remain authoritative.

Current Boundary

The reference RFQ service implements the four BTC corridor profiles but is closed source while its HTLC state machine is audited. See Implementation Status before building against the wire protocol.