How Kitty works

A room is a group chat. A pledge round is a small contract that holds the room's pot. The admin can only spend that pot by buying the agreed token, and everyone ends up with the same average price.

A round, start to finish

  1. The admin opens a round and fixes the rules: what may be bought, the step schedule, the guards, the deadlines. The rules are written into the round contract when it is deployed and can't be changed afterwards.
  2. Members pledge USDC. Until the first buy, anyone can withdraw part or all of their pledge, at any time and for any reason.
  3. The admin names the token (unless the address was fixed at creation). This starts the review window. While it runs nobody can buy, and members can check the contract, withdraw, or veto.
  4. The admin buys in steps. Each step spends its fixed share of the pot through the allowlisted DEX, path USDC โ†’ token, straight into the round contract. The first buy closes pledging. After that, pledges are locked until the round ends.
  5. The round finalizes after the last step, when the admin stops early, after the buy deadline, or after a 24-hour stall past the cooldown. Every member then claims bought ร— myPledge / pot tokens plus unspent ร— myPledge / pot USDC. Everyone gets the same ratio, so everyone pays the same average price.

Guards

Each round mixes and matches these. The factory refuses unsafe combinations.

GuardWhat it doesWhy
๐Ÿ”ค Ticker lockThe token's on-chain symbol() must equal the plaintext ticker, e.g. PEPE. Checked when the target is proposed and at the first buy.Stops "oops, wrong coin".
โœ… Verified listThe token must be on the curated registry, and must have been listed before the round was created. With the ticker lock on, the registry's ticker must match too.Anyone can deploy a fake "PEPE". The list pins the real contract, and a later listing can't sneak a new target into a live round.
๐ŸŽฏ Exact addressThe token is fixed when the round is created. It can never be re-proposed.The strictest mode.
โฑ Review windowNo buy until this long after the target is named. Required (at least 10 minutes) whenever the address isn't fixed.Gives members time to look before money moves.
โœ‹ VetoIf members holding X% of the pot veto the target, the round cancels and everyone is refunded. Required whenever the address isn't fixed. A veto only counts pledges made in an earlier block, so a flash loan can't cast one.The group, not the admin, has the last word on an open target.
๐Ÿ’ฒ Max priceRequired. A step reverts if its average fill is above this many USDC per whole token.Stops anyone, the admin included, from pumping the pool right before the group buys.
โ†” Max slippageThe admin's minimum output must be within this % of the live quote.Stops the admin accepting a terrible fill.
๐Ÿ’ง Min liquidityBlocks buys into pools holding less USDC than this.Thin pools are where rugs live.
CapsMin raise, max raise, per-wallet cap.The round fails cleanly if not enough is raised.

Who can do what

RoleCanCan't
Room adminOpen rounds, name the target, pick when each step runs and its minimum output (within the slippage + max price), stop early, cancel before the first buy.Withdraw the pot, send tokens anywhere, change the rules, change the DEX, buy above max price, skip the review window.
MembersPledge, withdraw before the first buy, veto, claim, close a round after a deadline or a stall.Withdraw after the first buy (the money is committed to the plan).
Factory ownerAllowlist DEX routers and base tokens for new rounds.Touch any existing round.
Registry curatorList or delist tokens. A delisting before a round's first buy blocks that buy, and members can still withdraw.Open a new target in an existing round, or freeze a round that is already buying.

Known limits

Contracts

Audit

Audit of 2026-11-08 on commit 4c4f991. Findings were fixed in 393b574. A separate reviewer then tried to break those fixes and found three more gaps, which were fixed in 80f5a4a. Each Medium+ finding has a proof-of-concept test that now asserts the attack fails. Full report ยท Fix tracker ยท System map
IDSeverityFindingStatus
KR-1HighSlippage floor and min-liquidity were read in the same tx, so an admin could pump โ†’ buy โ†’ dump.Fixed: max price is required
KR-2HighA zero review window let an admin propose and buy a same-ticker fake in one block.Fixed: open targets need โ‰ฅ10 min review + veto
KR-3MediumFlash-loan pledge โ†’ veto โ†’ refund could cancel any round for free.Fixed: vetoes need a pledge from an earlier block
REG-1MediumThe registry curator could freeze running rounds or add new targets to them.Fixed: listing snapshot at round creation; checked at proposal + first buy only
KR-4LowAn admin stalling after step 1 locked funds until the deadline.Fixed: anyone can close after a 24h stall
KR-5LowRe-proposing the same token reset vetoes; a veto passed via withdrawals wasn't enforced right away.Fixed
KR-6LowA token with a mutable symbol could halt a ticker round mid-buy.Fixed
INT-1LowThe testnet deployer was the public dev key.Fixed: private deployer key
FR-1MediumFix review: a pledge held for one block could still veto, and withdrawing could tip a veto.Fixed: veto weight is a snapshot from when the target was named
FR-2, FR-3LowFix review: a 100% veto threshold; registry re-listing and same-second listing.Fixed: veto capped at 70%; no re-listing; strict snapshot
KR-7โ€ฆ10, FAC-1, DEX-1InfoFirst buy closes pledging; dust; fee-on-transfer tokens; per-address cap; single-key factory owner; test DEX scope.Documented above