Skip to content

withdraw

---
config:
  theme: dark
---

sequenceDiagram
    participant T as Taker
    participant C as Cloud
    participant M as Market Maker

    Note over T: Sends RFQ request object (no signature required)
    T->>C: POST /rfq/request

    Note over C: - validate RFQ Request payload structure<br/>- validate min size for each leg<br/>- generate & assign order_id<br/>- store to Redis<br/>  - key is rfq:request:taker_address:order_id<br/>  - set deadline (5 mins)

    C->>M: Broadcast via WS RFQ channel or use REST API GET /rfq/request

    M->>C: Respond to POST /rfq/response with signed Limit Orders array and order_id

    Note over C: - validate RFQ Response payload structure<br/>- validate RFQ Trade Response payload:<br/>  - Redis key rfq:request:taker_address:order_id exists (not expired)<br/>  - response has all legs requested<br/>- store to Redis<br/>  - rfq:response:taker_address

    C->>T: GET /rfq/response?taker=takerAddr

    T->>C: Taker signs MarketFill FOK with trade_id and sends POST /rfq/fill

    Note over C: Risk Engine receives MarketFill and trade_id request and fills the order

    Note right of C: POST /rfq/request endpoint must be throttled (5 requests per minute)