Sluice on Robinhood Chain
Uniswap v4 Hook Contract 0x7a663c3d7038e45e05587d2e19d110861c3ee0cc on Robinhood Chain · Fee sharing · 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
Sluice takes a fixed ETH toll of 0.75% to 5% on every swap through its home pool, applied equally to buys and sells, and splits it across four warden-controlled chambers that only their wardens can withdraw from.
How it works step by step
- Charges a fixed ETH toll of 0.75% to 5% (set at commissioning, tollBps between 75 and 500) on swaps through the single home pool whose currency1 is the coin itself
- Holds the collected toll as an ERC-6909 claim inside the PoolManager via mint, with this contract as the owner of the claim
- Allots each toll into four chambers: 80% to the surveyor side (split between surveyor and keeper by keeperBps), 10% to the basin, and the remainder to the authority
- Lets only each chamber's warden withdraw its ETH through drain, which burns the claim and sends ETH to the warden
- Mints the full fixed supply of one billion tokens to the deployer at construction and then renounces ownership
- Reverts every liquidity and donate hook, so the pool accepts no liquidity added through the hook callbacks
- Swap behaviour
- Swaps through the home pool pay the toll in ETH: buys with an exact ETH input have the toll deducted from the input before the pool sees it, sells for an exact ETH output are grossed up by the toll, and the other two flow directions have the toll computed in afterSwap from the realised ETH amount. The rate is the same for buys and sells, so no direction pays more or less than the other at a given tollBps, though the toll is charged on the ETH side of every swap through the home race and the afterSwap path reverts with ShortFill if a fill is not complete.
- Liquidity behaviour
- Adding or removing liquidity, and donations, all revert with NotPlumbed because their hook functions are unimplemented and always revert.
- Fee behaviour
- The pool's own fee is fixed at zero and the hook charges a separate ETH toll via return deltas, with the rate set by tollBps (75 to 500 bps) and immutable after deployment; the toll is split 80/10/10 across chambers with the surveyor and keeper shares set by keeperBps.
- Owner & admin controls
- No pause, blacklist, upgrade or parameter-change function exists. Ownership is renounced in the constructor so owner() returns zero. Each chamber's warden alone can drain that chamber's ETH, and the warden addresses are fixed at construction.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize locks the home race to the canonical key with the Caisson as initializer; beforeSwap computes the toll for exact-input buys and exact-output sells and returns it as a before-swap delta; afterSwap computes the toll for the other flows from the realised ETH amount and returns it as an after-swap delta; both swap callbacks mint the ETH claim to the hook.
Security & trust assessment
Risk level: medium (verified source, high confidence).
Who controls it: No owner or admin exists, but each of the four warden keys can drain its own chamber's accrued ETH at any time, and those keys are fixed at deployment.
Risk to user funds: The hook holds no user principal; it only receives ETH tolls as ERC-6909 claims inside the PoolManager and cannot block swaps except by reverting on fill mismatches, while pool liquidity and LP funds are not controlled by the hook.
Security findings
- [medium] Hook takes tokens via return deltas: beforeSwap and afterSwap return non-zero deltas and mint ETH claims on every swap through the home race, so the hook directly alters the amounts settled to traders on each swap.
- [low] Swap reverts on unfilled afterSwap flows: afterSwap reverts with ShortFill when a coin-named flow does not produce the exact expected ETH movement, so partial fills and any pool state change in the same transaction cause the swap to fail.
- [info] Fixed immutable toll and wardens: tollBps, keeperBps and all four chamber warden addresses are immutable and ownership is renounced, so no key can change the toll or redirect chambers after commissioning.
- [info] Single warden per chamber drains ETH: Each chamber's warden can call drain to withdraw up to its chamber balance in ETH, so any compromised warden key loses that chamber's accrued tolls.
Contract details
- Verified source
- Yes (Sluice)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 8,064 bytes
- Upgradeable proxy
- No
- Detected patterns
- erc20, moves-currency, ownable, return-delta, self-unlock, tax
Pools using Sluice
- ETH / test (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today