Ballast on Robinhood Chain
Uniswap v4 Hook Contract 0x068b270296cbdd63c81b4de4679b4da87e82e0cc on Robinhood Chain · Custom pricing · Verified contract
- Volume (24h)
- $224
- Value locked (TVL)
- $0
- All-time volume
- $224
- Pools using this hook
- 1
- Swaps (24h)
- 19 (3 traders)
- Total swaps
- 19
What it does
Every swap in the home pool pays a fixed ETH levy of 0.75% to 5% that is split among four holds, while liquidity providers and pool donations are not handled by the hook.
This read was written for the hook 0x05f5…20cc 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
- Deploys as an ERC20 with a fixed supply of one billion tokens minted to the Bulwark deployer at construction, then renounces ownership so owner() returns zero
- Acts as the hook of its own Uniswap v4 pool, initialisable only once from the Bulwark with the canonical ETH/coin key and a fixed zero static fee
- Levies an ETH amount (75 to 500 bps, fixed at construction) on swaps in the home pool, returned to the PoolManager via beforeSwapReturnDelta or afterSwapReturnDelta
- Mints an ETH-denominated ERC-6909 claim in the PoolManager equal to each levy and records it across four holds: shipwright (80% of levy minus crew share), crew (share of shipwright side per crewBps), harbour (10%), admiralty (remainder)
- Lets each hold's master call unload to burn the claim and receive ETH from the PoolManager; no other party can move hold balances
- Reverts on every liquidity and donate callback, so only the swap path is active
- Swap behaviour
- Swaps in the home pool only (others revert with WrongLane). Buys with exact ETH input and sells for exact ETH output are levied in beforeSwap; buys for exact coin output and sells for exact coin input are levied in afterSwap based on the actual ETH moved. Every swap pays the levy, so all trades in the home pool pay the same proportional levy rate, with rounding up on the levy amount.
- Liquidity behaviour
- Add, remove and donate callbacks all revert with NotRigged, so liquidity can only be handled by the PoolManager's standard path and the hook does not participate. No liquidity callbacks are implemented.
- Fee behaviour
- The pool itself uses a static fee of zero. The levy is taken as a hook return delta in ETH, split into four holds: 80% shipwright side (with crew share per crewBps), 10% harbour, and the remaining 10% plus rounding dust to the admiralty.
- Owner & admin controls
- No owner after construction since ownership is renounced in the constructor. No pause, blacklist, transfer tax, upgrade path or parameter setter is present; levy rate, crew share and hold masters are immutable. Each hold's master can unload that hold's ETH.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize restricts pool creation to one home lane from the Bulwark. beforeSwap computes and stows the levy for exact-input buys and exact-output sells. afterSwap computes and stows the levy for exact-output buys and exact-input sells and checks fill amounts. beforeSwapReturnDelta and afterSwapReturnDelta let the hook claim the levy from the swap amounts.
Security & trust assessment
Risk level: low (verified source, high confidence).
Who controls it: No owner exists after deployment. Only the four fixed hold masters (creator, crew, harbour, admiralty) can withdraw accumulated levy ETH from their hold; they cannot change swap terms or block swaps.
Risk to user funds: Traders pay the levy in ETH on home-pool swaps; these funds sit in the PoolManager as a claim owned by the hook and are not withdrawable except through each hold's master calling unload. Liquidity providers are not affected by the hook.
Security findings
- [info] Levy taken via return delta: beforeSwap and afterSwap return deltas take an ETH levy from every home-pool swap, so trades are charged the immutable levyBps rate and the PoolManager holds a matching ETH claim.
- [info] Immutable configuration, no owner: Ownership is renounced in the constructor and all key parameters are immutable, so no privileged key can change fees, pause swaps or move hold balances.
- [low] Hold masters control unloading: Each hold can only be drained by its own master via unload, so a master's key is a direct withdrawal right over that hold's accumulated ETH.
- [low] Fill-check reverts can block swaps: afterSwap reverts with ShortFill if the actual ETH moved differs from the computed levy, which could make certain swaps fail under unusual pool conditions.
Contract details
- Verified source
- Yes (Ballast)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 8,022 bytes
- Upgradeable proxy
- No
- Detected patterns
- erc20, moves-currency, ownable, return-delta, self-unlock
Pools using Ballast
- ETH / YIELDWRIGHT (0.00% fee) — 24h volume $224, TVL $0, 19 swaps today