Stylus on Robinhood Chain
Uniswap v4 Hook Contract 0x2f677cddf79cf2b3f9e337fdadc264a79f0f20cc on Robinhood Chain · Fee sharing · Verified contract
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $249
- Pools using this hook
- 2
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 7
What it does
A Uniswap v4 hook on ETH pools that skims a fixed 2.7 percent of the ETH side of every swap to an immutable inkwell wallet, while otherwise leaving trading and liquidity unrestricted.
How it works step by step
- Takes 2.7 percent of the ETH side of each swap (INK_BPS = 270) and sends it to the immutable inkwell address in ETH.
- Uses beforeSwap return delta to collect ink on exact-input buys and exact-output sells, and afterSwap return delta for the other two shapes.
- Holds ink as an ERC-6909 claim and lets anyone call disburse() if the inkwell refuses ETH at swap time.
- Tracks per-pool tallies: open time, swap count, buy count, last swap time, high tick (lowest tick reached), volume and ink paid.
- Restricts pool initialization to the scriptorium and requires an ETH-native pool with zero static fee.
- Reverts all liquidity and donate callbacks with NotImplemented, leaving liquidity to Uniswap position NFTs owned by the dead address.
- Swap behaviour
- On every swap the hook takes 2.7 percent ink in ETH: on exact-input buys it takes ink on top of the input in beforeSwap, on exact-output sells it takes ink from proceeds in afterSwap, and the remaining two swap shapes are inked in afterSwap. It records per-pool tallies (swaps, buys, volume, ink paid, high tick) and never refuses or caps a swap.
- Liquidity behaviour
- No liquidity callbacks. Liquidity callbacks revert with NotImplemented. The scriptorium mints each pool's single position as a Uniswap position NFT owned by the dead address.
- Fee behaviour
- The pool itself uses a zero static fee (beforeInitialize requires key.fee == 0). The hook takes a fixed 2.7 percent ink on the ETH side of every swap (INK_BPS = 270 basis points), paid in ETH to the immutable inkwell address, with the rate applied on top of the ETH side for buys and out of proceeds for sells.
- Owner & admin controls
- No admin controls found. There is no owner, setter, pause, blocklist or upgrade path; the inkwell address and ink rate (INK_BPS = 270) are immutable. Only the scriptorium (deployer) can initialize pools via beforeInitialize.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize restricts initialization to the scriptorium and requires an ETH pool with zero fee. beforeSwap takes ink on exact-input buys and exact-output sells via a specified-side delta. afterSwap takes ink on the other two swap shapes and updates per-pool tallies. beforeSwapReturnDelta and afterSwapReturnDelta allow the hook to take ETH owed to it, which is how ink is collected.
Security & trust assessment
Risk level: low (verified source, high confidence).
Who controls it: No privileged key exists after deployment, so no account can change fees, pause swaps, blocklist addresses or upgrade the hook. The fixed inkwell recipient and immutable ink rate are the only economic parameters.
Risk to user funds: The hook can take ETH from swap flows (2.7 percent) and can hold ink as ERC-6909 claims if the inkwell refuses ETH. It cannot move tokens, block swaps or touch liquidity, and no admin key can alter these behaviours.
Security findings
- [info] Fixed 2.7 percent ink on every swap: Ink is taken from every swap via return deltas and sent to the immutable inkwell address, so the hook necessarily captures 2.7 percent of ETH-side flow on every trade.
- [low] Ink can be held as a claim if the inkwell rejects ETH: If take() to the inkwell reverts, the ink is minted to the hook as an ERC-6909 claim and held; disburse() can later carry it, and anyone may call it. Held ink is not lost but depends on the inkwell accepting ETH eventually.
- [info] No MEV or trader protection in the hook: Swaps are never refused or capped and the hook does not check the sender or router, so the hook does not add its own sandwich or MEV protection.
- [info] Swap-path external calls limited to PoolManager: The hook's afterSwap and beforeSwap read pool state and mutate per-pool tallies on every swap; the logic is deterministic and bounded, with no external calls other than poolManager and the inkwell take.
Contract details
- Verified source
- Yes (Stylus)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 8,471 bytes
- Upgradeable proxy
- No
- Detected patterns
- erc6909-claims, moves-currency, return-delta, self-unlock
Pools using Stylus
- ETH / QUILL (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- ETH / TQUILL (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today