Reference for Doppler V4 dynamic auctions. Use when working with `Doppler`, epoch-based rebalancing, tick accumulator logic, slug placement, or dynamic auction exit conditions.
Resources
1Install
npx skillscat add rustydotwtf/doppler-skills/v4-dynamic-auction Install via the SkillsCat registry.
About this skill
Reference documentation for Doppler V4 dynamic auctions, covering epoch-based rebalancing, tick accumulator logic, slug placement, and auction exit conditions. It helps agents and developers work with the Doppler initializer, debug rebalance or exit issues, and decode configuration and epoch state. Use it when tasks involve the Doppler or UniswapV4Initializer contracts or related auction mechanics.
SKILL.md
Source References: Code citations link to raw GitHub files pinned to commit
46bad16d.
V4 Dynamic Auction
When to use
- Tasks involving
src/initializers/Doppler.solorsrc/initializers/UniswapV4Initializer.sol - Questions about epoch rebalancing, gamma, tick accumulator, slug mechanics, or proceeds thresholds
- Debugging why a dynamic auction rebalanced, exited early, or entered insufficient-proceeds mode
Prerequisites
- Understand
token0 < token1ordering and tick direction - Know the sale asset and numeraire for the target pool
- Have access to Foundry (
forge,cast) and a V4-capable RPC endpoint
Core workflow
- Decode the initialization config (
startingTick,endingTick,gamma,epochLength,numTokensToSell, proceeds bounds). - Confirm epoch state (
lastEpoch,tickAccumulator,totalTokensSold,totalProceeds). - Evaluate rebalance mode for the current epoch:
- Max adjustment (no/low sales)
- Relative adjustment (behind schedule)
- Oversold adjustment (ahead of schedule)
- Verify liquidity placement across slug classes:
- Lower slug (refund support)
- Upper slug (current epoch sales)
- Price discovery slugs (future epochs)
- Determine exit path:
- Early exit (
maximumProceedsreached) - Success at end time (
minimumProceedsreached) - Insufficient proceeds (refund path)
- Early exit (
Quick facts
| Item | Value |
|---|---|
| Main contract | src/initializers/Doppler.sol |
| Precision constant | WAD = 1e18 |
| Rebalance trigger | beforeSwap when entering a new epoch |
| Max price discovery slugs | 15 |
| Exit model | Proceeds-driven (not far-tick-driven) |
Failure modes
- Tick misinterpretation from wrong token ordering
- Incorrect epoch assumptions when
lastEpochhas not advanced - Invalid parameter tuning (
gammatoo aggressive, epoch too short) - Misreading insufficient-proceeds behavior as a hard failure
Verification hooks
- Auction state: see
../verification/references/CAST.md - Math conversions: see
../verification/references/VIEM.md - Event-driven analysis: see
../verification/references/EXPLORERS.md
References
- FLOW.md
- PARAMETERS.md
- FORMULAS.md
- GOTCHAS.md
- Source:
doppler/src/initializers/Doppler.sol,doppler/docs/Doppler.md