Skip to content

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.

FieldValue
NetworkEthereum Sepolia
chainId11155111
Default public RPChttps://ethereum-sepolia-rpc.publicnode.com
Block explorerhttps://sepolia.etherscan.io
Deployment versionv2 (live)

The frontend reads from a single public RPC by default; you can substitute any Sepolia RPC endpoint.

ContractRoleAddress
TideHookERC-20 TIDE token + Uniswap V4 hook + all LP/fee/vesting/lottery logic. This is currency1 of the pool.0xF6F88E408Ea5df8a809a3b4232b9Ef7f2a9d40c0
TideMirrorERC-721 Tide-LP collection (name Tide-LP, symbol TIDE-LP). Stateless mirror; reached as hook.mirror().0x4c08F0B24254BE677924C5655Ca1706Feb8259F4
TreasuryBuyback-burn sink. Only outward action is executeBuyback(); no withdrawal path.0x076f29063199DB470D260E5cE2cb560Af98cfBd3
TideArtOn-chain generative art (tokenURI rendering).0xE08Cb2BDa6517573FD6DB93B300f54CBcd5fdcf4
swapRouterCanonical 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

The pool is built on canonical Sepolia Uniswap V4 infrastructure.

ComponentAddress
PoolManager0xE03A1074c86CFeDd5C142C4F04F1a1536e203543
PositionManager0x429ba70129df741B2Ca2a85BC3A2a3328e5c09b4
Permit20x000000000022D473030F116dDEE9F6B43aC78BA3
StateView (live slot0 / price reads)0xe1Dd9c3fa50EDB962E442f60DfBc432e24537E4C
FieldValue
Owner / deployer0x6aEf12bAC31dC6F688fE980f61df45d59ff69c4D
Fee modedynamic (25% / 10% / 5%)
tickSpacing200
Seed tick range[118200, 138200] (single-sided, all TIDE)
State at deployseeded: 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.

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 TIDE
uint256 public constant UNIT = 1 ether; // 1 TIDE per Tide-LP NFT
  • UNIT = 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 a 1/10,000 share of the pool and its fees.
  • The invariant nftBalanceOf(user) == balanceOf(user) / UNIT holds after realignment: buying whole TIDE auto-mints NFTs; selling/transferring burns them.

See Hold = LP (DN404).

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.

ImmutableProduction defaultLive Sepolia value
feeWindow1300 s (5 min)300 s (5 min) — same
feeWindow2480 s (8 min)480 s (8 min) — same
vestingDuration259200 s (72 h)300 s (~5 min) — compressed
prizeActivationWindow172800 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 }

The dapp builds explorer links against https://sepolia.etherscan.io in these forms:

Terminal window
# Contract / wallet
https://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>
# Transaction
https://sepolia.etherscan.io/tx/<txHash>

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:

Terminal window
NEXT_PUBLIC_TIDE_CHAIN=11155111
NEXT_PUBLIC_TIDE_RPC=https://ethereum-sepolia-rpc.publicnode.com
NEXT_PUBLIC_TIDE_HOOK=0xF6F88E408Ea5df8a809a3b4232b9Ef7f2a9d40c0
NEXT_PUBLIC_TIDE_MIRROR=0x4c08F0B24254BE677924C5655Ca1706Feb8259F4
NEXT_PUBLIC_TIDE_TREASURY=0x076f29063199DB470D260E5cE2cb560Af98cfBd3
NEXT_PUBLIC_TIDE_SWAP_ROUTER=0x9B6b46e2c869aa39918Db7f52f5557FE577B6eEe
NEXT_PUBLIC_TIDE_STATE_VIEW=0xe1Dd9c3fa50EDB962E442f60DfBc432e24537E4C
NEXT_PUBLIC_TIDE_POOL_MANAGER=0xE03A1074c86CFeDd5C142C4F04F1a1536e203543

To 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.