Ingot on Robinhood Chain
Uniswap v4 Hook Contract 0xe164d019e2510f9fdc2e88b92a8856f7c212e0cc on Robinhood Chain · Fee sharing · Verified contract
- Volume (24h)
- $0.10
- Value locked (TVL)
- $0.10
- All-time volume
- $0.10
- Pools using this hook
- 1
- Swaps (24h)
- 1 (1 traders)
- Total swaps
- 1
What it does
Every swap through this coin's home pool pays a levy of 0.75% to 5% in ETH, and the levy is collected into four keeper caches that only their own keepers can withdraw, so buyers and sellers both pay the same fee.
How it works step by step
- Acts as the hook of its own home pool (ETH/coin, 0.10% pool fee) and tolls a levy of 75 to 500 bps of ETH on every swap through that pool
- Takes the levy as an ERC-6909 claim in the PoolManager via return deltas in beforeSwap or afterSwap, then mints the matching claim to itself
- Skims each levy across four caches: 80% caster side (split caster/smithy by creditsBps), 10% hearth, remainder foundry
- Lets only the matching keeper of a cache withdraw its ETH via tap(), which burns the claim and sends ETH to the keeper
- Is itself the ERC20 with a fixed one billion supply, minted at birth with an optional share sent to the dead address
- Leaves all liquidity callbacks and donate callbacks unwired, reverting on them
- Swap behaviour
- Swaps through the home pool pay the levy in ETH: when buying coin with exact ETH in, the levy is removed from the ETH input before the pool sees it; when selling coin for exact ETH out, the pool is asked for a grossed-up ETH amount and the levy is the difference; the other two legs are tolled in afterSwap on the actual ETH moved. Swaps in any other pool revert with StrangeVein, and a partial fill of a leg tolled in beforeSwap reverts with PartialFill.
- Liquidity behaviour
- No liquidity callbacks. All add, remove and donate hooks revert with NotWired, so liquidity can only be added or removed through the PoolManager outside the hook's logic.
- Fee behaviour
- The pool fee is a static 0.10% (VEIN_FEE). The hook additionally takes a dynamic ETH levy between 0.75% and 5% set at deployment (levyBps), returned as a return delta. The levy is skimmed to the four caches; keepers can later tap their share in ETH.
- Owner & admin controls
- Ownable is present only so owner() reads zero; ownership is renounced in the constructor and no owner-gated function exists. Each cache can be tapped only by its fixed keeper (caster, smithy, hearth, foundry), all immutable. Levy rate, creditsBps and slagBps are immutable. The contract is not proxied and has no pause, blacklist or upgrade path in the visible code.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize locks the home pool to the canonical key once, from the Crucible. beforeSwap takes the levy on exact-input buys and exact-output sells and applies the skim. afterSwap takes the levy on the remaining two legs once the ETH amount is known and enforces full fills. beforeSwapReturnDelta and afterSwapReturnDelta allow the hook to take its levy as a delta from the swap.
Security & trust assessment
Risk level: low (verified source, high confidence).
Who controls it: No owner or upgrade key can alter the contract. The four keepers are fixed at deployment and each can withdraw the ETH accumulated in its own cache; no key can touch another cache or pool liquidity.
Risk to user funds: The hook holds no user funds directly; the levy is an ETH claim inside the PoolManager owned by the hook, backed by the four cache balances, and only the matching keeper can convert its share back to ETH. Trader funds are affected only through the levy taken on each swap.
Security findings
- [info] Swap-level levy via return deltas: Every swap in the home pool pays a 0.75% to 5% ETH levy taken through beforeSwapReturnDelta and afterSwapReturnDelta, so traders receive less ETH or pay more ETH than the pool price alone implies.
- [info] Fixed keepers can drain their own cache: tap() lets the caster, smithy, hearth or foundry address withdraw the full ETH balance of its cache at any time; these addresses are fixed at deployment, so the levy flows to them irreversibly.
- [low] Strict pool and fill checks: Swaps revert with StrangeVein for any pool other than the home pool and with PartialFill when a leg tolled in beforeSwap does not fill exactly, which could block some router paths for partial or failing trades.
- [info] Immutable configuration: Levy rate, cache split and recipient addresses are immutable and ownership is renounced in the constructor, so no privileged key can change fees or pause trading.
Contract details
- Verified source
- Yes (Ingot)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 8,167 bytes
- Upgradeable proxy
- No
- Detected patterns
- erc20, moves-currency, ownable, return-delta, self-unlock
Pools using Ingot
- ETH / test (0.10% fee) — 24h volume $0.10, TVL $0.10, 1 swaps today