Summary
Every creator currently uses the same bonding curve, which means the same price growth rate regardless of how they want to build their community. A creator who wants to reward early believers heavily needs a steep early curve. One who wants to stay accessible to late fans needs a flatter one. Letting creators choose a curve preset at registration makes the marketplace more expressive and gives each creator's keys a distinct character that matches their community strategy.
Scope
- Define a
CurvePreset enum with three variants stored in creator state:
Linear — price grows proportionally with supply (current default behavior)
Quadratic — price grows with the square of supply, rewards early buyers heavily
Flat — price grows slowly regardless of supply, keeps keys accessible at scale
- Add
curve_preset: CurvePreset parameter to register_creator (defaults to Linear if omitted for backwards compatibility)
- Route buy and sell quote calculations through a shared
compute_price(supply, amount, preset) function that dispatches to the correct formula per variant
- Add
get_curve_preset(creator_id) -> CurvePreset view function
- The preset is immutable after registration
Acceptance Criteria
Coordinate on Telegram
Summary
Every creator currently uses the same bonding curve, which means the same price growth rate regardless of how they want to build their community. A creator who wants to reward early believers heavily needs a steep early curve. One who wants to stay accessible to late fans needs a flatter one. Letting creators choose a curve preset at registration makes the marketplace more expressive and gives each creator's keys a distinct character that matches their community strategy.
Scope
CurvePresetenum with three variants stored in creator state:Linear— price grows proportionally with supply (current default behavior)Quadratic— price grows with the square of supply, rewards early buyers heavilyFlat— price grows slowly regardless of supply, keeps keys accessible at scalecurve_preset: CurvePresetparameter toregister_creator(defaults toLinearif omitted for backwards compatibility)compute_price(supply, amount, preset)function that dispatches to the correct formula per variantget_curve_preset(creator_id) -> CurvePresetview functionAcceptance Criteria
Linearpreset produces the same prices as the current implementation (no regression)Quadraticpreset produces higher prices thanLinearat the same supply levelFlatpreset produces lower prices thanLinearat the same supply levelget_curve_presetreturns the correct variant for each registered creatorCoordinate on Telegram