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
TAKERinstead 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/challenge→POST /auth/loginreturns 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
MAKERrole within roughly one poll interval (~10 s). The relayer'shasRoleindexer then folds you intoGET /makers, so takers can direct RFQs at you. - Branch: if you are not in
/makersafter 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/:addrshows the balance. - Branch: an unfunded desk can still quote, but a bind that needs IM will fail at
allocateif 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
401means the JWT expired (it lasts 1 hour). Re-run Step 2. A403or 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.