pda-multicurve
SKILL.md
Source References: Use Doppler deployments as the contract source of truth for deployed addresses and revisions.
Multicurve Price Discovery Auction
Suggested profile
- Asset tier: low/medium-value assets
- Curve posture: predictable supply curves
- Governance:
OpenZeppelin Governor: disabled - Migration: none
- Hook path:
DopplerHookInitializer+ rehypothecation hook (RehypeDopplerHook) - Beneficiaries: custom fee beneficiary setup
- Preallocation: 3 addresses
- Market posture: widely supported in production flows; commonly used by teams including Zora and Bankr
When to use
- You are configuring the default launch path for most assets
- You need curve share math and position distribution behavior
- You need deployment-mode semantics (non-migrating vs migrable/locked)
Prerequisites
- Decide governance mode as a product choice:
OpenZeppelin Governor: disabled(default)OpenZeppelin Governor: enabled(only when token-holder governance is required)
- Use
3-5supply curves for most launches - Include a tail position from max-curve to infinity (SDK
maxkeyword) - Use scheduled multicurve by default with
startingTime = 0 - Use decay multicurve only when you explicitly need fee decay behavior (
startFee -> fee) - Treat base multicurve as deprecated for new integrations (legacy support only)
Core workflow
- Build
Curve[]with3-5supply curves, including the max-tail curve to infinity. - Validate curve shares sum to
WADand all ticks align totickSpacing. - Choose deployment mode:
- Default: non-migrating launch path
- Advanced: migrable/locked lifecycle paths when required
- Configure hook initializer and module path (
DopplerHookInitializer+ rehypothecation hookRehypeDopplerHook) with beneficiary fee routing. - Initialize pool with scheduled multicurve (
UniswapV4ScheduledMulticurveInitializer) and setstartingTime = 0unless delayed launch gating is intentional. - Verify lifecycle path, preallocation recipients, and claims flow for the chosen mode.
Quick facts
| Item | Detail |
|---|---|
| Main contracts | UniswapV4ScheduledMulticurveInitializer (default), DecayMulticurveInitializer (conditional), UniswapV4MulticurveInitializer (legacy/deprecated for new integrations) |
| Allocation model | Shares-based across independent curves |
| Rebalancing | None (static positions) |
| Hook variants | Scheduled start-time hook, decay fee-schedule hook |
| Default posture | No governance, no migration, 3-5 curves + max tail + scheduled variant with startingTime = 0 |
Failure modes
- Curve shares not summing to
WAD - Missing max-tail position (
maxcurve to infinity) - Tick spacing misalignment
- Using base multicurve instead of scheduled multicurve for new integrations
- Setting nonzero
startingTimeunintentionally and delaying launch start - Choosing migrable lifecycle when non-migrating posture is intended
- Wrong assumptions about scheduled start or decaying fee behavior
References
Related skills
Weekly Installs
3
Repository
rustydotwtf/dop…r-skillsGitHub Stars
3
First Seen
12 days ago
Security Audits
Installed on
gemini-cli3
claude-code3
github-copilot3
codex3
kimi-cli3
cursor3