Skip to main content
Market makers on Convallax provide liquidity by quoting options via a WebSocket-based RFQ relay. When a trader submits a request for quote, connected market makers receive the RFQ broadcast, analyze the trade, and submit competitive prices. The best quote wins the trade, and settlement happens atomically on-chain.

How It Works

1

Connect to the relay

Open a WebSocket connection to the maker endpoint. You receive a confirmation message with the protocol version and server time.
WS /maker/v1/ws
If the relay requires authentication, append your API key:
WS /maker/v1/ws?apiKey=<your-key>
2

Receive RFQ broadcasts

When a trader submits a signed RFQ, the relay broadcasts it to all connected makers. You receive the full trade envelope with market data, option parameters, and a deadline.
{
  "type": "rfq",
  "broadcastId": "broadcast-456",
  "deadlineIso": "2026-06-15T12:00:00.800Z",
  "timeoutMs": 800,
  "envelope": {
    "rfqId": "abc-123",
    "conditionId": "0xa4ddc188...",
    "optionType": 0,
    "strikeBps": 50,
    "expiryUnix": 1735689600,
    "tradeSide": 0,
    "tradeSizeMicro": 10000000,
    "currentYesBps": 6200
  }
}
3

Submit your quote

Analyze the RFQ, compute your price, and reply before the deadline:
{
  "type": "quote",
  "broadcastId": "broadcast-456",
  "makerId": "my-mm-id",
  "quote": {
    "rfq_id": "abc-123",
    "side": "sell",
    "price": 0.12,
    "size": 10,
    "greeks": { "delta": 0.45, "theta": -0.02 },
    "spread_bps": 200,
    "expires_in_ms": 5000
  }
}
4

Win and settle

If your quote wins, the relay signs an on-chain Order on your behalf and the taker calls fill() to complete the atomic swap. USDC and option tokens exchange hands in a single transaction.

Core Quoting Loop

StepAction
ConnectWS /maker/v1/ws — receive connected message
ListenReceive rfq messages with trade parameters
QuoteReply with quote message before deadlineIso
WinRelay auto-signs on-chain order if your quote is selected
SettleTaker calls fill() — atomic on-chain settlement

Winner Selection

Taker actionWinning quote
Buying optionsLowest valid price wins
Selling optionsHighest valid price wins

Quote Validation Rules

Your quote must pass these validation checks:
RuleConstraint
rfq_id matchMust match the original RFQ ID
SideMust be opposite to taker’s side (taker buys → you sell)
SizeMust be ≥ 50% of the requested tradeSizeMicro
PriceMust be in (0, 1)
No-arbitrageBuy price ≤ max payoff (i.e. ≤ 1 − K for calls, ≤ K for puts)

Check Relay Status

Verify your connection and see how many makers are online:
GET /maker/v1/status
{
  "protocolVersion": 1,
  "makersConnected": 3,
  "wsPath": "/maker/v1/ws"
}

Environment Variables

If you are running your own relay instance, these variables control maker behavior:
VariableDefaultDescription
MAKER_RFQ_TIMEOUT_MS800Quote collection window in ms (50–30,000)
MAKER_API_KEYIf set, required as ?apiKey= on WS connections
RFQ_ALLOWED_ORIGINShttp://localhost:3000Comma-separated CORS origins

Node.js Starter

A minimal WebSocket client to get started:
import WebSocket from 'ws';

const ws = new WebSocket('wss://your-relay.example.com/maker/v1/ws');

ws.on('open', () => {
  console.log('Connected to Convallax relay');
});

ws.on('message', (data) => {
  const msg = JSON.parse(data);

  if (msg.type === 'connected') {
    console.log('Protocol version:', msg.protocolVersion);
  }

  if (msg.type === 'rfq') {
    const { broadcastId, envelope } = msg;
    const { rfqId, strikeBps, optionType, tradeSide, tradeSizeMicro } = envelope;

    // Compute your price here
    const price = computePrice(envelope);

    ws.send(JSON.stringify({
      type: 'quote',
      broadcastId,
      makerId: 'my-mm',
      quote: {
        rfq_id: rfqId,
        side: tradeSide === 0 ? 'sell' : 'buy',
        price,
        size: tradeSizeMicro / 1_000_000,
      },
    }));
  }
});

ws.on('ping', () => ws.pong());

Provide Liquidity at Scale

If you’re interested in becoming a liquidity provider on Convallax, contact us at hello@convallax.xyz to discuss onboarding, integration support, and partnership terms.