gov

package
v0.24.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 21, 2018 License: Apache-2.0 Imports: 17 Imported by: 1,682

Documentation

Overview

nolint

Index

Constants

View Source
const (
	DefaultCodespace sdk.CodespaceType = 5

	CodeUnknownProposal         sdk.CodeType = 1
	CodeInactiveProposal        sdk.CodeType = 2
	CodeAlreadyActiveProposal   sdk.CodeType = 3
	CodeAlreadyFinishedProposal sdk.CodeType = 4
	CodeAddressNotStaked        sdk.CodeType = 5
	CodeInvalidTitle            sdk.CodeType = 6
	CodeInvalidDescription      sdk.CodeType = 7
	CodeInvalidProposalType     sdk.CodeType = 8
	CodeInvalidVote             sdk.CodeType = 9
	CodeInvalidGenesis          sdk.CodeType = 10
	CodeInvalidProposalStatus   sdk.CodeType = 11
)
View Source
const (
	ParamStoreKeyDepositProcedure  = "gov/depositprocedure"
	ParamStoreKeyVotingProcedure   = "gov/votingprocedure"
	ParamStoreKeyTallyingProcedure = "gov/tallyingprocedure"
)

nolint

View Source
const MsgType = "gov"

name to idetify transaction types

Variables

View Source
var (
	KeyNextProposalID        = []byte("newProposalID")
	KeyActiveProposalQueue   = []byte("activeProposalQueue")
	KeyInactiveProposalQueue = []byte("inactiveProposalQueue")
)

Key for getting a the next available proposalID from the store

Functions

func EndBlocker

func EndBlocker(ctx sdk.Context, keeper Keeper) (resTags sdk.Tags)

Called every block, process inflation, update validator set

func ErrAddressNotStaked added in v0.20.0

func ErrAddressNotStaked(codespace sdk.CodespaceType, address sdk.AccAddress) sdk.Error

func ErrAlreadyActiveProposal

func ErrAlreadyActiveProposal(codespace sdk.CodespaceType, proposalID int64) sdk.Error

func ErrAlreadyFinishedProposal added in v0.20.0

func ErrAlreadyFinishedProposal(codespace sdk.CodespaceType, proposalID int64) sdk.Error

func ErrInactiveProposal

func ErrInactiveProposal(codespace sdk.CodespaceType, proposalID int64) sdk.Error

func ErrInvalidDescription added in v0.20.0

func ErrInvalidDescription(codespace sdk.CodespaceType, description string) sdk.Error

func ErrInvalidGenesis

func ErrInvalidGenesis(codespace sdk.CodespaceType, msg string) sdk.Error

func ErrInvalidProposalType

func ErrInvalidProposalType(codespace sdk.CodespaceType, proposalType ProposalKind) sdk.Error

func ErrInvalidTitle added in v0.20.0

func ErrInvalidTitle(codespace sdk.CodespaceType, title string) sdk.Error

func ErrInvalidVote

func ErrInvalidVote(codespace sdk.CodespaceType, voteOption VoteOption) sdk.Error

func ErrUnknownProposal

func ErrUnknownProposal(codespace sdk.CodespaceType, proposalID int64) sdk.Error

func InitGenesis

func InitGenesis(ctx sdk.Context, k Keeper, data GenesisState)

InitGenesis - store genesis parameters

func KeyDeposit added in v0.20.0

func KeyDeposit(proposalID int64, depositerAddr sdk.AccAddress) []byte

Key for getting a specific deposit from the store

func KeyDepositsSubspace added in v0.20.0

func KeyDepositsSubspace(proposalID int64) []byte

Key for getting all deposits on a proposal from the store

func KeyProposal added in v0.20.0

func KeyProposal(proposalID int64) []byte

Key for getting a specific proposal from the store

func KeyVote added in v0.20.0

func KeyVote(proposalID int64, voterAddr sdk.AccAddress) []byte

Key for getting a specific vote from the store

func KeyVotesSubspace added in v0.20.0

func KeyVotesSubspace(proposalID int64) []byte

Key for getting all votes on a proposal from the store

func NewHandler

func NewHandler(keeper Keeper) sdk.Handler

Handle all "gov" type messages.

func ProposalEqual added in v0.20.0

func ProposalEqual(proposalA Proposal, proposalB Proposal) bool

