Skip to main content
TrueCurrent’s offchain coordination uses two bidirectional streams:
  • TakerStream for takers to request quotes and receive maker responses.
  • MakerStream for whitelisted makers to receive RFQs and submit signed quotes.
For a runnable maker/taker validation path, use the Runbook.

Market price updates

For market-data consumers, indexPrice is streamed with the same cadence and freshness expectations as markPrice. Use indexPrice as the primary source for displayed Index Price and unrealized P&L. Continue to use markPrice or onchain mark_price for contract-facing quote validation, trigger evaluation, liquidation risk, and funding logic.

Endpoints

The public service alias is injective_rfq_rpc.InjectiveRfqRPC. Do not replace it with an internal proto package name. The injective-rfq-toolkit clients store the base URL and append the stream path internally.

TakerStream

TakerStream is used by traders or applications acting on their behalf. Connection path:
Connect with the taker’s Injective address as stream metadata. In the Python toolkit, pass it as request_address when constructing TakerStreamClient.

Request

client_id is your correlation key. The indexer assigns the settlement rfq_id and returns it in the request ACK. Use that ACK-returned rfq_id for quote collection and settlement.

Quote delivery

Quotes delivered to TakerStream are signed maker quotes:
Collect for a short window, select one or more quotes, then submit AcceptQuote. TrueCurrent currently uses 500 ms; the value can vary by frontend and protocol configuration, and API takers can tune their own timeout. Waiting near the full quote expiry leaves little time for transaction inclusion.

MakerStream

MakerStream is used by whitelisted makers. A maker must be registered, funded, and authorized before quotes can settle. Connection path:

Authentication challenge

After connection, the indexer sends a one-shot MakerChallenge. The maker signs a StreamAuthChallenge EIP-712 v2 message and replies with MakerAuth. Until auth succeeds, the stream may remain open but no RFQ request messages are forwarded. Using the reference client:

Incoming messages

MakerStream can broadcast requests unrelated to the taker you are testing. Always filter by taker/request address plus rfq_id, then market and side, before signing. rfq_id alone is timestamp-like and can collide across takers.

Submitting quotes

sign_mode="v2" and evm_chain_id are mandatory for the current signing path. chain_id is the Cosmos chain ID; keep it as injective-888 on testnet. Raw MakerStream JSON uses snake_case field names (evm_chain_id, chain_id); camelCase names are only for EIP-712 typed data or generated client properties. quote_ack.status="success" means the indexer accepted and routed the quote. It does not mean the taker accepted or filled it. Use settlement_update or onchain transaction state for fill confirmation.

Reconnection

Both streams should reconnect with exponential backoff. During downtime, missed RFQs are not replayed; request a new quote as taker, or resume normal quoting as maker.

Last modified on June 2, 2026