locked parameters
everything that defines the protocol is a public constant in the bytecode. it cannot be changed. these are the numbers.
every meaningful number in sat0 is a public constant embedded in the bytecode. there are no setters, no governance, no oracle. the values below are what the contracts will use forever.
curve constants
K_SUPPLY- 21,000,000 sato— the asymptotic supply ceiling. the forward curve approaches it but never crosses; in practice fixed-point arithmetic saturates the last fraction of a token long before it would otherwise be minted.
S- 500 eth— the curve scale factor. the amount of cumulative eth at which the curve has minted roughly 63% of
K_SUPPLY(one minus 1/e). a largerSmeans a slower, deeper curve.
guardrails on buys
MAX_BUY_WEI- 5 eth— the maximum eth a single swap may spend on a buy. anything larger reverts with
BuyTooLarge. exists to slow large early actors, not to prevent them — they can just buy in a loop, but they pay extra gas and give other participants intervening blocks. COOLDOWN_BLOCKS- 1 block— minimum gap between a buy and a sell from the same address. an address that buys at block N cannot sell before block N+1. violations revert with
CooldownActive. prevents same-block round-tripping for arb against entropy.
fee model
POOL_FEE- 3000 (= 0.30%) in uniswap v4 fee units. the fee is charged on every swap, in both directions, and not added to a liquidity-provider position (there are no LPs). it stays inside
SatoHookin a counter namedfeesAccrued. nothing in the contract withdraws it.
entropy and exhaustion
ENTROPY_BLOCKS- 100 blocks— the duration of the entropy window, measured from
GENESIS_BLOCK. during this window each buy receives a multiplier in the range[0.90, 1.10]of the fair-curve amount. see entropy window. EXHAUSTION_THRESHOLD- 99 / 100— the ratio of fair-curve supply to
K_SUPPLYat which the hook flips itsselfDeprecatedflag. once flipped, all subsequent buys revert withSelfDeprecatedNoBuys. sells remain enabled forever.
genesis fingerprints
GENESIS_BLOCK- the block number at deployment, captured into immutable storage. used to anchor the entropy window and as a tamper-evident timestamp.
GENESIS_HASH- the blockhash of
GENESIS_BLOCK − 1at deployment time. immutable. acts as a fingerprint that ties this deployment to a specific point in chain history.
roles and addresses
POOL_MANAGER- the address of the uniswap v4 PoolManager. immutable on the hook. only this address may call the hook's entrypoints.
SATO_TOKEN- the address of the deployed
SatoToken. immutable on the hook. DEPLOYER- on
SatoToken, the only address allowed to callsetMinter— and that call may happen at most once. after it, there is no privileged role on the token at all. RESTRICTIONS_FORBIDDENtrue. a self-evident assertion in the bytecode: this contract does not implement blocklist, allowlist, pause, or freeze primitives. checking it on-chain is a quick proof that the deployed token is the same one described here.
this page describes deployed code. nothing here is a promise — it is a description of what the contract does and what it doesn't.