checks if two proposals are equal

func RegisterWire added in v0.20.0

func RegisterWire(cdc *wire.Codec)

Register concrete types on wire codec

func SortAddresses added in v0.20.0

func SortAddresses(addrs []sdk.AccAddress)

Sorts Addresses

func SortByteArrays added in v0.20.0

func SortByteArrays(src [][]byte) [][]byte

Public

Types

type Deposit

type Deposit struct {
	Depositer  sdk.AccAddress `json:"depositer"`   //  Address of the depositer
	ProposalID int64          `json:"proposal_id"` //  proposalID of the proposal
	Amount     sdk.Coins      `json:"amount"`      //  Deposit amount
}

Deposit

type DepositProcedure added in v0.20.0

type DepositProcedure struct {
	MinDeposit       sdk.Coins `json:"min_deposit"`        //  Minimum deposit for a proposal to enter voting period.
	MaxDepositPeriod int64     `json:"max_deposit_period"` //  Maximum period for Atom holders to deposit on a proposal. Initial value: 2 months
}

Procedure around Deposits for governance

type GenesisState

type GenesisState struct {
	StartingProposalID int64             `json:"starting_proposalID"`
	DepositProcedure   DepositProcedure  `json:"deposit_period"`
	VotingProcedure    VotingProcedure   `json:"voting_period"`
	TallyingProcedure  TallyingProcedure `json:"tallying_procedure"`
}

GenesisState - all staking state that must be provided at genesis

func DefaultGenesisState

func DefaultGenesisState() GenesisState

get raw genesis raw message for testing

func NewGenesisState

func NewGenesisState(startingProposalID int64, dp DepositProcedure, vp VotingProcedure, tp TallyingProcedure) GenesisState

func WriteGenesis added in v0.20.0

func WriteGenesis(ctx sdk.Context, k Keeper) GenesisState

WriteGenesis - output genesis parameters

type Keeper

type Keeper struct {
	// contains filtered or unexported fields
}

Governance Keeper

func NewKeeper

func NewKeeper(cdc *wire.Codec, key sdk.StoreKey, ps params.Setter, ck bank.Keeper, ds sdk.DelegationSet, codespace sdk.CodespaceType) Keeper

NewGovernanceMapper returns a mapper that uses go-wire to (binary) encode and decode gov types.

func (Keeper) ActiveProposalQueuePeek added in v0.20.0

func (keeper Keeper) ActiveProposalQueuePeek(ctx sdk.Context) Proposal

Return the Proposal at the front of the ProposalQueue

func (Keeper) ActiveProposalQueuePop added in v0.20.0

func (keeper Keeper) ActiveProposalQueuePop(ctx sdk.Context) Proposal

Remove and return a Proposal from the front of the ProposalQueue

func (Keeper) ActiveProposalQueuePush added in v0.20.0

func (keeper Keeper) ActiveProposalQueuePush(ctx sdk.Context, proposal Proposal)

Add a proposalID to the back of the ProposalQueue

func (Keeper) AddDeposit added in v0.20.0

func (keeper Keeper) AddDeposit(ctx sdk.Context, proposalID int64, depositerAddr sdk.AccAddress, depositAmount sdk.Coins) (sdk.Error, bool)

Adds or updates a deposit of a specific depositer on a specific proposal Activates voting period when appropriate

func (Keeper) AddVote added in v0.20.0

func (keeper Keeper) AddVote(ctx sdk.Context, proposalID int64, voterAddr sdk.AccAddress, option VoteOption) sdk.Error

Adds a vote on a specific proposal

func (Keeper) DeleteDeposits added in v0.20.0

func (keeper Keeper) DeleteDeposits(ctx sdk.Context, proposalID int64)

Deletes all the deposits on a specific proposal without refunding them

func (Keeper) DeleteProposal added in v0.20.0

func (keeper Keeper) DeleteProposal(ctx sdk.Context, proposal Proposal)

Implements sdk.AccountMapper.

func (Keeper) GetDeposit added in v0.20.0

func (keeper Keeper) GetDeposit(ctx sdk.Context, proposalID int64, depositerAddr sdk.AccAddress) (Deposit, bool)

Gets the deposit of a specific depositer on a specific proposal

func (Keeper) GetDepositProcedure added in v0.20.0

