Hull on Robinhood Chain
Uniswap v4 Hook Contract 0xe683b05b0f1ab85cc242cac7427c681a852aa0cc on Robinhood Chain · Custom pricing · Verified contract
- Volume (24h)
- $2.39
- Value locked (TVL)
- $2.41
- All-time volume
- $2.39
- Pools using this hook
- 1
- Swaps (24h)
- 3 (2 traders)
- Total swaps
- 3
What it does
Every swap on this pool pays a flat 1% of its ETH side, the same for buys and sells, with 65% going to the creator, 10% to the house and the rest to a ballast that is stowed as permanent ETH bids under the price.
How it works step by step
- Acts as its own Uniswap v4 hook on a single ETH/coin pool, hooking only beforeInitialize, beforeSwap, afterSwap and their return-delta variants (flags 0x20CC).
- Charges a flat 1% dues (DUES_BPS=100) on every swap's ETH side, carved out via beforeSwap or afterSwap return deltas, and minted to the PoolManager as an ERC-6909 claim owned by the hook.
- Books dues into three buckets: 65% to the wright tank, 10% to the yard tank, and the remaining 25% plus rounding to the ballast.
- Lets each tank bearer draw ETH from their tank to their own wallet via draw(), which burns the ETH claim and calls poolManager.take.
- Lets anyone call stow() once the ballast holds at least 0.0005 ETH and 60 seconds have passed since the last stow; it adds up to 0.02 ETH of ETH-only liquidity as a permanent stone band 10% to ~50% under the reference price, owned by this contract.
- Has no liquidity callbacks, so the main position is not gated by the hook; the contract contains no code path that removes stone liquidity.
- Swap behaviour
- Every swap on the home pool pays a flat 1% of the ETH side. For ETH-named exact-in buys and exact-out sells the dues are taken in beforeSwap; for coin-named legs they are taken in afterSwap from the ETH actually moved. An ETH-named leg that does not fill completely reverts. Buys and sells pay the same 1% rate; there is no launch surcharge or directional fee.
- Liquidity behaviour
- No liquidity callbacks. Liquidity added or removed through the PoolManager is not intercepted by the hook. The hook itself adds liquidity only through stow(), which creates permanent ETH-only stones that cannot be withdrawn.
- Fee behaviour
- Dues are a flat 1% (rateBps() = 100) of the ETH side of every swap, implemented through beforeSwap/afterSwap return deltas rather than the LP fee. Of the dues, 65% accrues to the wright tank, 10% to the yard tank, and 25% plus rounding to the ballast, which is later laid into stones. The pool's own static fee is set to 0 at initialisation.
- Owner & admin controls
- Ownable is used only for owner() to answer; ownership is renounced in the constructor, so there is no owner. There is no pause, blocklist, fee-setter, upgrade path or transferable address. Tank bearers (wright and yard) are fixed addresses set at deployment and can only draw their own tanks. Anyone can call stow().
Enabled Uniswap v4 callbacks
beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize: restricts the one-time initialisation of the home pool to the drydock with the canonical key. beforeSwap: enforces the home pool, records the per-block anchor tick, and takes the dues on ETH-named legs via a return delta. afterSwap: takes the dues on coin-named legs via a return delta and reverts unfilled ETH-named legs. beforeSwapReturnDelta and afterSwapReturnDelta: let the hook take a portion of swap amounts as dues.
Security & trust assessment
Risk level: low (verified source, high confidence).
Who controls it: No owner after renounceOwnership in the constructor; no pause, upgrade or parameter change. The only privileged parties are the fixed wright and yard addresses, who can draw their own accumulated dues.
Risk to user funds: The hook holds ETH claims on the PoolManager for dues and the ballast, and can return deltas that take up to 1% of swap ETH; it cannot block swaps, move LP positions it does not own, or change the fee.
Security findings
- [info] Hook takes dues via return deltas: beforeSwap and afterSwap return deltas take a flat 1% of the ETH side of every swap and mint a matching ERC-6909 claim to the hook, so every trade on the home pool pays this fee.
- [info] Permanent ETH-only stones: stow() adds liquidity that is owned by the hook and has no removal path in this contract, so ballast ETH is locked into the pool permanently as a bid under the price.
- [low] Reference price can be moved across blocks: referenceTick uses the lower of the current tick and the tick before the first swap of the block, which prevents an in-block pump but not a pump held across a block boundary; the per-stow cap of 0.02 ETH limits the effect.
- [info] Immutable wright and yard bearers: The wright and yard tank bearers are fixed at construction and can only withdraw their own tank balances via draw(); no function reassigns them.
Contract details
- Verified source
- Yes (Hull)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 13,370 bytes
- Upgradeable proxy
- No
- Detected patterns
- erc20, erc6909-claims, moves-currency, ownable, return-delta, self-unlock
Pools using Hull
- ETH / TBLS (0.00% fee) — 24h volume $2.39, TVL $2.41, 3 swaps today