finds.dev← search

// the find

Uniswap/v4-core

★ 2,502 · Solidity · updated Apr 2026

🦄 🦄 🦄 🦄 Core smart contracts of Uniswap v4

The core smart contracts for Uniswap v4, implementing a singleton PoolManager architecture where all pool state lives in one contract. The main new primitive is hooks — contracts that can intercept before/after events on swaps, liquidity changes, and donations. Aimed at protocol integrators and hook developers building on top of Uniswap.

- Singleton PoolManager with transient-state delta accounting is a genuine architectural improvement over v3 — flash accounting means you only settle net balances at the end of an unlock, enabling complex multi-hop operations without intermediate token transfers.

- Hook system is well-structured: which callbacks fire is encoded in the hook address itself (via bit flags), so the set of active callbacks is immutable after pool creation, preventing bait-and-switch attacks.

- Test coverage is thorough — library-level unit tests, fuzz tests via Foundry, Echidna property tests for math-heavy components (TickMath, SqrtPriceMath), and gas snapshots committed to the repo so regressions are visible in PRs.

- Multiple independent audits included in the repo (Trail of Bits, Spearbit, OpenZeppelin, Certora, ABDK) plus a MythX workflow — unusually transparent for a protocol at this stage.

- BUSL-1.1 license on most files means you cannot fork and deploy a competing AMM from this code until the change date, which limits what 'open source' actually means here for builders who want production freedom.

- The unlock/callback pattern is powerful but adds meaningful integration complexity — building even a simple router requires understanding delta accounting, and the README example code has a syntax error (missing closing parenthesis on the revert), which isn't confidence-inspiring for newcomers.

- Hook contracts have no standardized safety checks in core — a malicious or buggy hook can reenter, return arbitrary deltas, or grief LPs, and the security doc ('Known Effects of Hook Permissions') is a PDF rather than inline NatDoc, making it easy to miss.

- ERC6909 is used for internal claims instead of ERC1155 or plain mappings, which is a reasonable gas tradeoff but adds a non-standard dependency that downstream tooling (wallets, indexers, analytics) doesn't yet handle well.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →