TenureHook on Robinhood Chain

Uniswap v4 Hook Contract 0x0abff46ebe7975a23c7411be1961c24ce96318c4 on Robinhood Chain · Dynamic fee · Verified contract

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

What it does

A Uniswap v4 hook on a native-ETH/TNR pool that charges a low flat fee on buys and a time-decaying exit tax on sells, with the sell tax routed to a distributor.

This read was written for the hook 0xbc04…d8c4 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

  • Sets the buy-side dynamic LP fee to a flat 1% in beforeSwap
  • Charges sellers a tenure-based exit tax from 2% up to 65% in afterSwap, depending on launch window and holder age
  • Sends the ETH side of sell tax to a distributor and burns the TNR side on exact-output sells
  • Restricts liquidity provision to a single protocol launch position in beforeAddLiquidity
  • Applies a 90% rate to same-second buy-then-sell round trips above a threshold on trusted routers
  • Holds no balances or claims and has no owner or upgrade path
Swap behaviour
Buys pay a flat 1% dynamic LP fee. Sells pay a holder-tenure-based exit tax, taken in afterSwap and returned via the return delta, with the rate depending on time since launch, holder tenure, router trust and same-second buy-sell patterns.
Liquidity behaviour
Only the protocol's launch position (lp) may add liquidity; beforeAddLiquidity reverts for any other sender. No remove-liquidity callbacks are enabled.
Fee behaviour
Buys (ETH to TNR) pay a flat 1% dynamic LP fee set in beforeSwap, collected in ETH by v4 core. Sells pay zero LP fee; instead an exit tax of up to 65% during the first 2 days, decaying to 25% at launch+2 days, then from 25% down to a 2% floor over 30 days of holder tenure, is taken in afterSwap on the unspecified currency and sent to the distributor (ETH on exact-input sells) or burned (TNR on exact-output sells). Sells through unknown routers pay the current ceiling, and same-second buy-then-sell round trips above sandwichMinTnr pay 90%.
Owner & admin controls
No admin controls found. The hook has no owner, no pause, no upgrade path and no setters; routers, distributor, lp, sandwichMinTnr and token are fixed as immutables at deployment. The only one-shot binding (token.bindDistributor) is on the token, not the hook.

Enabled Uniswap v4 callbacks

afterInitialize, beforeAddLiquidity, beforeSwap, afterSwap, afterSwapReturnDelta

afterInitialize records the single canonical native-ETH/TNR dynamic-fee pool and launch time. beforeAddLiquidity restricts liquidity provision to the launch position. beforeSwap sets the buy-side dynamic fee and records buy timestamps for sandwich detection. afterSwap computes and takes the sell exit tax to the distributor or burn address. afterSwapReturnDelta lets afterSwap return the tax amount so it is netted from the swapper's output.

Security & trust assessment

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

Who controls it: None at the hook level: there is no privileged key that can change fees, pause swaps or move funds. Centralization exists only in the immutable configuration (fixed trusted routers, distributor and lp addresses) and in the launch position controlled by lp, which is the sole liquidity provider.

Risk to user funds: The hook is designed to hold no balance and no ERC-6909 claims: every take names its final recipient (distributor or burn address). It can move pool funds only via the sell exit tax in afterSwap, and it can block liquidity additions from anyone except lp. It cannot freeze existing liquidity or redirect buy-side fees.

Security findings

  • [medium] Hook takes value from swaps via return delta: afterSwap takes the tax on the unspecified currency and returns it via afterSwapReturnDelta, so the hook can extract value from every sell in the pool. The rate is bounded by the 65% launch ceiling and immutable constants, and it is paid to the distributor or burned rather than retained by the hook.
  • [medium] Single liquidity provider controls pool depth: Only the lp address can add liquidity, so the pool has a single liquidity provider. Liquidity withdrawals are not hook-gated, so the launch position controls all depth and can withdraw it, consistent with the disclosed launch model.
  • [info] Router trust model is fixed at deployment: Sells through unknown routers are priced at the current ceiling and the same-second sandwich rule only applies on trusted routes, so identity-spoofing is limited by design; the trusted router list is fixed and cannot be extended after deployment.
  • [low] Same-second sandwich detection is heuristic: The sandwich rule uses block.timestamp within a second and cumulative per-second sell size thresholds, which are disclosed as a same-second heuristic rather than a full sandwich guard on a chain with multiple blocks per second.

Contract details

Verified source
Yes (TenureHook)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
7,101 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee, erc6909-claims, launchpad, mev-protection, moves-currency, return-delta

Pools using TenureHook