Skip to main content
Every quote carries an Ed25519 signature by the maker’s wallet key. The maker signs the quote’s contents and sends only the signature, as maker_signature in rfq.maker.respond, together with the fields in the respond frame. The venue rebuilds the same contents from the open request and that frame, checks the signature against them, and reports a quote_id that identifies the signed quote in every later message.

What the signature covers

The program ids and config accounts for each cluster are on Program Addresses.

Nonce and expiry

quote_nonce must be higher than every nonce the account has used before, across restarts. expires_at can be at most one hour after issued_at, and a quote must reach the venue with more than 2 seconds of life left. The full rules are under Responding on Quoting RFQs.

When a signature is refused

  • RFQ_INVALID_SIGNATURE: the signature does not verify over the contents the venue rebuilt. Usually the maker serialized a field differently, or signed with a key other than the wallet that owns the maker subaccount.
  • RFQ_CANONICAL_MISMATCH: the contents decoded, but a field differs from the venue’s record of the request, such as the deployment, the legs, or a subaccount that does not belong to the signing wallet. Resending the same frame produces the same result.

Serialization

The byte-level format of the signed quote, with test vectors and a reference signer, is shared with market makers during onboarding. Email support@joyride.exchange. Next: Devnet Sandbox