func (keeper Keeper) GetDepositProcedure(ctx sdk.Context) DepositProcedure

Returns the current Deposit Procedure from the global param store

func (Keeper) GetDeposits added in v0.20.0

func (keeper Keeper) GetDeposits(ctx sdk.Context, proposalID int64) sdk.Iterator

Gets all the deposits on a specific proposal

func (Keeper) GetLastProposalID added in v0.24.0

func (keeper Keeper) GetLastProposalID(ctx sdk.Context) (proposalID int64)

Get the last used proposal ID

func (Keeper) GetProposal added in v0.20.0

func (keeper Keeper) GetProposal(ctx sdk.Context, proposalID int64) Proposal

Get Proposal from store by ProposalID

func (Keeper) GetTallyingProcedure added in v0.20.0

func (keeper Keeper) GetTallyingProcedure(ctx sdk.Context) TallyingProcedure

Returns the current Tallying Procedure from the global param store

func (Keeper) GetVote added in v0.20.0

func (keeper Keeper) GetVote(ctx sdk.Context, proposalID int64, voterAddr sdk.AccAddress) (Vote, bool)

Gets the vote of a specific voter on a specific proposal

func (Keeper) GetVotes added in v0.20.0

func (keeper Keeper) GetVotes(ctx sdk.Context, proposalID int64) sdk.Iterator

Gets all the votes on a specific proposal

func (Keeper) GetVotingProcedure added in v0.20.0

func (keeper Keeper) GetVotingProcedure(ctx sdk.Context) VotingProcedure

Returns the current Voting Procedure from the global param store

func (Keeper) InactiveProposalQueuePeek added in v0.20.0

func (keeper Keeper) InactiveProposalQueuePeek(ctx sdk.Context) Proposal

Return the Proposal at the front of the ProposalQueue

func (Keeper) InactiveProposalQueuePop added in v0.20.0

func (keeper Keeper) InactiveProposalQueuePop(ctx sdk.Context) Proposal

Remove and return a Proposal from the front of the ProposalQueue

func (Keeper) InactiveProposalQueuePush added in v0.20.0

func (keeper Keeper) InactiveProposalQueuePush(ctx sdk.Context, proposal Proposal)

Add a proposalID to the back of the ProposalQueue

func (Keeper) NewTextProposal added in v0.20.0

func (keeper Keeper) NewTextProposal(ctx sdk.Context, title string, description string, proposalType ProposalKind) Proposal

Creates a NewProposal

func (Keeper) RefundDeposits added in v0.20.0

func (keeper Keeper) RefundDeposits(ctx sdk.Context, proposalID int64)

Returns and deletes all the deposits on a specific proposal

func (Keeper) SetProposal added in v0.20.0

func (keeper Keeper) SetProposal(ctx sdk.Context, proposal Proposal)

Implements sdk.AccountMapper.

func (Keeper) WireCodec added in v0.20.0

func (keeper Keeper) WireCodec() *wire.Codec

Returns the go-wire codec.

type MsgDeposit

type MsgDeposit struct {
	ProposalID int64          `json:"proposalID"` // ID of the proposal
	Depositer  sdk.AccAddress `json:"depositer"`  // Address of the depositer
	Amount     sdk.Coins      `json:"amount"`     // Coins to add to the proposal's deposit
}

----------------------------------------------------------- MsgDeposit

func NewMsgDeposit

func NewMsgDeposit(depositer sdk.AccAddress, proposalID int64, amount sdk.Coins) MsgDeposit

func (MsgDeposit) Get added in v0.20.0

func (msg MsgDeposit) Get(key interface{}) (value interface{})

Implements Msg.

func (MsgDeposit) GetSignBytes added in v0.20.0

func (msg MsgDeposit) GetSignBytes() []byte

Implements Msg.

func (MsgDeposit) GetSigners added in v0.20.0

func (msg MsgDeposit) GetSigners() []sdk.AccAddress

Implements Msg.

func (MsgDeposit) String added in v0.20.0

func (msg MsgDeposit) String() string

func (MsgDeposit) Type added in v0.20.0

func (msg MsgDeposit) Type() string

Implements Msg.

func (MsgDeposit) ValidateBasic added in v0.20.0

func (msg MsgDeposit) ValidateBasic() sdk.Error

Implements Msg.

type MsgSubmitProposal

