Hook
EthereumHook is a Uniswap v4 hook on Ethereum. Brand new: its first pool went live today. Still in use: 3 trades in the last week, and 1 new pool this week.
- Contract name
- Hook
How this hook works
Sell taxA simple tax for token pools paired with ETH. When someone sells the token for ETH, or takes liquidity out, the hook sends a fixed share of the ETH to the pool creator.
Tax on sells
When a trader sells the token for ETH, a fixed percent of the ETH they get goes to the pool creator. Buying has no extra fee.
The code that does this (_afterSwap):function _afterSwap(address, PoolKey calldata key, SwapParams calldata params, BalanceDelta delta, bytes calldata) internal override returns (bytes4, int128) { if (params.zeroForOne) return (this.afterSwap.selector, 0); int128 ethOut = delta.amount0(); if (ethOut <= 0) return (this.afterSwap.selector, 0); uint256 fee = uint256(uint128(ethOut)) * creatorFeeBps / 10_000; poolManager.take(key.currency0, creator, fee); emit CreatorFeeTaken(creator, fee); return (this.afterSwap.selector, int128(int256(fee))); }Tax on removing liquidity
Liquidity providers pay the same percent on the ETH they take out of the pool.
The code that does this (_afterRemoveLiquidity):function _afterRemoveLiquidity( address, PoolKey calldata key, ModifyLiquidityParams calldata, BalanceDelta delta, BalanceDelta, bytes calldata ) internal override returns (bytes4, BalanceDelta) { int128 ethOut = delta.amount0(); if (ethOut <= 0) { return (this.afterRemoveLiquidity.selector, toBalanceDelta(0, 0)); } uint256 fee = uint256(uint128(ethOut)) * creatorFeeBps / 10_000; poolManager.take(key.currency0, creator, fee); emit CreatorFeeTaken(creator, fee); return (this.afterRemoveLiquidity.selector, toBalanceDelta(int128(int256(fee)), 0)); }ETH pools only
The hook only works in pools that pair a token with native ETH.
The code that does this (_beforeInitialize):function _beforeInitialize(address, PoolKey calldata key, uint160) internal pure override returns (bytes4) { if (!key.currency0.isAddressZero()) revert NotNativeEthPool(); return this.beforeInitialize.selector; }
Who controls it: Nobody can change anything. The tax rate (at most 10%) and the wallet that gets it are fixed when the hook is deployed, and the code can't be upgraded.
Based on the hook’s published code.What do these labels mean?
What it can do
Its code executes inside each trade in pools that use it.
It can take or add tokens during a swap. Fees, burns and custom curves work this way, and so do scams.
It can change what LPs get back when they remove liquidity.
It runs when a pool is created, often to lock in that pool’s settings.
Hook history
Nothing recorded yet.
Counted from what the hook recorded on-chain across all its pools, for every action in its published code, plus token transfers in and out of it.