Fee sharing hook on Robinhood Chain

Uniswap v4 Hook Contract 0xadec3c7975c52ebfe15bc61eb5c1429c5c0ca0cc on Robinhood Chain · Fee sharing

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

What it does

Barb is a token whose home ETH pool charges traders a fixed 0.75% to 5% tithe in ETH on every swap, and that tithe is split into four quivers paid out to fixed bearer addresses, so every swap through the home pool costs slightly more than the pool price.

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

  • Acts as an ERC20 token (Barb, fixed supply of 1 billion minted once to the Stave) and as the hook of its own ETH/Barb Uniswap v4 pool, which must be initialised with fee 0, tickSpacing 1 and this contract as hook.
  • On every swap through the home pool a tithe of 0.75% to 5% (titheBps fixed at deployment) is taken in ETH via beforeSwapReturnDelta or afterSwapReturnDelta, so the hook keeps the tithe as a delta outside the pool price.
  • The tithe is minted as an ERC-6909 ETH claim held by the hook inside the PoolManager and is split into four fixed quivers: 80% to the cutter side (split between cutter and guild by creditsBps), 10% to greenwood, and the remainder to keep.
  • Each quiver can be emptied only by its fixed bearer address via empty(), which burns the claim and sends ETH to that bearer through the PoolManager unlock callback.
  • Liquidity callbacks (add, remove, donate, afterInitialize) are all wired to revert with NotWired, so liquidity can only be managed through the normal pool without hook logic.
Swap behaviour
Swaps through the home ETH/Barb pool pay an extra tithe in ETH on top of the pool price: buys with exact ETH input have the tithe cut from the ETH sent before the pool sees it, sells for exact ETH output are grossed up so the tithe is the difference, and legs named in coin amounts are tithed in afterSwap on the actual ETH moved. Swaps through any other pool revert with WrongRange.
Liquidity behaviour
No liquidity callbacks. All liquidity hooks revert with NotWired, so the home pool cannot be modified through hook-controlled liquidity actions.
Fee behaviour
The pool itself is initialised with fee 0; the only cost to traders is the hook tithe of titheBps (75 to 500 bps, fixed at deployment), taken in ETH and dealt into the four quivers. Its breakdown is 80% cutter side (of which creditsBps goes to the guild), 10% greenwood, and the rest to keep.
Owner & admin controls
Ownership is renounced in the constructor, so owner() is zero and no privileged owner exists. There is no pause, blacklist, upgrade mechanism or parameter setter; titheBps, creditsBps and all quiver bearer addresses are immutable. Each quiver's bearer alone controls withdrawals from that quiver.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize restricts pool initialisation to the Stave with the exact canonical key; beforeSwap computes and takes the tithe on ETH-in exact-in and ETH-out exact-out legs; afterSwap computes and takes the tithe on coin-named legs and reverts with ShortShot if the leg did not fill as expected; beforeSwapReturnDelta and afterSwapReturnDelta let the hook return the tithe as a delta to the PoolManager.

Security & trust assessment

Risk level: low, estimated (decoded bytecode, high confidence).

Who controls it: No privileged key can change fees, pause trading or move funds. The only privileged parties are the four immutable quiver bearers, each of which can withdraw only its own quiver balance.

Risk to user funds: The hook holds ETH tithe only as ERC-6909 claims inside the PoolManager, withdrawable solely by the fixed bearers. Trader funds pass through the pool and are not custodied by the hook beyond the tithe delta.

Security findings

  • [info] Tithe is taken on every home-pool swap: The hook takes up to 5% of each swap as ETH via return deltas, which is a fixed, disclosed cost to traders rather than a hidden fee, since titheBps is immutable and bounded between 75 and 500 bps.
  • [info] Fixed quiver bearers receive all tithe value: The cutter, guild, greenwood and keep addresses are set at deployment and cannot be changed, so tithe ETH is only recoverable by those specific addresses; a lost bearer key would strand its quiver balance.
  • [low] Hook can block swaps on its own pool: afterSwap reverts with ShortShot and beforeSwap with AmountOffScale if the fill or amount does not match the expected tithe arithmetic, so unusual swap sizes or partial fills may fail rather than settle.
  • [info] ETH claims held inside PoolManager: Tithe ETH is minted as an ERC-6909 claim by the hook and backed inside the PoolManager; this is a standard accounting pattern, and emptying is limited to the bearer of each quiver with a reentrancy guard.

Contract details

Verified source
No
Bytecode size
8,094 bytes
Upgradeable proxy
No
Detected patterns
erc20, moves-currency, ownable, return-delta, self-unlock

Pools using Fee sharing hook