type MsgSubmitProposal struct {
	Title          string         //  Title of the proposal
	Description    string         //  Description of the proposal
	ProposalType   ProposalKind   //  Type of proposal. Initial set {PlainTextProposal, SoftwareUpgradeProposal}
	Proposer       sdk.AccAddress //  Address of the proposer
	InitialDeposit sdk.Coins      //  Initial deposit paid by sender. Must be strictly positive.
}

----------------------------------------------------------- MsgSubmitProposal

func NewMsgSubmitProposal

func NewMsgSubmitProposal(title string, description string, proposalType ProposalKind, proposer sdk.AccAddress, initialDeposit sdk.Coins) MsgSubmitProposal

func (MsgSubmitProposal) Get added in v0.20.0

func (msg MsgSubmitProposal) Get(key interface{}) (value interface{})

Implements Msg.

func (MsgSubmitProposal) GetSignBytes added in v0.20.0

func (msg MsgSubmitProposal) GetSignBytes() []byte

Implements Msg.

func (MsgSubmitProposal) GetSigners added in v0.20.0

func (msg MsgSubmitProposal) GetSigners() []sdk.AccAddress

Implements Msg.

func (MsgSubmitProposal) String added in v0.20.0

func (msg MsgSubmitProposal) String() string

func (MsgSubmitProposal) Type added in v0.20.0

func (msg MsgSubmitProposal) Type() string

Implements Msg.

func (MsgSubmitProposal) ValidateBasic added in v0.20.0

func (msg MsgSubmitProposal) ValidateBasic() sdk.Error

Implements Msg.

type MsgVote

type MsgVote struct {
	ProposalID int64          //  proposalID of the proposal
	Voter      sdk.AccAddress //  address of the voter
	Option     VoteOption     //  option from OptionSet chosen by the voter
}

----------------------------------------------------------- MsgVote

func NewMsgVote

func NewMsgVote(voter sdk.AccAddress, proposalID int64, option VoteOption) MsgVote

func (MsgVote) Get added in v0.20.0

func (msg MsgVote) Get(key interface{}) (value interface{})

Implements Msg.

func (MsgVote) GetSignBytes added in v0.20.0

func (msg MsgVote) GetSignBytes() []byte

Implements Msg.

func (MsgVote) GetSigners added in v0.20.0

func (msg MsgVote) GetSigners() []sdk.AccAddress

Implements Msg.

func (MsgVote) String added in v0.20.0

func (msg MsgVote) String() string

func (MsgVote) Type added in v0.20.0

func (msg MsgVote) Type() string

Implements Msg.

func (MsgVote) ValidateBasic added in v0.20.0

func (msg MsgVote) ValidateBasic() sdk.Error

Implements Msg.

type Proposal

type Proposal interface {
	GetProposalID() int64
	SetProposalID(int64)

	GetTitle() string
	SetTitle(string)

	GetDescription() string
	SetDescription(string)

	GetProposalType() ProposalKind
	SetProposalType(ProposalKind)

	GetStatus() ProposalStatus
	SetStatus(ProposalStatus)

	GetTallyResult() TallyResult
	SetTallyResult(TallyResult)

	GetSubmitBlock() int64
	SetSubmitBlock(int64)

	GetTotalDeposit() sdk.Coins
	SetTotalDeposit(sdk.Coins)

	GetVotingStartBlock() int64
	SetVotingStartBlock(int64)
}

----------------------------------------------------------- Proposal interface

type ProposalKind added in v0.20.0

type ProposalKind byte

Type that represents Proposal Type as a byte

const (
	ProposalTypeText            ProposalKind = 0x01
	ProposalTypeParameterChange ProposalKind = 0x02
	ProposalTypeSoftwareUpgrade ProposalKind = 0x03
)

nolint

func ProposalTypeFromString added in v0.21.0

func ProposalTypeFromString(str string) (ProposalKind, error)

String to proposalType byte. Returns ff if invalid.

func (ProposalKind) Format added in v0.21.0

func (pt ProposalKind) Format(s fmt.State, verb rune)

For Printf / Sprintf, returns bech32 when using %s

func (ProposalKind) Marshal added in v0.21.0

func (pt ProposalKind) Marshal() ([]byte, error)

Marshal needed for protobuf compatibility

func (ProposalKind) MarshalJSON added in v0.21.0

