Toro Trade

Mainnet beta: real USDC, unaudited, deposits capped at $100 per account.Read the risks

Toro additions

Gasless intents

Every user action has an EIP-712 message. You sign it, the relayer pays the gas, and the IntentRouter checks the signature on chain before anything moves. Direct calls stay available.

Domain

FieldValue
nameToro Trade
version1
chainId999
verifyingContract0x8F5a2aA3299f1b57e43d8578c69633702f5163A7

Actions

Intent(address account, uint8 action, uint32 marketId, bool isLong, uint256 margin,
       uint16 leverage, uint256 priceBound, uint256 positionId, uint256 nonce, uint64 deadline)
ActionSignerWho may submit
OPEN, CLOSE, CANCELwallet or session keyrelayer (CANCEL: anyone)
DEPOSIT (with permit)walletrelayer
STAKE, UNSTAKE, CLAIMwalletrelayer
WITHDRAWwalletanyone; pays only to the account
Session key register / revokewalletanyone

The target’s message types (OpenPosition, Close, WithdrawToCore, Stake, Unstake, Claim, RegisterSessionKey) are accepted too, so existing bots can switch with an endpoint change.

Nonces and deadlines

Nonces are unordered and single use, so intents never block each other. Each intent expires after its deadline (the SDK uses 60 minutes). A CANCEL burns a nonce before the relayer uses it.

Submitting

POST /api/v1/intents   { action, signed: { …message fields, v, r, s } }
→ { action, intentId, state }   // state: queued | prepared | confirmed | failed | …

@toro/sdk builds, signs and serialises every message (toro.sign.*, toWire).

Values on this page are read from the HyperEVM mainnet deployment (chain 999, block 48891965) at build time.

Last updated 2026-10-18