Schema

The protocol’s hardcoded constants, program accounts, and read interface.

Constants

TOTAL SUPPLY21,000,000 × 10^9
MINT DECIMALS9
MINT AUTHORITYRevoked
BIN STEP25 bps
MAX BIN SPAN± 1,400 bins
RECOMPUTE WINDOW± 64 bins
STAGE COUNT7
COEFFICIENT PRECISION9 decimals
COEFFICIENT MAX1.000 (1e9 fixed point)

All constants are compiled into the program and fixed at initialization. None of them can be changed by any caller, including the deployer.

Program Capabilities

TRANSFER HOOK
INITIALIZE BINDING
COEFFICIENT RECOMPUTE
DEPOSIT GATE
WITHDRAWAL ACCOUNTING
STAGE EVENTS
MINT AUTHORITY
FREEZE AUTHORITY
TRANSFER FEE
PERMANENT DELEGATE
CONFIDENTIAL TRANSFER
CLOSE AUTHORITY
METADATA POINTER
PROGRAM UPGRADE

Filled squares are enabled. Mint authority, freeze authority, transfer fees, and permanent delegation are all disabled at initialization and cannot be re‑enabled. The program’s upgrade authority is burned after deployment, so the capability set above is final.

Accounts

CoefficientState { value: uint256 }the coefficient store. holds the current concentration value in nine‑decimal fixed point. the account the egg’s stage is derived from.
CoefficientState { transfer_count: uint256 }cumulative transfers of the mint observed by the hook across the pool’s lifetime. incremented in execute, never decremented.
PoolBinding { pool: address, bin_step: uint16 }the binding record, seeded by mint and pool. written once at initialization and asserted by every later instruction.
PoolBinding { active_bin: int24 }the last active bin index observed after a settled swap, cached so clients can read stage geometry in a single account fetch.
CoefficientState { allowable_bin_span: uint256 }the current maximum bin span for new deposits. recomputed from MAX_BIN_SPAN × (1 − coefficient) each time the coefficient changes.
HookPermissionsthe account list the token contract expands into every transfer of the mint. fixed at initialization; the hook cannot request accounts it did not declare.

Events

event CoefficientUpdated { old_value: uint256, new_value: uint256, active_bin: int24 }emitted after a settled swap whenever the coefficient changes. consumed by off‑chain indexers to reconstruct historical state.
event StageTransition { from_stage: uint8, to_stage: uint8, coefficient: uint256 }emitted whenever a recompute pushes the coefficient across a stage threshold. the archive page indexes these transitions.
event DepositRejected { provider: address, lower_bin: int24, upper_bin: int24 }emitted by the deposit gate before it returns an error. the transaction unwinds, so the log is the only record that the attempt was made.
event BinWalk { active_bin: int24, bins_walked: uint256, compute_units: uint256 }emitted on every recompute with diagnostics about the bin walk. useful for rendering and for compute‑budget analysis.