-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: create v1beta2 gov proto types (#10589)
## Description Ref: #9810 Bumps gov proto files to v1beta2 and creates new `Proposal` type --- ### Author Checklist *All items are required. Please add a note to the item if the item is not applicable and please add links to any relevant follow up issues.* I have... - [ ] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] added `!` to the type prefix if API or client breaking change - [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] provided a link to the relevant issue or specification - [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules) - [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing) - [ ] added a changelog entry to `CHANGELOG.md` - [ ] included comments for [documenting Go code](https://blog.golang.org/godoc) - [ ] updated the relevant documentation or specification - [ ] reviewed "Files changed" and left comments if necessary - [ ] confirmed all CI checks have passed ### Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] confirmed `!` in the type prefix if API or client breaking change - [ ] confirmed all author checklist items have been addressed - [ ] reviewed state machine logic - [ ] reviewed API design and naming - [ ] reviewed documentation is accurate - [ ] reviewed tests and test coverage - [ ] manually tested (if applicable)
- Loading branch information
Showing
4 changed files
with
505 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
syntax = "proto3"; | ||
|
||
package cosmos.gov.v1beta2; | ||
|
||
import "gogoproto/gogo.proto"; | ||
import "cosmos/gov/v1beta2/gov.proto"; | ||
|
||
option go_package = "github.com/cosmos/cosmos-sdk/x/gov/types"; | ||
|
||
// GenesisState defines the gov module's genesis state. | ||
message GenesisState { | ||
// starting_proposal_id is the ID of the starting proposal. | ||
uint64 starting_proposal_id = 1 [(gogoproto.moretags) = "yaml:\"starting_proposal_id\""]; | ||
// deposits defines all the deposits present at genesis. | ||
repeated Deposit deposits = 2 [(gogoproto.castrepeated) = "Deposits", (gogoproto.nullable) = false]; | ||
// votes defines all the votes present at genesis. | ||
repeated Vote votes = 3 [(gogoproto.castrepeated) = "Votes", (gogoproto.nullable) = false]; | ||
// proposals defines all the proposals present at genesis. | ||
repeated Proposal proposals = 4 [(gogoproto.castrepeated) = "Proposals", (gogoproto.nullable) = false]; | ||
// params defines all the paramaters of related to deposit. | ||
DepositParams deposit_params = 5 [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"deposit_params\""]; | ||
// params defines all the paramaters of related to voting. | ||
VotingParams voting_params = 6 [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"voting_params\""]; | ||
// params defines all the paramaters of related to tally. | ||
TallyParams tally_params = 7 [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"tally_params\""]; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,191 @@ | ||
syntax = "proto3"; | ||
package cosmos.gov.v1beta2; | ||
|
||
import "cosmos/base/v1beta1/coin.proto"; | ||
import "gogoproto/gogo.proto"; | ||
import "google/protobuf/timestamp.proto"; | ||
import "google/protobuf/any.proto"; | ||
import "google/protobuf/duration.proto"; | ||
import "cosmos_proto/cosmos.proto"; | ||
|
||
option go_package = "github.com/cosmos/cosmos-sdk/x/gov/types"; | ||
option (gogoproto.goproto_stringer_all) = false; | ||
option (gogoproto.stringer_all) = false; | ||
option (gogoproto.goproto_getters_all) = false; | ||
|
||
// VoteOption enumerates the valid vote options for a given governance proposal. | ||
enum VoteOption { | ||
option (gogoproto.goproto_enum_prefix) = false; | ||
|
||
// VOTE_OPTION_UNSPECIFIED defines a no-op vote option. | ||
VOTE_OPTION_UNSPECIFIED = 0 [(gogoproto.enumvalue_customname) = "OptionEmpty"]; | ||
// VOTE_OPTION_YES defines a yes vote option. | ||
VOTE_OPTION_YES = 1 [(gogoproto.enumvalue_customname) = "OptionYes"]; | ||
// VOTE_OPTION_ABSTAIN defines an abstain vote option. | ||
VOTE_OPTION_ABSTAIN = 2 [(gogoproto.enumvalue_customname) = "OptionAbstain"]; | ||
// VOTE_OPTION_NO defines a no vote option. | ||
VOTE_OPTION_NO = 3 [(gogoproto.enumvalue_customname) = "OptionNo"]; | ||
// VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. | ||
VOTE_OPTION_NO_WITH_VETO = 4 [(gogoproto.enumvalue_customname) = "OptionNoWithVeto"]; | ||
} | ||
|
||
// WeightedVoteOption defines a unit of vote for vote split. | ||
message WeightedVoteOption { | ||
VoteOption option = 1; | ||
string weight = 2 [ | ||
(cosmos_proto.scalar) = "cosmos.Dec", | ||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", | ||
(gogoproto.nullable) = false | ||
]; | ||
} | ||
|
||
// Deposit defines an amount deposited by an account address to an active | ||
// proposal. | ||
message Deposit { | ||
option (gogoproto.goproto_getters) = false; | ||
option (gogoproto.equal) = false; | ||
|
||
uint64 proposal_id = 1; | ||
string depositor = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; | ||
repeated cosmos.base.v1beta1.Coin amount = 3 | ||
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"]; | ||
} | ||
|
||
// Proposal defines the core field members of a governance proposal. | ||
message Proposal { | ||
option (gogoproto.equal) = true; | ||
|
||
uint64 proposal_id = 1 [(gogoproto.jsontag) = "id", (gogoproto.moretags) = "yaml:\"id\""]; | ||
repeated google.protobuf.Any messages = 2; | ||
ProposalStatus status = 3 [(gogoproto.moretags) = "yaml:\"proposal_status\""]; | ||
TallyResult final_tally_result = 4 | ||
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"final_tally_result\""]; | ||
google.protobuf.Timestamp submit_time = 5 | ||
[(gogoproto.stdtime) = true, (gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"submit_time\""]; | ||
google.protobuf.Timestamp deposit_end_time = 6 | ||
[(gogoproto.stdtime) = true, (gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"deposit_end_time\""]; | ||
repeated cosmos.base.v1beta1.Coin total_deposit = 7 [ | ||
(gogoproto.nullable) = false, | ||
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins", | ||
(gogoproto.moretags) = "yaml:\"total_deposit\"" | ||
]; | ||
google.protobuf.Timestamp voting_start_time = 8 | ||
[(gogoproto.stdtime) = true, (gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"voting_start_time\""]; | ||
google.protobuf.Timestamp voting_end_time = 9 | ||
[(gogoproto.stdtime) = true, (gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"voting_end_time\""]; | ||
} | ||
|
||
// ProposalStatus enumerates the valid statuses of a proposal. | ||
enum ProposalStatus { | ||
option (gogoproto.goproto_enum_prefix) = false; | ||
|
||
// PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. | ||
PROPOSAL_STATUS_UNSPECIFIED = 0 [(gogoproto.enumvalue_customname) = "StatusNil"]; | ||
// PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit | ||
// period. | ||
PROPOSAL_STATUS_DEPOSIT_PERIOD = 1 [(gogoproto.enumvalue_customname) = "StatusDepositPeriod"]; | ||
// PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting | ||
// period. | ||
PROPOSAL_STATUS_VOTING_PERIOD = 2 [(gogoproto.enumvalue_customname) = "StatusVotingPeriod"]; | ||
// PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has | ||
// passed. | ||
PROPOSAL_STATUS_PASSED = 3 [(gogoproto.enumvalue_customname) = "StatusPassed"]; | ||
// PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has | ||
// been rejected. | ||
PROPOSAL_STATUS_REJECTED = 4 [(gogoproto.enumvalue_customname) = "StatusRejected"]; | ||
// PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has | ||
// failed. | ||
PROPOSAL_STATUS_FAILED = 5 [(gogoproto.enumvalue_customname) = "StatusFailed"]; | ||
} | ||
|
||
// TallyResult defines a standard tally for a governance proposal. | ||
message TallyResult { | ||
option (gogoproto.equal) = true; | ||
|
||
string yes = 1 [ | ||
(cosmos_proto.scalar) = "cosmos.Int", | ||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", | ||
(gogoproto.nullable) = false | ||
]; | ||
string abstain = 2 [ | ||
(cosmos_proto.scalar) = "cosmos.Int", | ||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", | ||
(gogoproto.nullable) = false | ||
]; | ||
string no = 3 [ | ||
(cosmos_proto.scalar) = "cosmos.Int", | ||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", | ||
(gogoproto.nullable) = false | ||
]; | ||
string no_with_veto = 4 [ | ||
(cosmos_proto.scalar) = "cosmos.Int", | ||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", | ||
(gogoproto.nullable) = false | ||
]; | ||
} | ||
|
||
// Vote defines a vote on a governance proposal. | ||
// A Vote consists of a proposal ID, the voter, and the vote option. | ||
message Vote { | ||
option (gogoproto.goproto_stringer) = false; | ||
option (gogoproto.equal) = false; | ||
|
||
uint64 proposal_id = 1; | ||
string voter = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; | ||
// Deprecated: Prefer to use `options` instead. This field is set in queries | ||
// if and only if `len(options) == 1` and that option has weight 1. In all | ||
// other cases, this field will default to VOTE_OPTION_UNSPECIFIED. | ||
VoteOption option = 3 [deprecated = true]; | ||
repeated WeightedVoteOption options = 4 [(gogoproto.nullable) = false]; | ||
} | ||
|
||
// DepositParams defines the params for deposits on governance proposals. | ||
message DepositParams { | ||
// Minimum deposit for a proposal to enter voting period. | ||
repeated cosmos.base.v1beta1.Coin min_deposit = 1 [ | ||
(gogoproto.nullable) = false, | ||
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins", | ||
(gogoproto.jsontag) = "min_deposit,omitempty" | ||
]; | ||
|
||
// Maximum period for Atom holders to deposit on a proposal. Initial value: 2 | ||
// months. | ||
google.protobuf.Duration max_deposit_period = 2 [ | ||
(gogoproto.nullable) = false, | ||
(gogoproto.stdduration) = true, | ||
(gogoproto.jsontag) = "max_deposit_period,omitempty" | ||
]; | ||
} | ||
|
||
// VotingParams defines the params for voting on governance proposals. | ||
message VotingParams { | ||
// Length of the voting period. | ||
google.protobuf.Duration voting_period = 1 | ||
[(gogoproto.nullable) = false, (gogoproto.stdduration) = true, (gogoproto.jsontag) = "voting_period,omitempty"]; | ||
} | ||
|
||
// TallyParams defines the params for tallying votes on governance proposals. | ||
message TallyParams { | ||
// Minimum percentage of total stake needed to vote for a result to be | ||
// considered valid. | ||
bytes quorum = 1 [ | ||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", | ||
(gogoproto.nullable) = false, | ||
(gogoproto.jsontag) = "quorum,omitempty" | ||
]; | ||
|
||
// Minimum proportion of Yes votes for proposal to pass. Default value: 0.5. | ||
bytes threshold = 2 [ | ||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", | ||
(gogoproto.nullable) = false, | ||
(gogoproto.jsontag) = "threshold,omitempty" | ||
]; | ||
|
||
// Minimum value of Veto votes to Total votes ratio for proposal to be | ||
// vetoed. Default value: 1/3. | ||
bytes veto_threshold = 3 [ | ||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", | ||
(gogoproto.nullable) = false, | ||
(gogoproto.jsontag) = "veto_threshold,omitempty" | ||
]; | ||
} |
Oops, something went wrong.