func (pt ProposalKind) MarshalJSON() ([]byte, error)

Marshals to JSON using string

func (ProposalKind) String added in v0.21.0

func (pt ProposalKind) String() string

Turns VoteOption byte to String

func (*ProposalKind) Unmarshal added in v0.21.0

func (pt *ProposalKind) Unmarshal(data []byte) error

Unmarshal needed for protobuf compatibility

func (*ProposalKind) UnmarshalJSON added in v0.21.0

func (pt *ProposalKind) UnmarshalJSON(data []byte) error

Unmarshals from JSON assuming Bech32 encoding

type ProposalQueue

type ProposalQueue []int64

----------------------------------------------------------- ProposalQueue

type ProposalStatus

type ProposalStatus byte

Type that represents Proposal Status as a byte

const (
	StatusDepositPeriod ProposalStatus = 0x01
	StatusVotingPeriod  ProposalStatus = 0x02
	StatusPassed        ProposalStatus = 0x03
	StatusRejected      ProposalStatus = 0x04
)

nolint

func ProposalStatusFromString

func ProposalStatusFromString(str string) (ProposalStatus, error)

ProposalStatusToString turns a string into a ProposalStatus

func (ProposalStatus) Format added in v0.21.0

func (status ProposalStatus) Format(s fmt.State, verb rune)

For Printf / Sprintf, returns bech32 when using %s

func (ProposalStatus) Marshal added in v0.21.0

func (status ProposalStatus) Marshal() ([]byte, error)

Marshal needed for protobuf compatibility

func (ProposalStatus) MarshalJSON added in v0.21.0

func (status ProposalStatus) MarshalJSON() ([]byte, error)

Marshals to JSON using string

func (ProposalStatus) String added in v0.21.0

func (status ProposalStatus) String() string

Turns VoteStatus byte to String

func (*ProposalStatus) Unmarshal added in v0.21.0

func (status *ProposalStatus) Unmarshal(data []byte) error

Unmarshal needed for protobuf compatibility

func (*ProposalStatus) UnmarshalJSON added in v0.21.0

func (status *ProposalStatus) UnmarshalJSON(data []byte) error

Unmarshals from JSON assuming Bech32 encoding

type TallyResult

type TallyResult struct {
	Yes        sdk.Rat `json:"yes"`
	Abstain    sdk.Rat `json:"abstain"`
	No         sdk.Rat `json:"no"`
	NoWithVeto sdk.Rat `json:"no_with_veto"`
}

----------------------------------------------------------- Tally Results

func EmptyTallyResult

func EmptyTallyResult() TallyResult

checks if two proposals are equal

func (TallyResult) Equals added in v0.24.0

func (resultA TallyResult) Equals(resultB TallyResult) bool

checks if two proposals are equal

type TallyingProcedure added in v0.20.0

type TallyingProcedure struct {
	Threshold         sdk.Rat `json:"threshold"`          //  Minimum propotion of Yes votes for proposal to pass. Initial value: 0.5
	Veto              sdk.Rat `json:"veto"`               //  Minimum value of Veto votes to Total votes ratio for proposal to be vetoed. Initial value: 1/3
	GovernancePenalty sdk.Rat `json:"governance_penalty"` //  Penalty if validator does not vote
}

Procedure around Tallying votes in governance

type TextProposal

type TextProposal struct {
	ProposalID   int64        `json:"proposal_id"`   //  ID of the proposal
	Title        string       `json:"title"`         //  Title of the proposal
	Description  string       `json:"description"`   //  Description of the proposal
	ProposalType ProposalKind `json:"proposal_type"` //  Type of proposal. Initial set {PlainTextProposal, SoftwareUpgradeProposal}

	Status      ProposalStatus `json:"proposal_status"` //  Status of the Proposal {Pending, Active, Passed, Rejected}
	TallyResult TallyResult    `json:"tally_result"`    //  Result of Tallys

	SubmitBlock  int64     `json:"submit_block"`  //  Height of the block where TxGovSubmitProposal was included
	TotalDeposit sdk.Coins `json:"total_deposit"` //  Current deposit on this proposal. Initial value is set at InitialDeposit

	VotingStartBlock int64 `json:"voting_start_block"` //  Height of the block where MinDeposit was reached. -1 if MinDeposit is not reached
}

