Tenon on Robinhood Chain
Uniswap v4 Hook Contract 0x5e78fe501ceeefa78290936d0e370bb7c75a60cc on Robinhood Chain · Rewards · 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
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.
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
- ETH / test (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today