Mortar on Robinhood Chain

Uniswap v4 Hook Contract 0xbc0a18b3f1789776ddcc34aba3f0335185cc60cc on Robinhood Chain · Custom pricing · Verified contract

Volume (24h)
$282
Value locked (TVL)
$0.49
All-time volume
$282
Pools using this hook
2
Swaps (24h)
9 (3 traders)
Total swaps
9

What it does

Mortar charges every swap a flat 2.5% of its ETH side and pays all of it to the coin's mason, while trades in both directions pay the same rate and liquidity providers are not supported by this hook.

How it works step by step

  • Registers a pool only when the Banker opens it: beforeInitialize accepts only the Banker as sender, native ETH as currency0, the hook itself, a zero static fee and tick spacing 1, and records one stone per pool.
  • Takes a flat 2.5% (LIME_BPS 250) of every swap's ETH side on each swap, always denominated in ETH.
  • Books the taken ETH by minting an ERC-6909 claim to itself in the PoolManager and crediting the stone's trough, so the lime is never sent out as loose ETH.
  • Lets only the stone's mason withdraw from its trough: slake burns the claim and takes the ETH to the mason.
  • Reverts every liquidity and donate callback (afterInitialize, add/remove liquidity, donate) with NotWired, so liquidity cannot be managed through this hook.
Swap behaviour
On every swap of an ETH-denominated leg the hook charges 2.5% of the ETH amount: exact-in buys have lime taken from the ETH sent before the pool runs, exact-out sells gross up the ETH owed; coin-denominated legs are charged in afterSwap on the ETH that moved. Swaps of a pool not registered with this hook revert with ForeignPool, and an ETH-named leg that does not fill exactly reverts with Unfilled.
Liquidity behaviour
No liquidity callbacks. All add, remove and donate callbacks revert with NotWired.
Fee behaviour
The 2.5% lime is taken through return deltas on beforeSwap and afterSwap, on top of the pool's static fee of zero. It is paid entirely to the stone's mason, and no portion goes to LPs or the protocol.
Owner & admin controls
No owner, pause, setter or upgrade path is present in the hook. The only privileged party is the per-stone mason, who alone can call slake to withdraw its trough. The banker address is set once in the constructor and is immutable.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize registers the pool and enforces the canonical key; beforeSwap and afterSwap compute the lime and return it as a delta on the ETH side; beforeSwapReturnDelta and afterSwapReturnDelta are enabled so that delta can be applied.

Security & trust assessment

Risk level: medium (verified source, medium confidence).

Who controls it: The hook itself has no privileged owner. A mason controls only its own stone's accumulated lime. Pool opening is limited to the immutable banker address, whose own controls were not provided.

Risk to user funds: The hook takes 2.5% of ETH on swaps through return deltas and holds the claim in the PoolManager for the mason to slake. It does not hold trader or LP principal directly, and it cannot block liquidity actions since they revert outright.

Security findings

  • [info] Return-delta fee taking: beforeSwap and afterSwap return deltas take 2.5% of the ETH side of each swap, which is the hook's core purpose and is fixed in code with no setter.
  • [info] Mason-only withdrawal: Only the mason address, read from the Stone contract, can call slake; the trough is accounted per stone and backed by the PoolManager ETH claim.
  • [low] Immutable banker wiring: Pool registration depends on the banker address fixed at construction; a misconfigured banker could block or misroute pool creation, but it cannot be changed afterwards.
  • [medium] Unverified Banker and Keystone dependencies: The Banker, Keystone and arch contracts that the Stone and Mortar reference were not included in the provided source, so their trust assumptions could not be checked.

Contract details

Verified source
Yes (Mortar)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
6,420 bytes
Upgradeable proxy
No
Detected patterns
erc6909-claims, moves-currency, return-delta, self-unlock

Pools using Mortar