Pre-launch. RC4 code-frozen for external audit (rc4-audit-candidate, aca5fcd). Report pending. Status, updated 2026-10-08
GENESpecimen 001

Documentation · Glossary

Glossary

Uniswap v4 terms as Uniswap defines them, and GENE terms as the RC4 contracts define them.

Two vocabularies appear in these docs. Uniswap v4 terms keep Uniswap's definitions and link to the Uniswap developer documentation. GENE terms are defined by the RC4 contracts at tag rc4-audit-candidate (aca5fcd), cited by file and line.

#Uniswap v4 terms

Term Definition Source
Dynamic fee "A specific type of swap fee paid by swappers that directly accrue to liquidity providers", distinct from protocol fees and hook fees. Whether a pool has one is "determined at pool creation and is immutable". GENE's pool has a static fee Dynamic fees
ERC-6909 claims Tokens left inside the PoolManager can be represented by an ERC-6909 token the PoolManager mints "representing their claim" ERC-6909
Flash accounting "Allows temporary token imbalances during execution, provided balances net to zero by transaction end". Each operation updates an internal net balance (delta), inside unlock and unlockCallback Flash accounting
Hook "External smart contracts that can be attached to individual pools. Every pool can have one hook but a hook can serve an infinite amount of pools" Hooks
Hook fee "Custom fees implemented entirely within a hook contract", separate from swap fees and protocol fees. GENE takes no hook fee Fees
Hook permissions The callbacks a hook implements, encoded in its address: "A hook contract must be deployed to an address whose low bits encode exactly the permissions it implements". Ten call flags plus four return-delta flags Hooks
Liquidity (L), liquidity units Uniswap's glossary defines liquidity as "token capital stored in a Uniswap pool"; its guides measure a position's liquidity in liquidity units (LiquidityAmounts), and StateView getLiquidity returns "the total liquidity currently active". Uniswap has no separate glossary entry for L Glossary; Create a pool; StateView
LP fee The pool's lpFee, "in hundredths of a bip", paid by swappers to liquidity providers. Set in the PoolKey fee field "in pips, i.e. 3000 = 0.30%" Read pool state; Create a pool
PoolId The bytes32 identifier the PoolManager associates with a pool, derived with key.toId() PoolManager
PoolKey The struct that identifies a pool: currency0, currency1 (sorted), fee, tickSpacing and hooks Create a pool
PoolManager "The central contract in v4 responsible for managing all pools within the singleton architecture" Glossary
Position "An instance of liquidity defined by lower and upper ticks and the liquidity amount assigned to that range" Glossary
Protocol fee "A portion of swap fees directed to the protocol rather than to LPs"; for v4 it "can be enabled through governance". It is outside GENE's control Fees
Singleton The v4 design in which "the PoolManager contract now serves as a single entry point for all liquidity pools" PoolManager
StateView The periphery contract for off-chain reads: "use StateView with an RPC for frontends and analytics" StateView
Tick "A boundary between discrete price points" Glossary
Tick spacing "The granularity of the pool"; position ticks "must be a multiple of pool.tickSpacing" Create a pool
Universal Router "An ETH and ERC20 swap router that aggregates trades across Uniswap v2, v3, and v4. It is unowned and non-upgradeable" Universal Router

#GENE terms

