Skip to main content

Wallet approvals and transactions

ERC-20 approvals allow a specific contract to transfer a specific token for an authorized action. RuneMarket uses different spenders for different workflows. Check the token, spender, and amount shown by the interface before signing.

Approval map

ActionToken approvedSpender
Mint YES and NOUSDC payment tokenThe individual market contract
Burn a YES/NO pairYES and NOThe individual market contract
Buy YES or NO nowUSDC payment tokenPermit2, then the Universal Router
Sell YES nowYESPermit2, then the Universal Router
Sell NO nowNOPermit2, then the Universal Router
Create a buy limit orderUSDC payment tokenPermit2, then the Order Manager
Create a sell limit orderSelected YES or NO tokenPermit2, then the Order Manager
Propose, dispute, or escalate a resultUSDC payment tokenOracle Bonds
Redeem a YES/NO winnerWinning outcome tokenThe individual market contract
Withdraw from a canceled marketEach nonzero YES and NO balanceThe individual market contract

Permit2 approvals have two layers: the token first authorizes Permit2, and the Permit2 allowance then names the final spender. An approval for the Universal Router does not authorize the Order Manager, and vice versa.

Before submission

RuneMarket should refresh current state and simulate each write immediately before requesting the wallet signature. Depending on the action, this includes checking:

  • wallet connection and Robinhood Chain network selection;
  • current market and pool status;
  • balances and allowances;
  • deadlines and challenge windows;
  • pool initialization, liquidity, pause state, and whitelist state;
  • quote freshness and minimum received;
  • order ownership or cancellation eligibility; and
  • the expected contract address and arguments.

Transaction states

A transaction can move through several visible states:

  1. Awaiting signature — the wallet has not yet approved or rejected the request.
  2. Pending — the transaction was submitted but has not been confirmed.
  3. Confirmed — a receipt was mined and the expected RuneMarket events were found.
  4. Reverted — the chain rejected execution.
  5. Rejected — the user declined the wallet request.

After confirmation, RuneMarket refreshes affected balances, allowances, market state, quotes, and indexed views. Indexed history may update later than the transaction receipt, so a confirmed action can briefly coexist with stale activity or order-book data.

Robinhood Chain gas

RuneMarket USDC payment and outcome tokens do not pay network fees. Wallets need ETH on Robinhood Chain for approvals, trades, orders, oracle actions, and redemption transactions.