Add EulerSwap hook on ethereum - #7136
Conversation
|
Deployment failed for project hooklist with the following error: Learn More: https://vercel.com/uniswap?upgradeToPro=build-rate-limit |
There was a problem hiding this comment.
Review: hooks/ethereum/0xcd36cc7d9892b5d50e7bcfbf81d56e3e6c1028a8.json
Flag Verification
Address suffix 0x28a8 = 10408 = 10100010101000 binary (14 bits). All 14 flags match both the address bitmask and the getHookPermissions() function in src_UniswapHook.sol:
- beforeInitialize: true ✓
- afterInitialize: false ✓
- beforeAddLiquidity: true ✓
- afterAddLiquidity: false ✓
- beforeRemoveLiquidity: false ✓
- afterRemoveLiquidity: false ✓
- beforeSwap: true ✓
- afterSwap: false ✓
- beforeDonate: true ✓
- afterDonate: false ✓
- beforeSwapReturnsDelta: true ✓
- afterSwapReturnsDelta: false ✓
- afterAddLiquidityReturnsDelta: false ✓
- afterRemoveLiquidityReturnsDelta: false ✓
Properties Verification
dynamicFee: false ✓ — _beforeSwap returns (selector, returnDelta, 0) — the fee override is hardcoded to 0. No OVERRIDE_FEE_FLAG or updateDynamicLPFee call in the hook source. Fee is set statically at activation time via uint24 fee = uint24(p.fee / 1e12).
upgradeable: false ✓ — source_meta.json shows "proxy": false. Hook instances use a fixed-target delegatecall pattern (EIP-1167-style) to an immutable implementation; there is no admin function to change the implementation address. The delegatecall is to a fixed deployment address, not an upgrade path.
requiresCustomSwapData: false ✓ — The bytes calldata (hookData) parameter in _beforeSwap is unnamed and completely unused. Swaps work correctly with empty hookData.
vanillaSwap: false ✓ — beforeSwapReturnsDelta is true, which mandates false. Additionally, the hook handles swaps entirely in beforeSwap by depositing into and withdrawing from Euler vaults using a custom curve invariant, replacing standard Uniswap pool mechanics.
swapAccess: "none" ✓ — _beforeSwap has no access control. The nonReentrantHook modifier is a reentrancy guard, not a gating mechanism. No allowlist, governance flag, or temporal gating is present.
Metadata Verification
- verifiedSource: true ✓ —
source_meta.jsonconfirms"verified": true. - chainId: 1 ✓ —
chains.jsonmapsethereumto chainId 1. - name: "EulerSwap" ✓ — Matches
contractNamefromsource_meta.json. No promotional or endorsement language. - description ✓ — Accurately describes the on-chain logic: custom-curve AMM backed by Euler Finance lending vaults, swaps handled entirely in
beforeSwapvia vault deposits/withdrawals, native LP positions and donations blocked via revert. No audit claims or marketing language.
Summary
All flags, properties, and metadata are correct and substantiated by the verified on-chain source code.
Ponx
left a comment
There was a problem hiding this comment.
Bot review verified; bitmask/flags/properties check out. LGTM.
Summary
A custom-curve AMM hook backed by Euler Finance lending vaults. It handles swaps entirely in beforeSwap by depositing input tokens into and withdrawing output tokens from Euler vaults using a concentrated invariant curve, replacing standard Uniswap pool mechanics. Native LP positions and donations are blocked via revert.
Flags
Properties
Warnings
Closes #7115