Addresses & network
The canonical on-chain reference for TIDE. Every address below is the live, Etherscan-verified v2 deployment on Ethereum Sepolia. Treat this page as the source of truth for any client, indexer, or integration.
Network
Section titled “Network”| Field | Value |
|---|---|
| Network | Ethereum Sepolia |
chainId | 11155111 |
| Default public RPC | https://ethereum-sepolia-rpc.publicnode.com |
| Block explorer | https://sepolia.etherscan.io |
| Deployment version | v2 (live) |
The frontend reads from a single public RPC by default; you can substitute any Sepolia RPC endpoint.
TIDE protocol contracts
Section titled “TIDE protocol contracts”| Contract | Role | Address |
|---|---|---|
TideHook | ERC-20 TIDE token + Uniswap V4 hook + all LP/fee/vesting/lottery logic. This is currency1 of the pool. | 0xF6F88E408Ea5df8a809a3b4232b9Ef7f2a9d40c0 |
TideMirror | ERC-721 Tide-LP collection (name Tide-LP, symbol TIDE-LP). Stateless mirror; reached as hook.mirror(). | 0x4c08F0B24254BE677924C5655Ca1706Feb8259F4 |
Treasury | Buyback-burn sink. Only outward action is executeBuyback(); no withdrawal path. | 0x076f29063199DB470D260E5cE2cb560Af98cfBd3 |
TideArt | On-chain generative art (tokenURI rendering). | 0xE08Cb2BDa6517573FD6DB93B300f54CBcd5fdcf4 |
swapRouter | Canonical Sepolia PoolSwapTest router used by the dapp’s swap widget. Test-only — no real minOut, refunds leftover ETH, and does not exist on mainnet. | 0x9B6b46e2c869aa39918Db7f52f5557FE577B6eEe |
Uniswap V4 infrastructure (Sepolia)
Section titled “Uniswap V4 infrastructure (Sepolia)”The pool is built on canonical Sepolia Uniswap V4 infrastructure.
| Component | Address |
|---|---|
PoolManager | 0xE03A1074c86CFeDd5C142C4F04F1a1536e203543 |
PositionManager | 0x429ba70129df741B2Ca2a85BC3A2a3328e5c09b4 |
Permit2 | 0x000000000022D473030F116dDEE9F6B43aC78BA3 |
StateView (live slot0 / price reads) | 0xe1Dd9c3fa50EDB962E442f60DfBc432e24537E4C |
Pool & launch parameters
Section titled “Pool & launch parameters”| Field | Value |
|---|---|
| Owner / deployer | 0x6aEf12bAC31dC6F688fE980f61df45d59ff69c4D |
| Fee mode | dynamic (25% / 10% / 5%) |
tickSpacing | 200 |
| Seed tick range | [118200, 138200] (single-sided, all TIDE) |
| State at deploy | seeded: true, totalMinted: 222, totalShares: 222 |
The pool key uses currency0 = address(0) (native ETH) and currency1 = TideHook, with the V4 dynamic-fee flag so the hook can override the fee per swap. See How it works and Architecture overview.
Supply & share model
Section titled “Supply & share model”The supply is fixed at 10,000 TIDE, minted once in the constructor — the owner cannot mint, and supply can only ever go down via Treasury buyback-burn.
uint256 public constant SUPPLY = 10_000 ether; // 10,000 TIDEuint256 public constant UNIT = 1 ether; // 1 TIDE per Tide-LP NFTUNIT = 1 ether(1e18): holding one whole TIDE entitles you to one Tide-LP NFT.- Maximum NFTs =
SUPPLY / UNIT = 10,000, so each whole NFT is a1/10,000share of the pool and its fees. - The invariant
nftBalanceOf(user) == balanceOf(user) / UNITholds after realignment: buying whole TIDE auto-mints NFTs; selling/transferring burns them.
See Hold = LP (DN404).
Durations
Section titled “Durations”The four lifecycle durations are constructor immutables on TideHook. They are part of the CREATE2 init code, so changing any duration changes the mined hook address.
| Immutable | Production default | Live Sepolia value |
|---|---|---|
feeWindow1 | 300 s (5 min) | 300 s (5 min) — same |
feeWindow2 | 480 s (8 min) | 480 s (8 min) — same |
vestingDuration | 259200 s (72 h) | 300 s (~5 min) — compressed |
prizeActivationWindow | 172800 s (48 h) | 600 s (~10 min) — compressed |
On live Sepolia the fee-schedule windows match production (5 min / 8 min), but vesting and the lottery prize-activation window are compressed to ~5 min and ~10 min so the full lifecycle can be observed in real time. The live constructor args are:
{ "feeWindow1": 300, "feeWindow2": 480, "vestingDuration": 300, "prizeActivationWindow": 600 }Etherscan links
Section titled “Etherscan links”The dapp builds explorer links against https://sepolia.etherscan.io in these forms:
# Contract / wallethttps://sepolia.etherscan.io/address/<address>
# ERC-20 token page (TIDE on the hook)https://sepolia.etherscan.io/token/0xF6F88E408Ea5df8a809a3b4232b9Ef7f2a9d40c0
# A specific Tide-LP NFT (mirror address + token id)https://sepolia.etherscan.io/nft/0x4c08F0B24254BE677924C5655Ca1706Feb8259F4/<tokenId>
# Transactionhttps://sepolia.etherscan.io/tx/<txHash>Reading these values in the dapp
Section titled “Reading these values in the dapp”The frontend bakes the live Sepolia defaults into src/lib/tide.ts, mirrored by the committed frontend/.env.local, so it builds with no env file. The relevant NEXT_PUBLIC_* variables:
NEXT_PUBLIC_TIDE_CHAIN=11155111NEXT_PUBLIC_TIDE_RPC=https://ethereum-sepolia-rpc.publicnode.comNEXT_PUBLIC_TIDE_HOOK=0xF6F88E408Ea5df8a809a3b4232b9Ef7f2a9d40c0NEXT_PUBLIC_TIDE_MIRROR=0x4c08F0B24254BE677924C5655Ca1706Feb8259F4NEXT_PUBLIC_TIDE_TREASURY=0x076f29063199DB470D260E5cE2cb560Af98cfBd3NEXT_PUBLIC_TIDE_SWAP_ROUTER=0x9B6b46e2c869aa39918Db7f52f5557FE577B6eEeNEXT_PUBLIC_TIDE_STATE_VIEW=0xe1Dd9c3fa50EDB962E442f60DfBc432e24537E4CNEXT_PUBLIC_TIDE_POOL_MANAGER=0xE03A1074c86CFeDd5C142C4F04F1a1536e203543To point the dapp at a local anvil fork instead, override NEXT_PUBLIC_TIDE_CHAIN and NEXT_PUBLIC_TIDE_RPC (plus the local addresses) — see Run it locally. For the move to L1/L2 mainnet, see Mainnet migration.