Quickstart
This is a hands-on walkthrough of the live TIDE dapp on Ethereum Sepolia. By the end you will have connected a wallet, acquired some TIDE, watched whole tokens mint Tide-LP NFTs, and claimed accrued swap fees.
Before you start
Section titled “Before you start”You need:
- An EVM wallet (MetaMask, Rabby, or any RainbowKit-supported wallet).
- Some Sepolia test ETH (free, see below).
- The dapp open. The protocol thesis in one line: holding the token is providing liquidity, and every swap against the pool pays holders a pro-rata share of the fee. For the why, read What is TIDE? and How it works; for the dapp’s pages, read The dapp.
1. Connect a wallet on Sepolia
Section titled “1. Connect a wallet on Sepolia”Open the dapp and click Connect (the RainbowKit button in the header).
The app targets Sepolia (chainId 11155111). A “Sepolia testnet” chip is shown in the header whenever the configured chain is not Ethereum mainnet — i.e. for any CHAIN_ID !== 1. If your wallet is connected to the wrong network, the top status banner offers a one-click switch chain action. If contracts can’t be reached, it shows a Retry.
2. Get Sepolia test ETH
Section titled “2. Get Sepolia test ETH”Fund your address from any public Sepolia faucet (for example sepoliafaucet.com, the Alchemy Sepolia faucet, or the Infura faucet). A small amount is plenty — the example flows below use fractions of an ETH.
You will spend test ETH on:
- Buying TIDE (the ETH you swap in), and
- Gas for buying, claiming, and withdrawing.
3. Buy TIDE
Section titled “3. Buy TIDE”You have two ways to acquire TIDE.
Option A — the in-app swap widget (recommended)
Section titled “Option A — the in-app swap widget (recommended)”On the Claim page sidebar (and elsewhere), the Get TIDE SwapWidget swaps directly against the canonical V4 pool.
- Select the Buy TIDE tab.
- Enter an amount of ETH to spend. Native ETH is
currency0; TIDE iscurrency1. - Review the estimated TIDE out and the min received at your slippage (default 5%, editable, validated
0–50). - Confirm in your wallet.
The widget bounds the swap with an on-chain sqrtPriceLimitX96 derived from your slippage: the swap halts at that price rather than executing at a worse one.
Option B — open the pool on Uniswap
Section titled “Option B — open the pool on Uniswap”The dapp also links out to the Uniswap interface for the TIDE pool:
https://app.uniswap.org/swap?chain=sepolia&outputCurrency=<TideHook address>4. Confirm your Tide-LP NFTs minted
Section titled “4. Confirm your Tide-LP NFTs minted”TIDE is a DN404-style token: each whole TIDE you hold automatically materializes one tradable Tide-LP NFT, worth 1/10000 of the pool. The invariant is:
nftBalanceOf(you) === balanceOf(you) / UNIT // UNIT = 1e18, flooredSo a buy that leaves you holding, say, 222 whole TIDE mints 222 Tide-LP NFTs in the same transaction. (The live Sepolia pool was bootstrapped with exactly 222 NFTs from its first buy.)
To see them:
- Go to the Collection page (see Collection & your position).
- Switch to the My tides tab. Connected, this shows your Tide-LP NFTs (each rendered as fully on-chain generative art) plus a My position banner.
Each NFT is both a unique on-chain SVG and the unit of fee accounting — one live share of every swap fee. See TideMirror (Tide-LP NFT) and TideArt (on-chain art).
Looking up any address
Section titled “Looking up any address”The All tides tab is a public explorer of the whole minted gallery. It also has a “Look up any 0x address…” field: paste any valid address and the view switches to that holder’s Tide-LP NFTs and a read-only position card (no buy CTA). Clear the field to return to the full gallery.
5. Understand the “shortfall to next NFT”
Section titled “5. Understand the “shortfall to next NFT””Fractional TIDE earns nothing until it completes a whole token — only whole NFTs are live fee shares. The My position banner makes this exact. It computes how much TIDE you are short of your next NFT:
remainder = balance % UNIT;need = remainder === 0n ? (balance === 0n ? UNIT : 0n) : UNIT - remainder;In words: need = UNIT − (balance mod UNIT) — the dust gap to the next whole token.
- If you hold a fraction (e.g.
221.4TIDE), the banner shows a progress meter toward the next whole token and copy like “You’re N TIDE from your next Tide-LP.” - When
need === 0(you hold an exact whole number), it shows an all set / no idle dust state. - On your own position, a Get TIDE button deep-links to the swap with the gap pre-filled as ETH:
/claim/?buy=<eth>The SwapWidget reads that buy parameter on mount and prefills the amount, grossing the gap up for the live fee plus a small buffer so the buy clears the whole-token threshold.
6. Watch fees accrue on /claim
Section titled “6. Watch fees accrue on /claim”Open the Claim dashboard (Claim dashboard). Swap fees accrue in two legs — ETH (currency0) and TIDE (currency1) — and are distributed pro-rata across live shares.
- Position summary shows your TIDE held, your Tide-LP count, and your accrued-unclaimed fees (summed across your NFTs).
- Click Sync fees to call
pokeFees()— a permissionless action that harvests the pool’s pending fees into the per-share accumulators so your accrued total reflects the latest swaps. Anyone can poke; it never moves funds anywhere but to holders.
7. Claim, then withdraw vested
Section titled “7. Claim, then withdraw vested”Claiming on TIDE pays you in TIDE, not ETH: the protocol takes your accrued ETH leg and buys TIDE back in the pool for you, then vests the result. Every claim therefore creates buy pressure. See Claim = in-pool buyback.
- Claim your fees:
- Claim all calls
claimMany(ids)across your positions, or - use a per-row Claim (
claim(tokenId)) for a single NFT. claim/claimManyalways pay the current owner of each NFT and only process your owed — you cannot reset someone else’s vesting clock by claiming their NFT.
- Claim all calls
- Watch it vest. Claimed gains unlock linearly over a sliding
vestingDurationwindow (production: 72 h; live Sepolia: compressed to ~5 min). The Vesting card shows claimable vs. locked, a fill bar, and an “unlocks in” countdown. See 72-hour linear vesting. - Withdraw what has vested with Withdraw vested (
withdrawVested()), enabled once your claimable amount is above zero. A withdrawal does not restart the vesting clock; a new claim re-locks the still-locked remainder over a fresh window (intended anti-dump behavior). - If you accrued owed value via NFT moves rather than a direct claim, Convert owed (
processOwed()) appears and converts it the same way (ETH leg bought back to TIDE, then vested).
A note on selling
Section titled “A note on selling”Selling or transferring an NFT before your vesting fully unlocks forfeits the not-yet-vested TIDE, which is then raffled to another holder via the forfeited-vesting lottery. If you win a draw, a Lottery panel appears on /claim with a countdown — activate it within the window to re-vest it, or it expires to the Treasury. This is the “exits enrich those who stay” flywheel.
Where to go next
Section titled “Where to go next”| If you want to… | Go to |
|---|---|
| Understand the dapp’s pages | The dapp |
| Manage and inspect Tide-LP positions | Collection & your position |
| Live fee, vesting, and lottery controls | Claim dashboard |
| Exact contract addresses & network details | Addresses & network |
| Run the whole thing on a local fork | Run it locally |