Documentation

$FWA

$FWA bootstraps both sides of the market, then ties protocol revenue to buybacks routed back to depositors and purchasers.

The pool is a two-sided market: it needs depositors to stock positions and purchasers to create demand, and neither side is useful without the other. $FWA is a fixed-supply reward token whose whole job is to solve that cold start: pay both sides for showing up early, then give the protocol a lasting value loop. It is strictly additive and can never put the protocol at risk: it never touches backing, never changes selection weights, and sits entirely outside the funded-position path1. Remove $FWA and the NFT pool behaves exactly the same.

Fixed supply, two phases

  • 50% seeds the FWA/ETH market (a Uniswap pool), where $FWA trades.
  • 50% is a rewards bucket paid out over a 25-day launch: 25% to depositors and 25% to purchasers, streamed at 1% of supply per day2.

Three ways to earn $FWA

  • The dynamic surcharge split. The surcharge flexes with how quiet the pool is. A cold pool sends the whole surcharge to buy $FWA for the next purchaser (a lure to wake activity up); a busy pool sends it to depositors as usual; in between, it slides smoothly3.
  • Depositor rewards, by √value. Re-adds the size incentive the equal fee-split removes, but paid in $FWA so acquisition prices stay untouched. Pauses when the pool is empty.
  • Purchaser rewards, daily. Each day's pot is split among that day's successful acquisitions; refunded acquisitions don't count.

The market & post launch

The market charges a flat 1% on buys and sells. Sells are always open, but outside buys are gated until the team opens the market. The goal is to put $FWA in the hands of the people using the protocol, the depositors and purchasers who earn it, rather than traders speculating on it, so external buys stay off at launch. With participation as the only way in, the early supply is earned rather than bought, the starting price reflects real protocol activity rather than snipers, and there's no day-25 unlock cliff. Once rewards end, a configurable share of protocol fees funds a buyback4 that buys $FWA gradually (to avoid being front-run) and routes it straight back to the two sides that keep the protocol alive: a slice to depositors (through the same √value rewards accumulator), a slice to purchasers (into the current day's pot), and a slice to burn, defaulting to 40% / 40% / 20%. The buyback is permissionless (anyone can poke it for a small caller bounty) and rate-limited. More activity means more fees, more $FWA bought back and either burned for a smaller supply or handed back to active depositors and purchasers.

Technical breakdownonchain

  1. 1.
    Fixed total supply, split 50/50 at deploy: half seeds a single-sided Uniswap v4 position (via launch() in FWAToken.sol / FWATokenHook.sol), half is the emissions bucket. Token accounting is separate from position escrow.
  2. 2.
    EMISSION_DAYS = 25 at 1%/day per bucket. The depositor half streams by √value (accTokenPerSqrt, depositorRatePerSec); the purchaser half is daily pots split pro-rata over that day's successful acquisitions.
  3. 3.
    The edge→$FWA share interpolates linearly between hotGap = 60s (all to depositors) and coldGap = 3600s (all to the $FWA buy), overridable via forcedTokenShareBps. The buy is pull-based (claimAccruedTokens_buyTokens via a v4 unlock) and happens outside the VRF callback, keeping the callback gas-bounded.
  4. 4.
    Pool fee FEE_BIPS = 100 (1%) on buys and sells (LP fee 0). Sells always open; externalBuysEnabled = false until the protocol operator opens it (the protocol contract may buy anytime for edge-buys). The TWAP buyback is permissionless (small caller bounty) and rate-limited; the $FWA it buys is split by owner-set basis points across the depositor √value accumulator (accTokenPerSqrt), the current purchaser daily pot, and burn, defaulting to 40% / 40% / 20% (the three shares summing to 100%). A slice with no active recipient (e.g. an empty pool) is burned rather than stranded.