- Gasless. The user signs one EIP-712 message and a relayer sends the source transaction and pays its gas. The gas is charged in the token you send and is already taken off every quoted amount. Relay’s relayer submits Relay fast fills. Across fast fills are sponsored by BRDG: BRDG’s relayer submits the deposit to Across’s
SpokePoolPeriphery, and the user’s signed USDC covers that gas plus the platform fee in the same transaction. The quote shows this as oneFast fill feeline, and BRDG refuses any amount where that fee would exceed 5%. - Sent by the user. Mayan Swift is a solver fill too, usually about 3 seconds, but the user sends the source transaction and pays its gas. BRDG offers it only when the wallet can: see the gas check.
privacy: true cannot be combined.
How BRDG aggregates fast fills
POST /fastfill/quoteasks only the venues with a fast lane: Relay, Across and Mayan. Every other venue is left out silently.- Each venue quotes its fast form only: Relay its gasless permit order where the token has one, otherwise its ordinary solver fill sent by the user (native tokens, and every Solana source); Across the sponsored deposit; Mayan its Swift route (never its slower CCTP or Wormhole routes). A venue that has no fast form for the pair answers
no_route. - BRDG reads the
sender’s native balance on the source chain once, and refuses any row the user sends (Mayan, or Relay without a permit) that the wallet cannot pay gas for. - The answers are ranked by what the user receives, exactly as in
POST /bridge/quote.bestis the winner, andrejectedlists every venue that did not quote, with its reason.
The gas check
A row the user sends needs gas on the source chain. BRDG comparessender’s native balance with the venue’s own gas estimate for that route (on Solana, the rent the swap accounts need). If the balance is short, the row is refused with insufficient_gas and appears in rejected. If the venue gives no estimate, any balance at all passes. If the balance cannot be read, nothing is refused and the wallet itself refuses a send it cannot afford. Gasless rows are never checked.
Supported
Hyperliquid
toChain: "hypercore" works on the fast lane, with both kinds of Hyperliquid route ranked together exactly as in POST /bridge/quote:
- Direct. The venue credits the Hyperliquid account straight from the source chain. Relay and Mayan Swift both do, and a direct Relay row needs no gas from the user where the token has a permit.
- Through Arbitrum. The venue delivers USDC to Arbitrum and BRDG’s relayer credits the account. The row carries
postStep: { kind: "hypercore_deposit", chain: "arbitrum", vm: "evm" }, and your user signs nothing after the source step - whether that step was a signature or a transaction. The relayer charges its gas plus 10 cents, capped at $1, already inside the quoted output.
rejected with code: "below_min" and the amount it would have delivered.
A hypercore source quotes but no venue serves it fast yet, so the table comes back empty with emptyReason: "no_fast_fill_route" and Relay’s own reason in rejected. Use POST /bridge/quote to bridge out of Hyperliquid.
How it works
1
Quote
POST /fastfill/quote asks only the venues with a fast fill lane and ranks them by what the user receives.2
Build
POST /fastfill/build returns steps for the winner. On the gasless lane the last step is { vm: "sign", scheme: "eip712", payload }: sign payload.domain, payload.types, payload.primaryType and payload.message with the wallet in payload.owner, using eth_signTypedData_v4. Do not sign payload.venueSubmit; it is the venue’s own handle. Any other step (an approve, a Relay order without a permit, or a Mayan order, as vm: "evm" or vm: "svm") is an ordinary transaction: send it and wait for it to be mined. A Solana step arrives already signed by Mayan’s own keys, so add the wallet’s signature without changing the blockhash or adding instructions.3
Submit
A signature goes to
POST /fastfill/transfers/{id}/submit with { signature }. BRDG checks that it belongs to owner and covers exactly the built message, then hands it to the venue. A transaction goes to POST /bridge/transfers/{id}/submit with the step’s own step (approve or main).4
Track
GET /bridge/transfers/{id}, like any transfer. If the submit answered txHash: null, the relayer holds the signature and has not broadcast yet; BRDG keeps tracking it and fills in sourceTxHash when the venue reports it.Script
This script sends 10 USDC from Base to Arbitrum on whichever fast lane wins. On the gasless lane it spends no ETH; if Mayan wins, the wallet sends one transaction. It uses the TypeScript project; save it assrc/fast-fill.ts and run npx tsx src/fast-fill.ts.
src/fast-fill.ts
Errors
Fees and referrals
The platform fee works exactly as it does onPOST /bridge/quote and is already inside every output amount. Both referral fields are accepted here too:
A fast fill the venue relays is gasless: the user signs a message and the venue’s relayer sends the source transaction, so there is nothing of the user’s for an integrator payout to ride in. Those rows come back with
referralFeeAmountAtomic: "0" and fees.referral: null, rather than quoting a share that would never be paid. A fast fill the user sends (Mayan Swift, and Relay on native and Solana sources) pays your share in that transaction like any other transfer.