UniNodes
UniNodes

Uniswap v4 · immutable · real ETH yield

Every swap
feeds your node

UniNodes is a token welded into a custom Uniswap v4 swap hook. It skims 6% of every trade at the AMM level and streams it as live ETH into per-holder node contracts. Deploy a node, get paid on every swap that follows.

Immutable contractVerified on EtherscanNo team allocation
node deployernot connected
deploying
Node #2615
tier fee
0.005
the engine

The hook is the protocol

No staking contract. No treasury bot. No off-chain keeper. One Uniswap v4 hook taxes, accounts and distributes. If a swap happens, the hook already paid your node.

swap pipelineone hook · three steps · zero keepers
step 01
Swap

Any trade routes through the ETH / NODE pool. No special router, no allowlist.

step 02v4 hook
beforeSwap → afterSwap

The hook skims 6% of the input inside pool settlement and books it to the accumulator.

5% → Nodesstreamed

Split pro-rata across every live node.

1% → Burnbuyback

Parked as ETH, swapped to NODE, burned.

every swap pays
6%

Skimmed at the AMM level on buys and sells alike. It lives inside the pool — there is no path that escapes it.

312.40 streamed in the last 24h
5%
Node share

Split pro-rata across every live node through the on-chain accumulator.

1%
Buyback & burn

Parked as ETH, swapped to NODE and burned on every executeBuyback() call.

The hook surface, callback by callback

getHookPermissions()0xC4 BITMAP

Declares exactly four permission bits to the PoolManager: beforeSwap, afterSwap, beforeSwapReturnDelta and afterSwapReturnDelta. Every other bit is zero — the hook can touch swaps and nothing else.

Hooks.BEFORE_SWAP_FLAG | Hooks.AFTER_SWAP_FLAG
beforeSwap()RETURNS_DELTA

Skims 6% of the swap input via a positive specified delta. The trader's effective amount-in shrinks before the curve is touched, so the price impact is honest and the tax can never be routed around.

return (selector, toBeforeSwapDelta(tax, 0), 0);
afterSwap()RETURNS_DELTA

Settles the skim once the pool clears. Buys deposit ETH straight into the pool; sells park NODE in pendingNodeTax until swapAndDistribute() converts it. Then the accumulator moves.

accETHPerNode += (inflow * 1e18) / nodeCount;
enableTrading()ONE-WAY FLAG

Public swaps revert until the deployer flips this exactly once. After the flag is set there is no off switch — trading cannot be paused, throttled, rate-limited or reversed by anyone, ever.

tradingEnabled = true; // irreversible
deploy a node

Mint your own slice of orderflow

A node is a per-holder contract that captures a share of every future swap. Non-custodial, permissionless, and earning from the very next trade, never from past ones.

0.1%

Hold to unlock

Every 0.1% of total supply you hold unlocks exactly one node slot. Stack supply, stack slots.

POOL

Bought, not airdropped

Your wallet must have bought NODE through the pool. Transfers and airdrops never qualify, sybils are priced out.

TIER

Pay the deploy fee

Nodes 1–10 cost 0.01 ETH, 11–20 cost 0.02, and so on. The earlier you deploy, the cheaper your node is forever.

node #0044 · genesis · live
this node has earned
1.6042
weight ×1.8uptime 41d 6h
buy0.84+0.0042
buy2.10+0.0105
sell1.36+0.0068
beforeSwap → afterSwap6% routed
claimable
0.7314
under the hood

More than a tax. A yield machine

The hook does the boring part — skim and split. Everything around it is engineered to make a deployed node worth more tomorrow than today.

flagship mechanic

Uptime accrual

A node is not static. The longer it stays deployed without being burned, the more distribution weight it accrues — capped, on-chain, impossible to fake by re-minting. Hold the line, out-earn the latecomers.

+0.4%
weight / epoch
×2.2
max accrued
240%
annualised node yield
orderflow

MEV-shielded skim

The 6% cut is captured inside beforeSwap, before searchers ever see the trade. No sandwich can front-run a node.

compounding

