About UniLand

UniLand ($ULand) is a meme token whose total supply is exactly 10,000. Each whole token corresponds to one of 10,000 numbered plots of land. The plots are not NFTs — they live in a lightweight ledger inside the ERC-20 contract and follow the token wherever it goes (one plot per whole token).

Why a Uniswap V4 hook?

Without a hook, the only on-chain entropy available is block-level randomness, which every transaction in the same block shares. The V4 hook lets us mix per-swap data (sender, amount, direction…) into the seed inside the afterSwap callback, giving every trade a unique random roll. We also use afterSwapReturnDelta to skim 3% of the output ETH on every sell and route it directly to a random plot owner — without breaking Uniswap's settlement accounting.

Tax routing

  • Buy (ETH → ULand): 0% tax. You get tokens 1:1 from the curve, plus a randomly-allocated batch of plots.
  • Sell (ULand → ETH): the hook skims 3% of the output ETH before it leaves the pool.
  • A random plot id in [1..10,000] is rolled.
  • If that plot is owned → the 3% ETH is forwarded to its owner.
  • Free pool (or recipient can’t receive ETH) → ETH goes to the treasury.

Plot ownership

Plot count of an address is always floor(balance / 1e18). Whenever your balance crosses an integer line, plots are added or released by the contract. Allocation uses a Fisher-Yates lazy shuffle so we never iterate over all 10,000 plots — every claim is O(1) storage.

Verifying a roll

Every roll emits a public TaxRouted event from the hook contract. The frontend reads it for the live feed, and you can verify any roll yourself by looking up the transaction on Etherscan and reading the event log. The current seed is stored on-chain at PlotHook.seed().

Contract addresses (mainnet)