Vault & Tokens

USDT Collateral

All trading on Strike uses USDT as collateral. Before placing orders, your wallet must approve the Vault to spend USDT.

Approve USDT

// Idempotent — skips if allowance is already sufficient
client.vault().approve_usdt().await?;

This calls USDT.approve(vault, type(uint256).max). It checks the current allowance first and skips the transaction if approval is already set. Safe to call every time your bot starts.

Balance and Allowance

let signer = client.signer_address().unwrap();

let balance = client.vault().usdt_balance(signer).await?;
println!("USDT balance: {balance}");  // in wei (1 USDT = 1e18 wei)

let allowance = client.vault().usdt_allowance(signer).await?;
println!("vault allowance: {allowance}");

You can query any address, not just the signer.

Outcome Tokens

Strike uses ERC-1155 outcome tokens — each market has a YES token ID and a NO token ID. Tokens are minted when batches clear and can be redeemed after market resolution.

Token IDs

Token Balances

Token Approval for Selling

To place SellYes or SellNo orders, the OrderBook must be approved to transfer your outcome tokens:

Redemption

After a market is resolved via Pyth oracle, winning outcome tokens can be redeemed for USDT at LOT_SIZE ($0.01) per lot. Losing tokens are worthless.

Check Balances

Redeem

This calls Redemption.redeem(factoryMarketId, amount) on-chain.

Collateral Model Summary

Each matched lot is fully collateralized at LOT_SIZE ($0.01). Both sides of the orderbook lock USDT — askers do NOT need to hold outcome tokens to sell. See Batch Auctions for details on how collateral flows during clearing.

Operation
Collateral

Bid at tick T

lots × T/100 × LOT_SIZE USDT

Ask at tick T

lots × (100-T)/100 × LOT_SIZE USDT

SellYes

YES tokens custodied by OrderBook

SellNo

NO tokens custodied by OrderBook

Redeem (winner)

1 lot → $0.01 (LOT_SIZE)

Redeem (loser)

worthless

Note: Current markets use internal positions, but ERC-1155 operations are available for future market types.

Last updated