Auto-restake loop

Opt a node into the restake path and claimed ETH buys NODE, lifting your supply share and unlocking the next slot.

burn

Reflexive buyback

Sell pressure feeds the 1% wedge. The harder it dumps, the more NODE executeBuyback() takes off the market.

visualised

Node constellation

A live map of all 2,614 nodes — each one pulses the instant the accumulator pays it. On-chain, and mesmerising.

the nodes

2,614 nodes are live right now

Every deployed node is a public, claimable contract. The accumulator does not care who you are — it pays weight, deploy order and uptime. This is the current top of the book.

#nodeownertierweightearned
01#00070x4de8…a91cGenesis×1.80.884
02#00210x9f12…7b03Genesis×1.80.720
03#00440x7a3f…e10bGenesis×1.80.632
04#06120xcc77…1d44Prime×1.40.401
05#08900x2f99…ab55Prime×1.40.336
06#13770xa10b…6e21Prime×1.40.278
showing 6 of 2,614 nodes
trust, minimised

The deployer cannot rug you

Not because of a promise — because the functions to do it were never written. The contract is verified on Etherscan. Read it before you read this.

what nobody can do
  • ×Mint new NODE — there is no mint function past deploy
  • ×Pause or throttle trading once enableTrading() is flipped
  • ×Change the 6% rate, the 5/1 split, or any fee parameter
  • ×Drain the distribution pool — ETH only moves on claim()
  • ×Upgrade the hook — no proxy, no admin, no upgrade path
  • ×Seize, freeze, or reassign a deployed node
the entire admin surface

Three functions. Each callable exactly once. After the third, the deployer key is as powerless as any other wallet.

setFactory()
one-way · points to the node factory once
setPoolKey()
one-way · binds the canonical ETH/NODE pool
enableTrading()
one-way · opens public swaps, forever
contracts/deployments/1.json · verified source on Etherscan
View verified contract →
whitepaper · v1

The technical bit, unhidden

No vague tokenomics wheel. Here is exactly what the hook does and the numbers it does it with.

protocol parameters
Token standardERC-20, fixed supply
Total supply100,000,000 NODE
Mint functionnone — minted once to treasury
Swap tax6% of input (buys + sells)
Node share5% → accETHPerNode accumulator
Buyback wedge1% → executeBuyback()
Hook permissions0xC4 — 4 bits set
Slot rule1 node slot per 0.1% supply held
Tier fee0.01 ETH per band of 10 nodes
Claim cost~28k gas, O(1) per holder
Accumulator scale1e18 fixed-point
Upgrade pathnone — no proxy, no admin

Why the tax lives in the hook, not the token

A transfer tax on the ERC-20 breaks aggregators, gets routed around, and flags every wallet. UniNodes moves the cut into the Uniswap v4 hook via beforeSwap with BEFORE_SWAP_RETURNS_DELTA. The skim happens inside the pool's settlement, on the specified delta — so the price curve is untouched and the tax cannot be escaped by clever routing.

The hook address is mined, not deployed blindly

Uniswap v4 encodes a hook's permissions in the low bits of its own address. The UniNodes hook address is CREATE2-mined until those bits exactly equal 0xC4 — beforeSwap, afterSwap and both return-delta flags, nothing else. The PoolManager rejects any hook whose address does not match the callbacks it implements, so the permission set is provable from the address alone.

How a node captures rewards from swap one

Distribution uses a single pull-based accumulator, accETHPerNode, scaled by 1e18. Each inflow does one O(1) update; each node stores the accumulator value at its mint block. A claim simply pays the delta. A freshly deployed node captures the very next swap — never a retroactive cent — which keeps the math honest and the gas flat no matter how many nodes exist.

Buys, sells, and the pendingNodeTax bucket

Buys deposit ETH straight into the distribution pool. Sells leave NODE behind in a pendingNodeTax bucket; anyone can call swapAndDistribute() to convert it to ETH and fan it out. The 1% wedge accrues separately and is realised when executeBuyback() swaps it to NODE and burns it — permissionless, callable by any wallet.