Clinker on Robinhood Chain

Uniswap v4 Hook Contract 0x246114e5f6a32e9ba63ca47996a306063d87e0cc on Robinhood Chain · Fee sharing · Verified contract

Volume (24h)
$0
Value locked (TVL)
$0
All-time volume
$0
Pools using this hook
1
Swaps (24h)
0 (0 traders)
Total swaps
0

What it does

Every swap in this coin's home pool pays a fixed toll of 0.75% to 5% in ETH on the ETH side, the same for buys and sells, with the toll stashed in four keeper-controlled caches and no admin able to change it.

How it works step by step

  • Charges a toll of 75 to 500 bps (fixed at deployment) on every swap through the single home pool, taken in ETH via the hook's beforeSwap/afterSwap return deltas.
  • Mints the taken ETH as an ERC-6909 claim on the PoolManager owned by the hook, so the toll stays backed inside the PoolManager.
  • Stashes each toll across four caches: 80% to the potter side (split potter/guild by creditsBps), 10% to the studio cache, and the remainder to the kiln cache.
  • Lets only each cache's keeper call empty(), which burns the ETH claim and transfers ETH to that keeper.
  • Only accepts initialization of the one canonical pool (native ETH / this token, fee 0, tick spacing 1) from the Kiln, and reverts on all liquidity and donate hooks.
Swap behaviour
Every swap in the home pool pays a toll of tollBps (75 to 500 bps) of the ETH side. For buys with exact ETH in, the toll is removed from the ETH sent before the pool sees it. For sells for exact ETH out, the pool is asked for a grossed-up ETH amount and the toll is the difference. For coin-named legs the toll is computed in afterSwap from the ETH actually moved; partial fills revert. Swaps outside the home pool revert with StrangeChamber.
Liquidity behaviour
Liquidity add and remove hooks all revert with NotWired; liquidity can only be managed outside the hook, and the home pool is not expected to accept add/remove through the hook.
Fee behaviour
The pool's LP fee is 0; the only charge is the hook's toll of tollBps on the ETH side of every swap, which is fixed at deployment (immutable). Tolls are split across the potter, guild, studio and kiln caches; the potter/guild split is set by creditsBps.
Owner & admin controls
No pause, blacklist, transfer tax or mutable addresses. Ownership is renounced in the constructor so owner() returns zero. Each cache is controlled only by its fixed keeper (potter, guild, studio, kiln keeper), who can withdraw that cache's ETH. No upgradeability found.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize: accepts only the canonical home pool initialized by the Kiln. beforeSwap: computes and takes the toll on exact-in buys and exact-out sells, returned as a before-swap delta. afterSwap: computes and takes the toll on the remaining legs once the ETH figure is known, returned as an after-swap delta, and enforces full fills. beforeSwapReturnDelta and afterSwapReturnDelta: allow the hook to take the toll amounts from the swap.

Security & trust assessment

Risk level: medium (verified source, high confidence).

Who controls it: The owner is zero, so no single admin can change fees or pause the pool. The four cache keepers each control withdrawals of their own accrued ETH and can hold it indefinitely, but cannot alter the toll or other keepers' caches.

Risk to user funds: Users pay a toll of up to 5% of the ETH side per swap, which is accounted for in the PoolManager as a claim owned by the hook; the hook itself does not hold user coin balances beyond the standard ERC-20 supply. Trades can revert on partial fill or edge amounts, but the hook has no mechanism to freeze or seize user funds.

Security findings

  • [info] Hook takes ETH via return deltas on every swap: beforeSwapReturnDelta and afterSwapReturnDelta let the hook take a fixed tollBps (75 to 500 bps) of the ETH side of every home-pool swap, which is a deliberate tax on traders.
  • [low] Swaps revert on partial fills and off-scale amounts: afterSwap reverts with PartialFill if a tolled leg does not fill in full, and beforeSwap reverts with AmountOffScale for large or edge amounts, so some swaps can fail rather than settle.
  • [info] Cache keepers can withdraw their share of tolls: Each keeper (potter, guild, studio, kiln) can call empty() to pull ETH from their cache; this is the intended payout path but means these addresses control accrued toll revenue.
  • [info] Immutable configuration and no owner: Keepers, toll rate and credits split are immutable and ownership is renounced, so no party can change the toll or redirect the caches after firing.

Contract details

Verified source
Yes (Clinker)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
8,097 bytes
Upgradeable proxy
No
Detected patterns
erc20, moves-currency, ownable, return-delta, self-unlock, tax

Pools using Clinker