PerpLandperpland

audit status

PerpLand is UNAUDITED. The code ships with 12 named defenses and 66 passing tests, but has not undergone a formal third- party audit. Do not deploy to mainnet without one.

liquidity lock

100% of PERP supply is locked at deploy by two complementary mechanisms:

  • 70% (700,000 PERP) — locked by code. Seeded into 300 bonding-curve bands inside the hook. The hook contract has no admin function that can withdraw band liquidity. Verify for yourself by reading the source on Etherscan: there is no removeBandLP, no lpLockUntil, no escape hatch. The 700k is locked by absence-of-code, not by a promise.
  • 30% (300,000 PERP + ETH) — locked at UNCX. Paired with ETH and locked at UNCX's Uniswap v4 locker. The lock is public and on-chain; the proof link below opens the UNCX page where anyone can verify the lock duration and amount without trusting us.
liquidity lock
pending

100% of PERP supply is locked by two complementary mechanisms.

700k PERPlocked by code
hook contract has no withdraw function · source verified
300k PERP + ETHlocked at UNCX
365-day lock · link goes live after deploy
total supply: 1M PERP · 70% locked by code · 30% locked at UNCX

what's done

  • 12 defenses (D1–D11 + M-01, M-02) implemented and tested individually.
  • Two attack-pattern tests: the original same-block flash-loan and a multi-block sustained pump. Both fail to profit.
  • Two invariant tests + three fuzz tests across 192 random scenarios.
  • Formal invariants document and threat model.
  • Pre-audit checklist: ready for engagement.

what's not done

  • Real audit. Engage a firm: Spearbit, Trail of Bits, OpenZeppelin, Sigma Prime, Cantina. Budget $30k–$80k, 4–6 weeks.
  • Slither / Mythril / Halmos. Static and symbolic analysis should pass before audit, not during.
  • Production parameter tuning. Constants like MAX_CURVE_ADVANCE_PER_BLOCK = 5 ETH are placeholders. Real values depend on launch supply and risk appetite.
  • LP fee on direct swaps. Cold-pool take() reverts; needs ERC-6909 claim-token pattern.
  • CREATE2 deploy script. The hook constructor calls Hooks.validateHookPermissions(address(this)) — production deploy must use a salt mined to a flag-bearing address (HookMiner).
  • Frontend slippage default. minHoldingOut = 0 is allowed at the contract level — frontend must set a sensible default.

bug bounty

Bug bounty program is not yet live. We'll launch one once the audit is in. In the interim, security issues can be reported to a dedicated channel (TBD); please don't disclose publicly until we confirm + fix.

links

  • github — coming soon
  • contract address — testnet only, see app for current deploy
  • discord — coming soon