System overview
Reading the diagram. Steps 1-4 happen off-chain over WebSocket inside a single quote window. TrueCurrent currently uses 500 ms; the value can vary by frontend and protocol configuration, and API takers can tune their own timeout. Step 5 is one on-chain transaction that atomically opens both the taker’s and the maker’s positions.Components
RFQ Indexer (off-chain)
The indexer is TrueCurrent’s off-chain coordination layer. It:- Maintains the registry of whitelisted maker addresses
- Operates the TakerStream WebSocket (for traders submitting requests)
- Operates the MakerStream WebSocket (for makers receiving requests and submitting quotes)
- Routes requests to all active makers
- Collects and forwards quotes back to traders
- Selects the best quote for presentation
TrueCurrent smart contract (onchain)
Deployed on Injective as a CosmWasm contract, the TrueCurrent contract is the trust anchor of the system. It:- Verifies maker signatures on each
AcceptQuotecall - Enforces the trader’s
worst_priceconstraint - Checks quote expiry
- Confirms both parties have sufficient margin
- Executes the settlement through Injective’s exchange module using pre-granted
authzpermissions
Injective exchange module
Injective has a native exchange module built into the chain consensus layer – not a smart contract, but a chain-level primitive. The TrueCurrent contract usesMsgPrivilegedExecuteContract to call into this module for final position settlement.
The exchange module handles:
- Margin accounting and position tracking
- Liquidation engine
- Funding rate calculations and payments
- Onchain order book (used for fallback fills)
Data flow: full trade lifecycle
Step-by-step:- Trader → Indexer (TakerStream): Trader sends an RFQ request over WebSocket
- Indexer → All MMs (MakerStream): Request is broadcast to all active makers simultaneously
- MMs -> Indexer (MakerStream): Each maker responds with a signed quote inside the collection window
- Indexer → Trader (TakerStream): Best quote is returned to the trader
- Trader → Chain (AcceptQuote): Trader submits the
AcceptQuotetransaction with the quote and their parameters - Contract verification: Onchain contract verifies signature, price, expiry, and margin
- Settlement (exchange module): Contract uses
authzto open positions for both taker and maker through Injective’s exchange module - Position update: Both wallets’ subaccounts reflect the new positions
AcceptSignedIntent when the trigger is satisfied. Makers still receive ordinary RFQ requests. Steps 6-8 are the same.
Trust model
Who you trust when trading on TrueCurrent:- The TrueCurrent smart contract – open source, onchain, deterministic. Verifiable by anyone.
- Injective chain and validators – for block finality and execution of the exchange module.
- The RFQ indexer – only for routing. It cannot steal funds or change prices. At worst, a malicious indexer could drop requests (degraded service), but couldn’t cause unauthorized trades.
- Individual makers to honor prices – the signature enforces it onchain
- TrueCurrent to hold or secure your funds – assets stay in your subaccount at all times
- Centralized infrastructure for settlement – all final settlement is onchain

