Answer Tokens
Every answer in every market has its own ERC-20 token deployed by KangarooTokenFactory through the router. Each answer token starts with a supply of 9,000 tokens (18 decimals) seeded into its AMM pair alongside the virtual KUSD allocation.
Token transfers are gated: the KangarooSentimentToken contract only allows transfers routed through the router, KSwap, or the AMM pair itself. This prevents direct pair manipulation and ensures all volume goes through backed-exit accounting.
- Token supply per answer: 9,000 (hardcoded at protocol level, governable by owner).
- Decimals: 18.
- Transfer path: router → AMM pair (buy), KSwap → AMM pair (sell).
- No free transfer to arbitrary addresses while controlsEnabled = true.
Reading Sentiment Prices
The displayed price for answer i is the AMM marginal price: p_i = x_i / y_i, where x_i is the KUSD reserve and y_i is the answer-token reserve of that pool.
The sentiment share shown in the UI is the normalized version: s_i = p_i / (p_1 + p_2 + ... + p_n). When a market has two answers at equal depth and equal trading activity, both show ~50%. As one answer attracts more KUSD, its price rises and its sentiment share increases.
Sentiment share is not a probability estimate. It reflects demand pressure, not calibrated odds. High conviction on one answer just means more KUSD has flowed into it — not that reality will match.
Buy Mechanics
Buying sends KUSD into the chosen answer pool's AMM pair. The protocol charges no creator fee, no protocol fee, and no platform fee on buys. The V2-style AMM retains a 0.3% pool fee inside the same answer pool; that real AMM value remains in the pool and is included in settlement for holders who stay until close.
- Platform buy fee: 0%. No creator or protocol fee is charged on buys.
- AMM holder fee: 0.3% is retained inside the answer pool and can become part of redeemable backing at close.
- Maximum price impact per buy: 25% (maxBuyPriceImpactBps = 2500). Trades exceeding this are reverted.
- Maximum buy size relative to virtual seed: 50% (maxBuyKusdBpsOfVirtualSeed = 5000). A single buy cannot push more than 50% of the initial KUSD seed into a pool.
- Optional per-tx and per-position limits apply on some markets.
- Trade cooldown: configurable per market; zero means no cooldown.
Sell Mechanics
Selling routes through KSwap, the controlled exit contract. KSwap fetches the pool's backedAvailable (real KUSD from user buys minus previous sell payouts) and ensures the gross KUSD output does not exceed that backed pool.
If the AMM quote exceeds the available backed KUSD and you set allowPartial = true, KSwap executes the largest token input that fits within the backed pool, returns the rest of your tokens to you, and marks the transaction as partial.
- Maximum price impact per sell: 25% (maxSellPriceImpactBps = 2500).
- Platform buy fee is 0%; creator fees apply only on sells.
- Protocol sell fee: 0% of gross KUSD output (protocolSellFeeBps = 0).
- Creator sell fee: 0–0.5% of gross KUSD output (creatorFeeBps, set at market creation).
- Net KUSD = gross − creator fee.
- Partial sells are tracked on-chain via partialSellCount.
Trade Cooldown
To limit rapid successive trades from single accounts, the router tracks lastTradeAt per market per address. A cooldown of N seconds prevents another trade on the same market until N seconds have elapsed. Most markets have cooldown = 0 at launch.
