lifecycle
genesis, bootstrap, mature, exhaustion, dormancy. the protocol has phases, and they only go forward.
the protocol has five phases. they are not chosen, scheduled, or gated by any actor — they unfold as a function of cumulative eth and block number. once a phase ends it never returns.
1. genesis
a single block in which three transactions land: deploy SatoToken, deploy SatoHook, setMinter on the token. immutables are written: GENESIS_BLOCK, GENESIS_HASH, and the manifesto are captured into bytecode and can never be altered.
a fourth transaction initializes the v4 pool with the canonical key (eth, sato, 0.3%, hook). poolInitialized flips to true. no other pool can attach to this hook from now on.
until the first buy, ethCum = 0, totalMintedFair = 0, feesAccrued = 0, selfDeprecated = false.
2. bootstrap (blocks 1 to 100)
the entropy window is active. buys are still subject to all guardrails:
- max buy
- 5 eth per swap. larger reverts with
BuyTooLarge. - cooldown
- 1 block between a buyer's last buy and their next sell.
- fee
- 0.3% on both directions, skimmed into
feesAccrued. - entropy
- each buy's mint amount is multiplied by a per-swap random in
[0.90, 1.10]. see the entropy window.
the same-block sell guard makes it impossible to round-trip an entropy bonus inside the window it was minted in. sells inside bootstrap are legal but unlikely; most participants will be accumulating.
3. mature (blocks 101 onward)
entropy is gone. mints land exactly on the curve. guardrails remain in place: 5 eth max, 1-block cooldown, 0.3% fee. this is the steady-state regime in which the protocol can operate for as long as the chain runs and people are interested.
a second pool may be deployed in this phase — a standard uniswap v3 or v4 pool without the hook — for secondary trading. the bonding pool keeps offering primary minting; the secondary pool offers price discovery and order-book-like depth. the two coexist because they speak the same erc-20.
4. exhausted
the moment totalMintedFair × 100 ≥ K × 99, the hook flips selfDeprecated to true. this is a one-way switch. every subsequent buy reverts with SelfDeprecatedNoBuys. there is no way to turn it off and no one with the power to.
sells remain fully enabled. the curve continues to operate as an eth-redemption oracle: anyone holding sato can burn at the inverse curve price.
5. dormant
no fixed entry point — this is the asymptotic regime where most holders have either exited or are content to hold. trading activity decays. fees stop accruing. the contracts continue to exist exactly as written. there is no countdown, no expiration, no retirement. if interest returns, the curve will price sells as it always has.
read-only state at each phase
- genesis
poolInitialized = false → true;ethCum = 0;selfDeprecated = false.- bootstrap
block.number < GENESIS_BLOCK + 100; entropy applies;totalSupplymay exceedtotalMintedFair.- mature
block.number ≥ GENESIS_BLOCK + 100;totalMintedFair / K < 99/100; entropy off.- exhausted
selfDeprecated = true; buys revert; sells work.- dormant
- no on-chain marker; observable only through the fact that trades have stopped happening.
this page describes deployed code. nothing here is a promise — it is a description of what the contract does and what it doesn't.
