Tenon on Robinhood Chain

Uniswap v4 Hook Contract 0x95e94ede29c51fd4655f4658b8b60cf1210ba0cc on Robinhood Chain · Rewards · Verified contract

Volume (24h)
$105
Value locked (TVL)
<$0.01
All-time volume
$105
Pools using this hook
1
Swaps (24h)
7 (3 traders)
Total swaps
7

What it does

Tenon charges a fixed ETH kerf of 0.75% to 5% on swaps in its home pool, except for wallets on a fixed exempt list, and sends that ETH to four collectors who can each withdraw only their own share.

This read was written for the hook 0x5e78…60cc on Robinhood Chain and reused here: the two share a code shape, so constants such as fees, owners and addresses can differ.

How it works step by step

  • Charges a kerf of 0.75% to 5% (set at deployment) on swaps through its home pool, taken in ETH via beforeSwapReturnDelta and afterSwapReturnDelta.
  • Holds the collected ETH as ERC-6909 claims inside the PoolManager, recorded in kerfCollected and sorted into four bins: joiner, bench, kiln and foreman.
  • Lets only each bin's collector withdraw its ETH via tipBin, which burns the claim and sends ETH to that collector.
  • Exempts wallets on a kerfFree list (fixed in the constructor, never editable) from the kerf when they sign the transaction, based on tx.origin.
  • Accepts a single home pool with ETH as currency0, the coin as currency1, a zero fee and tick spacing 1; all other pools are rejected.
  • Mints a fixed supply of one billion tokens to the deployer and renounces ownership in the constructor.
Swap behaviour
Swaps in the home pool pay a kerf in ETH of kerfBps (75 to 500 basis points). Buys with exact ETH in and sells for exact ETH out are kerfed in beforeSwap; other legs are kerfed in afterSwap. Trades from kerf-free wallets pay nothing. Trades in any other pool revert.
Liquidity behaviour
No liquidity callbacks. Liquidity add, remove and donate hooks revert with UnusedSlot.
Fee behaviour
Kerf is a hook-level charge, not a pool fee: the pool's static fee is zero, and the kerf is taken through return deltas and sorted 80% to the joiner side (split between joiner and bench by splitBps), 10% to kiln and the remainder to foreman. kerfBps and splitBps are immutable.
Owner & admin controls
None. Ownership is renounced in the constructor, owner() returns zero, there is no pause, blacklist, upgrade path or parameter setter. Only the fixed collector addresses can withdraw their own bins.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize restricts the home pool to the Mortise-created one. beforeSwap takes the kerf on exact-ETH-in buys and exact-ETH-out sells via a return delta. afterSwap takes the kerf on the other legs via a return delta. afterSwapReturnDelta and beforeSwapReturnDelta are enabled to let the hook take currency from the swap.

Security & trust assessment

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

Who controls it: Essentially none: no owner, no admin and no pause. The only privileged parties are the four collectors, each able to tip out only its own bin.

Risk to user funds: Users pay the kerf in ETH on each non-exempt swap, and the hook holds those ETH claims inside the PoolManager until tipped. Liquidity providers are not given hook-level controls over their funds; the hook cannot block swaps except through its own revert conditions.

Security findings

  • [info] Kerf exemption relies on tx.origin: Wallets on the kerfFree list pay no kerf when they sign the transaction, because the rate is read from tx.origin. Routing through a smart contract wallet or a router will not change the rate for the listed wallet, and the list cannot be edited after deployment.
  • [info] Collector keys can withdraw their bins: Each bin's collector address can call tipBin at any time for up to the full balance of its bin. A compromised collector key can drain its own bin, but this does not reach other bins or the pool's liquidity.
  • [info] Swap-time currency taken via return deltas: The hook takes ETH from every home-pool swap through beforeSwapReturnDelta and afterSwapReturnDelta, so the pool's ETH is reduced by the kerf on each swap by design. Swaps revert if the kerf would equal or exceed the ETH input.

Contract details

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

Pools using Tenon