Skip to content

Hood lifecycle and recovery

Every canonical Hood market is registered by CandleCurveFactory in CandleCurveRegistry. A curve has four lifecycle states.

ValueStateCurve buyCurve sellOther action
0TradingAvailableAvailableContinue trading toward graduation
1GraduatedClosedClosedMigration can be executed
2MigratedClosedClosedTrade on the selected Uniswap venue
3RecoveryClosedClosedBurn curve tokens to claim quote reserve

The curve accepts buys and sells until its net quote reserve reaches the migration threshold. An Open curve is permissionless. An Exclusive curve checks the configured Believer NFT.

Graduation closes both curve buys and curve sells immediately. The error used by the contracts for an attempted trade is named PoolMigrated, even when the market is only Graduated. Integrations should use the lifecycle value and error selector rather than interpreting the error name literally.

This is a temporary no-trade state. The graduation keeper monitors canonical curves and attempts migration.

After migration, trading moves to the selected venue:

  • v3: the canonical Uniswap v3 pool, with fee tier 3000 and tick spacing 60.
  • v4: the complete PoolKey containing currencies, fee, tick spacing, and the Candle launch hook.

The v3 pool is normally pre-created at launch. The v4 pool is initialized atomically during migration and does not exist before that transaction.

Recovery is the backstop if migration cannot complete.

  • Recovery cannot be entered during the first 7 days after graduation.
  • From day 7 until day 30, only the creator may enter Recovery.
  • After 30 days, anyone may enter Recovery.
  • Recovery claims remain available indefinitely.
  • A claimant burns curve tokens and receives a pro-rata share of the recoverable quote reserve.
  • After all recovery inventory has been resolved, remaining dust may be swept according to the contract rules.

Recovery is not a swap. Terminals should display a distinct claim action and must not present a synthetic sell quote.

Read lifecycle() before constructing a trade and again when handling a failed simulation. Do not infer state solely from whether a Uniswap pool address exists: a v3 pool can exist before graduation, while a v4 pool does not.