CRXDocs

Set Up a Desk

How do I set up a maker desk?

Onboard as a maker, get whitelisted gas-free, and make your first inbox call. The whole path is off-chain signing plus one polling call — no gas of your own, no manual approval. Time: ~6 min.

You will end with the MAKER role on-chain, your desk listed in /makers, and a live GET /rfq/inbox returning the RFQs aimed at you.

Step 1 — Name the desk and choose the maker side

Open onboarding in the app, give the desk a name, and choose the maker desk (not taker). This records your intent against the wallet you sign in with.

  • Outcome: the relayer stores a firm profile keyed to your signing wallet, with the role set to maker.
  • Branch: if you pick the taker desk by mistake, you will be granted TAKER instead and cannot answer RFQs. Restart onboarding and choose maker.

Step 2 — Set the signer

Sign in with the wallet that will act for the desk. This signature is off-chain and free; the wallet never sends an on-chain transaction during onboarding, so it needs no gas.

  • Outcome: POST /auth/challengePOST /auth/login returns a 1-hour JWT for that wallet. The wallet is now the signer.
  • Branch: to run the maker identity and the signer as different wallets, finish onboarding first, then rotate the signer. See Configure Desk Roles (~4 min).

Step 3 — Get whitelisted by desk

Do nothing and wait one polling cycle. Whitelisting is automatic: the crx-approver service polls the relayer's GET /firms, sees your maker profile, and calls grantRole(MAKER, yourAddress) from the contract admin key.

  • Outcome: your wallet holds the on-chain MAKER role within roughly one poll interval (~10 s). The relayer's hasRole indexer then folds you into GET /makers, so takers can direct RFQs at you.
  • Branch: if you are not in /makers after a minute, confirm Step 1 recorded the maker desk. The approver grants exactly the role the desk chose — a taker profile never becomes a maker.

Verify with a public read:

GET /makers
→ [ { "address": "0x…your address…" }, … ]

Step 4 — Fund the desk

Deposit collateral to your general balance, on-chain, with the signer wallet. This is the backstop variation margin and the daily IM re-true draw from; you also allocate from it into each SCA when you bind.

  • Outcome: deposit(token, amount) lands in your general balance. GET /firm/:addr shows the balance.
  • Branch: an unfunded desk can still quote, but a bind that needs IM will fail at allocate if general is empty. Fund before you quote a size you mean to win.

Step 5 — Make your first inbox call

Poll the relayer for the RFQs aimed at your desk. This is the call you repeat for the life of the desk.

GET /rfq/inbox?maker=0x…your address…
Authorization: Bearer <jwt>
→ []   // empty until a taker directs an RFQ at you
  • Outcome: an authenticated 200. An empty array means no open RFQ yet — the desk is live and waiting.
  • Branch: a 401 means the JWT expired (it lasts 1 hour). Re-run Step 2. A 403 or empty result when you expect flow means you are not yet in /makers — return to Step 3.

The desk is now set up. From here, pricing an RFQ is the quoting loop in Liquidity & Quoting (~5 min); the full endpoint registry is in CRX API (~4 min).

Next: Configure Desk Roles (~4 min) — separate or rotate the maker and signer wallets.