Skip to content

Proposal to deprecate and remove RPCs related to missed and expired tickets #2774

@davecgh

Description

@davecgh

I would like to propose the missedtickets, existsmissedtickets, existsexpiredtickets, rebroadcastmissed, and notifyspentandmissedtickets RPCs be deprecated in the v1.7.0 release and then removed entirely in the release after that. The only known way these RPCs are used is to support wallet staking statistics, but due to the upcoming automatic revocations consensus change, wallets will not really need the RPCs to calculate the vast majority of the information anymore since they can detect missed and expired tickets through a combination of seeing the revocation and comparing the number of confirmations against the ticket purchase height.

Further, these RPCs are really not something that dcrd should be maintaining by default anyway because they have some fairly significant downsides:

  • The set of missed tickets and revoked tickets are both unbounded which means they take up more and more resources over time
  • With the upcoming automatic revocations consensus change, the entire notion of a missed category will effectively no longer exist
  • The sets are already large enough that they take a non-trivial amount of RAM and I/O and will only become more burdensome over time
  • Even though the missed category will effectively no longer exist, continued support of these RPCs requires the current ticket database and related consensus code to continue to be able to track and manipulate these unbounded sets

That final point is perhaps one of the most important ones, because the ticket database design can be significantly optimized due to the introduction of the automatic revocations consensus change so long as the RPCs in question are no longer supported.

Proposed Roadmap

If we decide to move forward with this, I would expect the v1.7.0 release to:

  • Mark the relevant RPCs and supporting blockchain and stake code as deprecated

Then, in the following release:

  • Remove the relevant RPCs and supporting blockchain and stake code

Metadata

Metadata

Assignees

Labels

rpc server api changeIssues and/or pull requests that involve a new RPC server version or breaking to change to the API.

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions