Skip to content

Allow governance proposals to have native pipelining #9861

Open
@ValarDragon

Description

Summary

Often we pipeline governance proposals, that are only intended to execute conditioned upon another governance proposal passing. These have been commonly used throughout the cosmos hub's history, and a number of other chains, due to the latency of voting.

To my knowledge there hasn't been a pipeline fault yet, where the base proposal failed, and the propoals later in the pipeline that depended on its success had to have their votes switched to reflect this.

It should be possible to have governance proposals get "native pipelining", so that if the proposal whose success they are conditioned on fails, then the new proposal gets automatically rejected. This way voters no longer have to worry about this pipeline fault risk, and only vote after the conditioned upon proposal has been accepted.

Problem Definition

Its natural to want pipelined proposals so that governance can act in a more timely manner. However, the mechanics of pipelining requires voters to be online in the latter half, and less able to "vote and forget" in the earlier half.

Proposal

Allow all governance proposals to optionally specify a parameter for a proposal whose success they are conditioned upon. E.g. a parameter in the proposal file called depends_on_proposal. If its set, the new governance proposal can only get accepted / enacted on chain if what it depends on passes.

And then in the governance hooks, whenever a proposal gets decided, and an event is emitted, the governance module checks if there was any proposal conditioned upon it. If there was, and the conditioned upon proposal was rejected, it also rejects the proposal that has this pipeline condition, and immediately closes it.


For Admin Use

  • Not duplicate issue
  • Appropriate labels applied
  • Appropriate contributors tagged
  • Contributor assigned/self-assigned

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions