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)