penumbra-zone / penumbra

Penumbra is a fully private proof-of-stake network and decentralized exchange for the Cosmos ecosystem.
https://penumbra.zone
Apache License 2.0
371 stars 292 forks source link

Tracking issue: Dutch auction support for Penumbra #4196

Open erwanor opened 4 months ago

erwanor commented 4 months ago

This issue is tracking completion of Dutch Auction for Penumbra:

Design doc and context: https://hackmd.io/@hdevalence/B1RjyYJgR

Implementation plan: We break the implementation into the following milestones:

Milestone Deliverable
Component M0 Functional action handlers + basic RPC
Component M1 Value balance accounting / Full RPC + Events
pcli M0 We can record / execute / retire auctions in CLI
pcli M1 We can pass high-level parameters we want users to specify (time pref) and generate multiple DAs
Prax M0 Update protos, react views for signing, view server updates
Minifront M0 UI for gradual Dutch auctions
Explorer M0 Page displaying a DA
Explorer M1 Listing DAs / integrate into pair view

with the following dependency relations:

graph TD
  CM0(Component M0) --> CM1
  CM1(Component M1) --> EM0
  EM0(Explorer M0) --> EM1
  EM1(Explorer M1)
  CM0 --> PM0
  PM0(pcli M0) --> PM1
  PM1(pcli M1)
  PM0 --> PrM0
  PrM0(Prax M0)
  PrM0 --> MM0
  MM0(Minifront M0)
  PM1 -.- MM0

  style CM0 fill:#f9d4e5,stroke:#333,stroke-width:2px
  style PM0 fill:#f9d5e5,stroke:#333,stroke-width:2px
  style PrM0 fill:#f6cd61,stroke:#333,stroke-width:2px
  style MM0 fill:#fe8a71,stroke:#333,stroke-width:2px

Tracking issue:

Component

Component M0: to build a protocol MVP for DAs

pcli M0: to exercise and fill in the RPC impls

Component M1: complete core implementation and enable discoverability

pcli M1: to lay the groundwork for minifront M0

Prax M0 (to be tracked in web repos - presented here for context)

Implementation strategy notes:

  1. The Component M0 and pcli M0 milestones should be done together, in keeping with our previous practice of using pcli as a testbed for new features. These should be done as soon as possible. Component functionality that doesn't affect the external action interfaces (e.g., value balance accounting, event emission, etc) can be deferred.

  2. Note that pcli M1 is not in itself a valuable product feature; the only reason to do it is to be able to parallelize the work of automatic parameter selection for GDAs so that the Minifront M0 can adapt or copy it.

  3. The proto package for the new component should be v1alpha1; this is still going to cause breaking proto changes because we'll add new Transaction fields that use the v1alpha1 types and then break them to point at the new package, but this shouldn't cause problems because other software won't use them and the entire project will be completed in a short time horizon.

hdevalence commented 4 months ago

Note on the proto point: I think the right time to switch auction from v1alpha1 to v1 is after the M0 milestone

TalDerei commented 4 months ago

tracking prax / minifront in this tracking issue