Glossary
Terms used across the TIDE documentation, defined consistently with the contracts and the dapp. On-chain identifiers are shown in code. For deeper treatment, follow the cross-links.
accFeesPerShare
Section titled “accFeesPerShare”Two monotonic accumulators on the hook — accFeesPerShareETH and accFeesPerShareTIDE — tracking cumulative fees per live share, scaled by ACC_SCALE = 1e12. A share’s claimable amount is (acc − feeDebt) / ACC_SCALE. See TideHook.
ACC_SCALE
Section titled “ACC_SCALE”Fixed-point scaling constant (1e12) applied to the fee accumulators to preserve precision in integer division.
beforeSwap
Section titled “beforeSwap”The Uniswap v4 hook callback where TIDE enforces its fee. On every swap, beforeSwap returns currentFee() OR-ed with LPFeeLibrary.OVERRIDE_FEE_FLAG, so the degressive launch fee is applied at the PoolManager — router-agnostic and trustless. The protocol’s own buyback (sender == address(this)) is fee-exempt.
buyback
Section titled “buyback”See claim / buyback and Treasury / buyback-burn. TIDE has two distinct buybacks: the in-pool claim buyback (ETH owed → TIDE, on every claim) and the Treasury buyback-burn (supply reduction).
A holder action (claim, claimMany, or processOwed) that converts accrued fees into vested TIDE. claim/claimMany always credit the current NFT owner, never the caller, and only process the caller’s own owed balance. See Claim = in-pool buyback.
claim / buyback
Section titled “claim / buyback”On claim, the ETH leg of your fees is not paid out as ETH — the protocol buys TIDE in-pool with it (_buybackEthToTide) and vests the result alongside the TIDE leg. Every claim therefore creates buy pressure. The buyback’s minOut carries a 10% slippage floor (MAX_BUYBACK_SLIPPAGE_BPS = 1000).
The token standard pattern behind TIDE: a single underlying balance presents both an ERC-20 face (TIDE, on the hook) and an ERC-721 face (Tide-LP, on the mirror). Crossing each whole UNIT mints or burns one NFT. See Hold = LP (DN404).
dynamic fee
Section titled “dynamic fee”The pool is created with fee: LPFeeLibrary.DYNAMIC_FEE_FLAG, which lets the hook override the fee per swap. TIDE uses this to run the 25% → 10% → 5% degressive schedule. See Degressive launch fee.
feeDebt
Section titled “feeDebt”A per-NFT checkpoint (packed ETH + TIDE) of the accFeesPerShare accumulators at the moment the NFT was last harvested, minted, or moved. A share’s pending fees are the difference between the current accumulator and its feeDebt.
forfeited vesting
Section titled “forfeited vesting”The not-yet-vested TIDE you lose when you sell or transfer an NFT before vesting completes. The vested portion is kept; the unvested remainder is forfeited into the lottery. See The forfeited-vesting lottery.
guardian
Section titled “guardian”The single Treasury role (set to the owner at construction). The guardian can only trigger executeBuyback() (burn all Treasury TIDE) or transferGuardian(to). There is no withdrawal path — the guardian holds the button, not the cash. See Treasury.
TideHook — the core contract. It is the TIDE ERC-20, owns the single v4 liquidity position, enforces the fee, accounts fees per share, and runs vesting and the lottery. All canonical state lives here. See TideHook.
lottery / forfeited vesting
Section titled “lottery / forfeited vesting”When an exit forfeits unvested TIDE, it is raffled to a randomly drawn other holder (probing up to LOTTERY_PROBES = 128 token ids), who has a window to activatePrize() and re-vest it. The seller and counterparty are excluded from that draw only. If no eligible winner exists it is redistributed pro-rata to all shares; unclaimed prizes expire to the Treasury. See The forfeited-vesting lottery.
mirror
Section titled “mirror”TideMirror — a stateless companion contract presenting the canonical ERC-721 surface (Tide-LP). It holds no balances; every mutating call forwards to the hook’s onlyMirror handleNFT* functions, and ERC-721 events are emitted from the mirror’s address. Reach it via hook.mirror(). See TideMirror.
A holder’s raw, not-yet-converted fees — pendingETH[user] and pendingTIDE[user], read via owedOf(user). Owed accrues from harvests and from involuntary capture on NFT moves/burns; processOwed() converts it (ETH → TIDE buyback) and vests it.
The fee unit used by Uniswap v4 (hundredths of a basis point; 1,000,000 pips = 100%). TIDE’s tiers are FEE_TIER_1 = 250_000 (25%), FEE_TIER_2 = 100_000 (10%), and FEE_FINAL = 50_000 (5%).
Calling pokeFees() — a permissionless, idempotent operation that pulls accrued fees out of the v4 position and rolls them into the accFeesPerShare accumulators. Anyone can poke; a griefer only wastes their own gas. The dapp surfaces it as Sync fees.
prevrandao
Section titled “prevrandao”The block randomness source (block.prevrandao) seeding the lottery’s winner draw. It is validator-influenceable at the margin for large forfeits — an accepted, openly-disclosed weakness for a low-value ludic mechanic. See Known limitations.
protocol-owned liquidity
Section titled “protocol-owned liquidity”The design where the hook itself owns the entire liquidity position rather than users. The full fixed supply (10,000 TIDE) is seeded into one pool owned by the protocol; holders deposit nothing, manage no range, and face no liquidation. See What is TIDE?.
The one-shot onlyOwner seed(sqrtPriceX96, tickLower, tickUpper, liquidity) call that initializes the pool and mints the entire SUPPLY into one position. It sets launchTime and reverts AlreadySeeded on any second call — the owner’s only privileged power, and it confers no custody over funds. See How it works.
One whole Tide-LP NFT — the unit of fee accounting, equal to 1/10000 of the pool. totalShares (count of live, minted-not-burned NFTs) is the fee-distribution denominator. Fractional TIDE below one UNIT earns nothing.
single-sided liquidity
Section titled “single-sided liquidity”The seeding configuration: the position is funded with all TIDE and zero ETH, so the launch is fair (buys walk the price up the range). The price is set solely by sqrtPriceX96 at seed; there is no oracle and the position can never be re-ranged. See Known limitations.
Tide-LP
Section titled “Tide-LP”The ERC-721 collection (name "Tide-LP", symbol "TIDE-LP") living on the mirror. Each Tide-LP NFT is simultaneously a share of pool fees and a fully on-chain generative artwork (TideArt). See TideMirror and TideArt.
Treasury / buyback-burn
Section titled “Treasury / buyback-burn”Treasury — a no-rug sink for expired lottery prizes. Its only outward action is executeBuyback(), called by the guardian, which burns all Treasury-held TIDE (tide.burn). It has no withdrawal function, making it structurally incapable of seizing funds. See Treasury.
UNIT = 1 ether (1e18) — the whole-token threshold. nftBalanceOf(user) targets balanceOf(user) / UNIT: every whole TIDE held materializes one Tide-LP NFT; dropping below a whole UNIT burns the tail NFT.
vesting
Section titled “vesting”Claimed gains unlock linearly over vestingDuration (production: 72 h; the live Sepolia rehearsal compresses this — durations are read live by the dapp). A new claim re-locks the still-locked remainder over a fresh window (anti-dump); withdrawing already-vested TIDE does not restart the clock. See 72-hour linear vesting.