Custom pricing hook on Robinhood Chain
Uniswap v4 Hook Contract 0x0d4d6c9c2a6e52fc2fd774910fe6b0779fbe20cc on Robinhood Chain · Custom pricing
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $0
- Pools using this hook
- 1
- Swaps (24h)
- 12 (7 traders)
- Total swaps
- 12
What it does
Flint charges a fixed grit of 0.75% to 5% of the ETH side on every buy and sell in its own pool, with no admin controls, so traders pay the same rate in both directions and LPs earn only the standard pool mechanics, with the grit going to the coin's bin holders.
This read was written for the hook 0x67c6…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
- Hooks the coin's own Uniswap v4 pool (native ETH paired with the coin, fee 0, tick spacing 1) and only accepts the pool created by the Quarry launcher
- On every buy and sell, takes a grit fee of 0.75% to 5% of the ETH side (gritBps, fixed at deployment) through beforeSwap and afterSwap return deltas
- Keeps the grit as ERC-6909 claims held by the PoolManager on behalf of the hook, then sorts it into four internal bins: 80% cutter side (split between cutter and commons by commonsBps), 10% guild, and the remainder to quarry
- Lets only the holder of each bin call tip(), which burns the matching claim and sends the ETH to that holder via PoolManager.take
- Mints a fixed 1 billion coin supply to the Quarry at construction and renounces ownership in the constructor, with no mint or pause functions afterward
- Reverts all liquidity and donate callbacks (ColdSlot), so liquidity can only be added through the standard PoolManager path
- Swap behaviour
- Every swap on the home pool is charged grit: buys (ETH in, coins out) and sells (coins in, ETH out) both pay the same gritBps rate on the ETH amount, taken via return deltas in beforeSwap for exact-input buys and exact-output sells, and via afterSwap for the other directions. Swaps on any other pool revert with ForeignPool.
- Liquidity behaviour
- Liquidity callbacks are cold: beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity, afterRemoveLiquidity, beforeDonate and afterDonate all revert with ColdSlot, and the hook does not return any liquidity deltas. Liquidity is managed by the standard pool mechanics and no hook logic runs on it.
- Fee behaviour
- The pool's LP fee is fixed at 0 and the hook returns a zero LP override fee. The only fee is the grit cut, a flat percentage of the ETH side set at deployment (75 to 500 bps). Buys and sells pay the same rate; the rate is immutable.
- Owner & admin controls
- None. Ownership is renounced in the constructor, so owner() reads zero. There is no pause, blacklist, upgrade proxy, or parameter setter. The grit rate, commons split, and bin holders are fixed immutables set at deployment. Each bin's holder can only withdraw their own bin via tip(); no one can redirect or pause that.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize: validates that the pool is the canonical home pool created by the Quarry and records its id. beforeSwap: takes the grit as a return delta on exact-input buys and exact-output sells, and checks the swap is on the home pool. afterSwap: takes the grit on the remaining swap directions, verifies the ETH moved matches the expected amount, and sorts the grit into bins. beforeSwapReturnDelta and afterSwapReturnDelta: enable the hook to take a share of the swap's currency through these deltas.
Security & trust assessment
Risk level: medium, estimated (decoded bytecode, high confidence).
Who controls it: No privileged key can change the fee, pause swaps, blacklist addresses, or upgrade the contract. Ownership is renounced in the constructor. The only fixed roles are the four bin holders, who can withdraw only their own bin.
Risk to user funds: The hook holds ERC-6909 ETH claims inside the PoolManager on its own account and does not hold user ETH outside that. The grit taken on each trade is accrued into bins and can only be sent to the matching holder via tip(). Swaps can revert if the amount exceeds the int128 range or the ShortFill check fails, but no one can block or move other users' funds.
Security findings
- [info] Hook takes a swap fee via return deltas: beforeSwap and afterSwap return deltas take a fixed grit of 0.75% to 5% of the ETH side on every trade on the home pool, so traders pay this on top of the pool's zero LP fee. The rate is immutable and applies equally to buys and sells.
- [low] Assumes PoolManager accounting is correct for ERC-6909 claims: The hook mints ERC-6909 ETH claims through poolManager.mint and later burns them in tip(); the afterSwap ShortFill check guards that the ETH movement matches the expected grit, but correctness depends on the PoolManager accounting and the _tipping reentrancy flag.
- [info] Bins are withdrawn only by fixed holders: The holder addresses for the four bins are immutable and set at deployment, with no function to change them. If a holder address cannot receive ETH, its bin cannot be tipped, but other bins are unaffected.
- [low] Full supply minted to the launcher: All one billion coins are minted to the Quarry at construction. Holders depend on the launcher's distribution, which is outside this contract.
Contract details
- Verified source
- No
- Bytecode size
- 7,598 bytes
- Upgradeable proxy
- No
- Detected patterns
- erc20, moves-currency, ownable, return-delta, self-unlock