----------------------------------------------------------- Text Proposals

func (TextProposal) GetDescription added in v0.20.0

func (tp TextProposal) GetDescription() string

func (TextProposal) GetProposalID added in v0.20.0

func (tp TextProposal) GetProposalID() int64

nolint

func (TextProposal) GetProposalType added in v0.20.0

func (tp TextProposal) GetProposalType() ProposalKind

func (TextProposal) GetStatus added in v0.20.0

func (tp TextProposal) GetStatus() ProposalStatus

func (TextProposal) GetSubmitBlock added in v0.20.0

func (tp TextProposal) GetSubmitBlock() int64

func (TextProposal) GetTallyResult added in v0.24.0

func (tp TextProposal) GetTallyResult() TallyResult

func (TextProposal) GetTitle added in v0.20.0

func (tp TextProposal) GetTitle() string

func (TextProposal) GetTotalDeposit added in v0.20.0

func (tp TextProposal) GetTotalDeposit() sdk.Coins

func (TextProposal) GetVotingStartBlock added in v0.20.0

func (tp TextProposal) GetVotingStartBlock() int64

func (*TextProposal) SetDescription added in v0.20.0

func (tp *TextProposal) SetDescription(description string)

func (*TextProposal) SetProposalID added in v0.20.0

func (tp *TextProposal) SetProposalID(proposalID int64)

func (*TextProposal) SetProposalType added in v0.20.0

func (tp *TextProposal) SetProposalType(proposalType ProposalKind)

func (*TextProposal) SetStatus added in v0.20.0

func (tp *TextProposal) SetStatus(status ProposalStatus)

func (*TextProposal) SetSubmitBlock added in v0.20.0

func (tp *TextProposal) SetSubmitBlock(submitBlock int64)

func (*TextProposal) SetTallyResult added in v0.24.0

func (tp *TextProposal) SetTallyResult(tallyResult TallyResult)

func (*TextProposal) SetTitle added in v0.20.0

func (tp *TextProposal) SetTitle(title string)

func (*TextProposal) SetTotalDeposit added in v0.20.0

func (tp *TextProposal) SetTotalDeposit(totalDeposit sdk.Coins)

func (*TextProposal) SetVotingStartBlock added in v0.20.0

func (tp *TextProposal) SetVotingStartBlock(votingStartBlock int64)

type Vote

type Vote struct {
	Voter      sdk.AccAddress `json:"voter"`       //  address of the voter
	ProposalID int64          `json:"proposal_id"` //  proposalID of the proposal
	Option     VoteOption     `json:"option"`      //  option from OptionSet chosen by the voter
}

Vote

type VoteOption

type VoteOption byte

Type that represents VoteOption as a byte

const (
	OptionEmpty      VoteOption = 0x00
	OptionYes        VoteOption = 0x01
	OptionAbstain    VoteOption = 0x02
	OptionNo         VoteOption = 0x03
	OptionNoWithVeto VoteOption = 0x04
)

nolint

func VoteOptionFromString

func VoteOptionFromString(str string) (VoteOption, error)

String to proposalType byte. Returns ff if invalid.

func (VoteOption) Format added in v0.21.0

func (vo VoteOption) Format(s fmt.State, verb rune)

For Printf / Sprintf, returns bech32 when using %s

func (VoteOption) Marshal added in v0.21.0

func (vo VoteOption) Marshal() ([]byte, error)

Marshal needed for protobuf compatibility

func (VoteOption) MarshalJSON added in v0.21.0

func (vo VoteOption) MarshalJSON() ([]byte, error)

Marshals to JSON using string

func (VoteOption) String added in v0.21.0

func (vo VoteOption) String() string

Turns VoteOption byte to String

func (*VoteOption) Unmarshal added in v0.21.0

func (vo *VoteOption) Unmarshal(data []byte) error

Unmarshal needed for protobuf compatibility

func (*VoteOption) UnmarshalJSON added in v0.21.0

func (vo *VoteOption) UnmarshalJSON(data []byte) error

Unmarshals from JSON assuming Bech32 encoding

type VotingProcedure added in v0.20.0

type VotingProcedure struct {
	VotingPeriod int64 `json:"voting_period"` //  Length of the voting period.
}

Procedure around Voting in governance

Directories

Path Synopsis
client
cli
nolint
nolint

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL