Skip to main content
TrueCurrent uses Injective’s native authz module to allow the smart contract to act on behalf of both traders and makers during settlement. This page explains the model in detail.

Overview

When you accept a quote on TrueCurrent, the onchain settlement involves the TrueCurrent contract calling Injective’s exchange module to open positions for both you and the maker. Rather than requiring both parties to sign separate transactions at settlement time, TrueCurrent uses pre-granted authorizations so the contract can bundle everything into a single atomic transaction. The dotted lines are one-time grants. The solid lines are what the contract can do because of those grants — scoped to the specific message types you authorized. This is secure because:
  1. Grants are message-type specific. You’re only authorizing specific message types (MsgPrivilegedExecuteContract, MsgBatchUpdateOrders, MsgSend) – not blanket wallet access.
  2. Grants are scoped to the contract address. The authorization only applies to the TrueCurrent contract, not any other address.
  3. Grants are revocable. You can revoke any grant at any time, immediately stopping all future contract-initiated actions.
  4. Onchain verification. The Injective chain enforces that only the authorized grantee can submit authorized messages – this is not just convention, it’s chain-level enforcement.

Required grants for traders


Required grants for makers


Grant lifecycle

Initial setup: Grants are submitted as transactions on Injective. Each grant type requires a separate transaction. After setup, grants persist indefinitely unless explicitly revoked or they reach an expiry date you set. During trading: Every time a trade settles, the TrueCurrent contract uses your pre-granted permissions to execute the settlement messages. No further action is needed from you. Revoking: Submit a revoke transaction for any specific grant. The revocation takes effect immediately – the contract can no longer submit that message type on your behalf.

Viewing your active grants

You can query your active authz grants on Injective using:
Or via the Injective REST API:

Why not just use allowances or signatures per trade?

Alternative designs exist - for example, requiring the trader to sign each AcceptQuote transaction manually. TrueCurrent uses authz instead for UX reasons: waiting for a second user signature during the short quote expiry window introduces friction and increases the chance the quote expires before settlement. The authz model allows instant, one-click settlement. The security tradeoff is the pre-granted permission. TrueCurrent mitigates this by keeping grants narrow (specific message types only) and building the onchain contract checks (worst price, quote signature, expiry) as the actual security layer – the contract enforces your trading parameters regardless of its grant.
Last modified on July 23, 2026