Term Definition Source
Active block A touched block whose ETH swap volume reached MIN_BLOCK_VOLUME; it adds to activeBlocks and pathTicks when the next block is first touched GeneHook.sol:739-745; Genome.sol:23
activeBlocks The number of active blocks in an epoch, stored in its EpochRecord GeneHook.sol:77, GeneHook.sol:114
All-time high (athTick) The lowest block-start tick ever seen, that is the highest block-start GENE price. Anchor of ask bands GeneHook.sol:103, GeneHook.sol:770
All-time low (atlTick) The highest block-start tick at which the pool had active liquidity, that is the lowest such GENE price. Seeded at the opening tick; only increases in ticks. Anchor of every protocol buy GeneHook.sol:104, GeneHook.sol:266, GeneHook.sol:771-774
anchorTick The MassAdded field reporting the reference a band was placed against: atlTick for kinds 1 and 4, max(spot, atlTick) for kind 2, min(spot, athTick) for kind 3, the opening tick for kind 0 GeneHook.sol:433, GeneHook.sol:485, GeneHook.sol:501, GeneHook.sol:518, GeneHook.sol:546
Ask band GENE-side Mass placed above the price, ending one GAP beyond min(spot, athTick) (MassAdded kind 3) GeneHook.sol:541-552, GeneHook.sol:788-792
Bid band ETH-side Mass placed at least one GAP below the all-time low, on the grid: METABOLISM bids (kind 1) and the churn tier (kind 4). In every state the tests reach it starts at tick 178,200 or higher and is 1,200 ticks wide GeneHook.sol:479-491, GeneHook.sol:513-524, GeneHook.sol:782-786; GenePermanence.t.sol:101
Block-start tick The pool tick at a block's first touch, which is the price the previous touched block left GeneHook.sol:732-734
Churn tier The previous closed epoch's revenue not funded by net buying (revenue(e-1) - bid(e-1)), placed as a bid band at the all-time low (MassAdded kind 4) GeneHook.sol:509-539
Cooldown The block wait between keeper calls: started by every non-reverting metabolize() and by a full-allotment regenerate() GeneHook.sol:284-286, GeneHook.sol:299-307
Cumulative flow (nc, hwm, lwm) Cumulative net curve GENE since launch, its all-time high, and the lowest level since that high. Only flow that sets a new hwm funds bids; only flow below lwm funds IMMUNITY GeneHook.sol:213-221, GeneHook.sol:840-856
Epoch EPOCH_BLOCKS consecutive blocks counted from the launch block: (block.number - launchBlock) / EPOCH_BLOCKS GeneHook.sol:747; Genome.sol:22
EpochRecord The one-slot permanent record of a closed epoch: revenue, activeBlocks, pathTicks, ethCommitted, closed. Written only for the last touched epoch at the next touch GeneHook.sol:72-81, GeneHook.sol:748-756
ethCommitted / geneCommitted Cumulative ETH principal placed into bid Mass (kinds 1, 2, 4) and GENE principal placed into ask Mass (kind 3). Historical sums, not balances held GeneHook.sol:184-185, GeneHook.sol:624-625
Evidence hash keccak256(abi.encode(g, first, last, EpochRecord[first..last])) over the stored records of gene g's evidence range (for IMMUNITY, the whole observed window); recomputable from storage GeneHook.sol:975-982; GeneLens.sol:133-147
evolve The entry point that folds closed epochs into the gene state machines GeneHook.sol:311-329
Expression A gene reaching EXPRESSED, which is final. Emitted as two GeneTransition events in one call GeneHook.sol:937-947
Gene One of four strict-chain state machines: GENESIS (0), METABOLISM (1), REGENERATION (2), IMMUNITY (3) Genome.sol:57-61; GeneHook.sol:192
Gene states DORMANT (0), OBSERVING (1), EXPRESSIBLE (2, transient), EXPRESSED (3) GeneHook.sol:65-70
Genome The set of compile-time constants in Genome.sol; no function takes one as input Genome.sol:4-10
genomeHash keccak256(Genome.encode()), an immutable of GeneHook GeneHook.sol:164, GeneHook.sol:245-246
IMMUNE PRESSURE DETECTED The only display label for immunityActive() == true. An IMMUNITY placement is shown only from a mined MassAdded event with kind 2 GeneHook.sol:138, GeneHook.sol:987-992
immunityActive() A view: IMMUNITY is EXPRESSED, the last IMM_CONFIRM processed epochs were deployment-stressed, and evolution is caught up. A signal, not a placement GeneHook.sol:802-805, GeneHook.sol:987-992
Launcher The address fixed in the constructor that may call launch() once; no function checks the caller after launch GeneHook.sol:33, GeneHook.sol:163, GeneHook.sol:252-255
Mass kind The MassAdded.kind code: 0 genesis, 1 METABOLISM bid, 2 IMMUNITY bid, 3 ask, 4 churn-tier bid GeneHook.sol:138
metabolize The entry point, open to anyone once METABOLISM is expressed and the cooldown has passed, that harvests LP fees into reserves and places reserves as Permanent Mass within per-epoch budgets and caps GeneHook.sol:276-291, GeneHook.sol:479-552, GeneHook.sol:655-660
Net flow (netGeneMicro) Signed GENE leaving the curve in an epoch, in 1e12-wei units: GENE out on buys, GENE in net of the LP fee on sells. Positive means net buying GeneHook.sol:113, GeneHook.sol:378-383
Net-flow budget ETH created when an epoch closes: the LP fee rate applied to newly funded net GENE, valued at pLow. bid from net buying, imm from net selling; read during the next epoch only GeneHook.sol:199-204, GeneHook.sol:834-873
pathTicks Sum over an epoch's active blocks of each block's start-to-start tick move, clamped at PATH_CLAMP GeneHook.sol:78, GeneHook.sol:740-744; Genome.sol:24
Permanent Mass Every liquidity position GeneHook owns in the canonical pool. The liquidity units cannot be withdrawn: the only modifyLiquidity call adds a non-negative amount. Mass is measured in liquidity units; its ETH/GENE mix moves with price GeneHook.sol:28-29, GeneHook.sol:594-608
PlacementSkipped A placement whose liquidity would exceed v4's per-tick ceiling; nothing is committed or consumed GeneHook.sol:142-144, GeneHook.sol:619-621
pLow An epoch's cheapest price (highest tick) over its block starts and its closing tick, used to value its net-flow budget GeneHook.sol:203, GeneHook.sol:758-761
Pressure A processed closed epoch that meets a gene's predicate GeneHook.sol:879-934
Reachable depth ETH (down) or GENE (up) that protocol positions would provide for a price move of 5%, 10% or 25% from spot, computed by GeneLens.report from current positions GeneLens.sol:38-39, GeneLens.sol:209-259
regenerate The entry point for REGENERATION's bounded buyback and burn. It buys only while the price is no more than about 1% above the all-time-low price; otherwise the call spends nothing GeneHook.sol:293-309, GeneHook.sol:574-577
Reserves ethReserve, regenReserve, geneReserve: harvested LP fees not yet placed, held as the hook's ERC-6909 claims GeneHook.sol:181-183, GeneHook.sol:707-725
Revenue The EpochRecord.revenue field: 1% of the ETH buyers paid in during the epoch (the LP fee rate applied to buy-side ETH). Evidence for gene predicates and the churn tier. It is not the fees collected GeneHook.sol:76, GeneHook.sol:385-387
Stress (IMMUNITY) Expression stress: revenue at least IMM_REVENUE and pathTicks at least IMM_PATH_TICKS. Deployment stress: revenue at least IMM_DEPLOY_REVENUE with the same pathTicks threshold, recorded in immuneStressBits GeneHook.sol:175-177, GeneHook.sol:881-883
Sources (24)
  • src/Genome.sol:4-10
  • src/Genome.sol:22-24
  • src/Genome.sol:57-61
  • src/GeneHook.sol:25-38
  • src/GeneHook.sol:65-117
  • src/GeneHook.sol:138-141
  • src/GeneHook.sol:161-166
  • src/GeneHook.sol:172-221
  • src/GeneHook.sol:245-246
  • src/GeneHook.sol:252-316
  • src/GeneHook.sol:378-387
  • src/GeneHook.sol:493-552
  • src/GeneHook.sol:594-627
  • src/GeneHook.sol:574-577
  • src/GeneHook.sol:655-660
  • src/GeneHook.sol:707-718
  • src/GeneHook.sol:782-786
  • test/invariant/GenePermanence.t.sol:101
  • src/GeneHook.sol:734-780
  • src/GeneHook.sol:802-873
  • src/GeneHook.sol:879-947
  • src/GeneHook.sol:975-992
  • src/GeneLens.sol:36-43
  • src/GeneLens.sol:209-259

Paths are relative to the GENE repository at tag rc4-audit-candidate (aca5fcd).