Skip to content

Allow for variable governance proposal times #24535

Open
@aljo242

Description

@aljo242

Right now, you have two options (expedited and "normal").  These exist and both have their own Quorums (by default the expedited required quorum is higher than "normal").  So the basic design is that "if you want a faster prop, you need more quorum".

This feature would be extending the governance module to allow a new way to submit props with a "deadline" and using some kind of step function / lerp or configurable logic to determine what the required quorum for this prop should be

// MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary
// proposal Content.
message MsgSubmitProposal {
  option (cosmos.msg.v1.signer) = "proposer";
  option (amino.name)           = "cosmos-sdk/v1/MsgSubmitProposal";

  // messages are the arbitrary messages to be executed if proposal passes.
  repeated google.protobuf.Any messages = 1;

  // initial_deposit is the deposit value that must be paid at proposal submission.
  repeated cosmos.base.v1beta1.Coin initial_deposit = 2 [
    (gogoproto.nullable)     = false,
    (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins",
    (amino.dont_omitempty)   = true,
    (amino.encoding)         = "legacy_coins"
  ];

  // proposer is the account address of the proposer.
  string proposer = 3 [(cosmos_proto.scalar) = "cosmos.AddressString"];

  // metadata is any arbitrary metadata attached to the proposal.
  string metadata = 4;

  // title is the title of the proposal.
  string title = 5 [(cosmos_proto.field_added_in) = "cosmos-sdk 0.47"];

  // summary is the summary of the proposal
  string summary = 6 [(cosmos_proto.field_added_in) = "cosmos-sdk 0.47"];

  // expedited defines if the proposal is expedited or not
  bool expedited = 7 [(cosmos_proto.field_added_in) = "cosmos-sdk 0.50"];

  // NEW optional field that can be used to set a desired proposal duration which 
  // will be used to generate the required quorum for passing
  google.protobuf.Duration duration = 7;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions