Documentation ¶
Overview ¶
nolint
Index ¶
- Constants
- Variables
- func EndBlocker(ctx sdk.Context, keeper Keeper) sdk.Tags
- func ErrAddressNotStaked(codespace sdk.CodespaceType, address sdk.AccAddress) sdk.Error
- func ErrAlreadyActiveProposal(codespace sdk.CodespaceType, proposalID uint64) sdk.Error
- func ErrAlreadyFinishedProposal(codespace sdk.CodespaceType, proposalID uint64) sdk.Error
- func ErrAlreadyVote(codespace sdk.CodespaceType, address sdk.AccAddress, proposalID uint64) sdk.Error
- func ErrCodeInvalidSwitchHeight(codespace sdk.CodespaceType, blockHeight uint64, switchHeight uint64) sdk.Error
- func ErrCodeInvalidVersion(codespace sdk.CodespaceType, version uint64) sdk.Error
- func ErrInactiveProposal(codespace sdk.CodespaceType, proposalID uint64) sdk.Error
- func ErrInvalidDescription(codespace sdk.CodespaceType, errorMsg string) sdk.Error
- func ErrInvalidGenesis(codespace sdk.CodespaceType, msg string) sdk.Error
- func ErrInvalidProposalType(codespace sdk.CodespaceType, proposalType ProposalKind) sdk.Error
- func ErrInvalidTitle(codespace sdk.CodespaceType, errorMsg string) sdk.Error
- func ErrInvalidUpgradeThreshold(codespace sdk.CodespaceType, Threshold sdk.Dec) sdk.Error
- func ErrInvalidVote(codespace sdk.CodespaceType, voteOption VoteOption) sdk.Error
- func ErrNotEnoughInitialDeposit(codespace sdk.CodespaceType, initialDeposit sdk.Coins, minDeposit sdk.Coins) sdk.Error
- func ErrNotProfiler(codespace sdk.CodespaceType, profiler sdk.AccAddress) sdk.Error
- func ErrNotTrustee(codespace sdk.CodespaceType, trustee sdk.AccAddress) sdk.Error
- func ErrOnlyValidatorVote(codespace sdk.CodespaceType, address sdk.AccAddress) sdk.Error
- func ErrSwitchPeriodInProcess(codespace sdk.CodespaceType) sdk.Error
- func ErrUnknownProposal(codespace sdk.CodespaceType, proposalID uint64) sdk.Error
- func Execute(ctx sdk.Context, gk Keeper, p ProposalContent) (err error)
- func InitGenesis(ctx sdk.Context, k Keeper, data GenesisState)
- func KeyActiveProposalQueueProposal(endTime time.Time, proposalID uint64) []byte
- func KeyDeposit(proposalID uint64, depositorAddr sdk.AccAddress) []byte
- func KeyDepositsSubspace(proposalID uint64) []byte
- func KeyInactiveProposalQueueProposal(endTime time.Time, proposalID uint64) []byte
- func KeyProposal(proposalID uint64) []byte
- func KeyValidatorSet(proposalID uint64) []byte
- func KeyVote(proposalID uint64, voterAddr sdk.AccAddress) []byte
- func KeyVotesSubspace(proposalID uint64) []byte
- func NewHandler(keeper Keeper) sdk.Handler
- func NewQuerier(keeper Keeper) sdk.Querier
- func ParamKeyTable() params.KeyTable
- func PrefixActiveProposalQueueTime(endTime time.Time) []byte
- func PrefixInactiveProposalQueueTime(endTime time.Time) []byte
- func PrepForZeroHeightGenesis(ctx sdk.Context, k Keeper)
- func ProposalEqual(proposalA ProposalContent, proposalB ProposalContent) bool
- func RegisterCodec(cdc *codec.Codec)
- func SetParameterMetrics(metrics *Metrics, key string, value interface{})
- func SoftwareUpgradeProposalExecute(ctx sdk.Context, gk Keeper, sp *SoftwareUpgradeProposal) error
- func SortAddresses(addrs []sdk.AccAddress)
- func SortByteArrays(src [][]byte) [][]byte
- func SortValAddresses(addrs []sdk.ValAddress)
- func ValidateGenesis(data GenesisState) error
- type BankKeeper
- type Deposit
- type DepositParams
- type DepositWithMetadata
- type Deposits
- type GenesisState
- type Keeper
- func (keeper Keeper) ActiveProposalQueueIterator(ctx sdk.Context, endTime time.Time) sdk.Iterator
- func (keeper Keeper) AddDeposit(ctx sdk.Context, proposalID uint64, depositorAddr sdk.AccAddress, ...) (sdk.Error, bool)
- func (keeper Keeper) AddInitialDeposit(ctx sdk.Context, proposal ProposalContent, depositorAddr sdk.AccAddress, ...) (sdk.Error, bool)
- func (keeper Keeper) AddVote(ctx sdk.Context, proposalID uint64, voterAddr sdk.AccAddress, ...) sdk.Error
- func (keeper Keeper) DeleteDeposits(ctx sdk.Context, proposalID uint64)
- func (keeper Keeper) DeleteProposal(ctx sdk.Context, proposalID uint64)
- func (keeper Keeper) DeleteValidatorSet(ctx sdk.Context, proposalID uint64)
- func (keeper Keeper) GetDeposit(ctx sdk.Context, proposalID uint64, depositorAddr sdk.AccAddress) (Deposit, bool)
- func (keeper Keeper) GetDepositParams(ctx sdk.Context) DepositParams
- func (keeper Keeper) GetDeposits(ctx sdk.Context, proposalID uint64) sdk.Iterator
- func (keeper Keeper) GetLastProposalID(ctx sdk.Context) (proposalID uint64)
- func (keeper Keeper) GetProposal(ctx sdk.Context, proposalID uint64) (proposal ProposalContent, ok bool)
- func (keeper Keeper) GetProposalsFiltered(ctx sdk.Context, voterAddr sdk.AccAddress, depositorAddr sdk.AccAddress, ...) []ProposalContent
- func (keeper Keeper) GetTallyParams(ctx sdk.Context) TallyParams
- func (keeper Keeper) GetValidatorSet(ctx sdk.Context, proposalID uint64) []sdk.ValAddress
- func (keeper Keeper) GetVote(ctx sdk.Context, proposalID uint64, voterAddr sdk.AccAddress) (Vote, bool)
- func (keeper Keeper) GetVotes(ctx sdk.Context, proposalID uint64) sdk.Iterator
- func (keeper Keeper) GetVotingParams(ctx sdk.Context) VotingParams
- func (keeper Keeper) InactiveProposalQueueIterator(ctx sdk.Context, endTime time.Time) sdk.Iterator
- func (keeper Keeper) InsertActiveProposalQueue(ctx sdk.Context, endTime time.Time, proposalID uint64)
- func (keeper Keeper) InsertInactiveProposalQueue(ctx sdk.Context, endTime time.Time, proposalID uint64)
- func (keeper Keeper) NewSoftwareUpgradeProposal(ctx sdk.Context, msg MsgSubmitSoftwareUpgradeProposal) ProposalContent
- func (keeper Keeper) RefundDeposits(ctx sdk.Context, proposalID uint64)
- func (keeper Keeper) RemoveFromActiveProposalQueue(ctx sdk.Context, endTime time.Time, proposalID uint64)
- func (keeper Keeper) RemoveFromInactiveProposalQueue(ctx sdk.Context, endTime time.Time, proposalID uint64)
- func (keeper Keeper) SetProposal(ctx sdk.Context, proposal ProposalContent)
- func (keeper Keeper) SetValidatorSet(ctx sdk.Context, proposalID uint64)
- func (keeper Keeper) SubmitProposal(ctx sdk.Context, content ProposalContent) (proposal ProposalContent, err sdk.Error)
- type Metrics
- type MsgDeposit
- type MsgSubmitProposal
- type MsgSubmitSoftwareUpgradeProposal
- type MsgVote
- type Params
- type Proposal
- func (tp Proposal) GetDepositEndTime() time.Time
- func (tp Proposal) GetDescription() string
- func (tp Proposal) GetProposalID() uint64
- func (tp Proposal) GetProposalType() ProposalKind
- func (tp Proposal) GetProtocolDefinition() sdk.ProtocolDefinition
- func (tp Proposal) GetStatus() ProposalStatus
- func (tp Proposal) GetSubmitTime() time.Time
- func (tp Proposal) GetTallyResult() TallyResult
- func (tp Proposal) GetTitle() string
- func (tp Proposal) GetTotalDeposit() sdk.Coins
- func (tp Proposal) GetVotingEndTime() time.Time
- func (tp Proposal) GetVotingStartTime() time.Time
- func (tp *Proposal) SetDepositEndTime(depositEndTime time.Time)
- func (tp *Proposal) SetDescription(description string)
- func (tp *Proposal) SetProposalID(proposalID uint64)
- func (tp *Proposal) SetProposalType(proposalType ProposalKind)
- func (tp *Proposal) SetProtocolDefinition(sdk.ProtocolDefinition)
- func (tp *Proposal) SetStatus(status ProposalStatus)
- func (tp *Proposal) SetSubmitTime(submitTime time.Time)
- func (tp *Proposal) SetTallyResult(tallyResult TallyResult)
- func (tp *Proposal) SetTitle(title string)
- func (tp *Proposal) SetTotalDeposit(totalDeposit sdk.Coins)
- func (tp *Proposal) SetVotingEndTime(votingEndTime time.Time)
- func (tp *Proposal) SetVotingStartTime(votingStartTime time.Time)
- func (p Proposal) String() string
- type ProposalContent
- type ProposalKind
- func (pt ProposalKind) Format(s fmt.State, verb rune)
- func (pt ProposalKind) Marshal() ([]byte, error)
- func (pt ProposalKind) MarshalJSON() ([]byte, error)
- func (pt ProposalKind) String() string
- func (pt *ProposalKind) Unmarshal(data []byte) error
- func (pt *ProposalKind) UnmarshalJSON(data []byte) error
- type ProposalQueue
- type ProposalResult
- type ProposalStatus
- func (status ProposalStatus) Format(s fmt.State, verb rune)
- func (status ProposalStatus) Marshal() ([]byte, error)
- func (status ProposalStatus) MarshalJSON() ([]byte, error)
- func (status ProposalStatus) String() string
- func (status *ProposalStatus) Unmarshal(data []byte) error
- func (status *ProposalStatus) UnmarshalJSON(data []byte) error
- type Proposals
- type QueryDepositParams
- type QueryProposalParams
- type QueryProposalsParams
- type QueryVoteParams
- type SoftwareUpgradeProposal
- type TallyParams
- type TallyResult
- type TextProposal
- type Vote
- type VoteOption
- type VoteWithMetadata
- type Votes
- type VotingParams
Constants ¶
const ( DefaultCodespace sdk.CodespaceType = ModuleName 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 CodeSwitchPeriodInProcess sdk.CodeType = 14 CodeInvalidInput sdk.CodeType = 17 CodeInvalidVersion sdk.CodeType = 18 CodeInvalidProposal sdk.CodeType = 19 CodeNotEnoughInitialDeposit sdk.CodeType = 20 CodeAlreadyVote sdk.CodeType = 25 CodeOnlyValidatorVote sdk.CodeType = 26 CodeInvalidUpgradeParams sdk.CodeType = 28 )
const ( // ModuleKey is the name of the module ModuleName = "gov" // StoreKey is the store key string for gov StoreKey = ModuleName // RouterKey is the message route for gov RouterKey = ModuleName // QuerierRoute is the querier route for gov QuerierRoute = ModuleName // Parameter store default namestore DefaultParamspace = ModuleName )
const ( MetricsSubsystem = "module_gov" ValidatorLabel = "validator_address" ProposalIDLabel = "proposal_id" ParamKeyLabel = "parameter_key" )
const ( TypeMsgDeposit = "deposit" TypeMsgVote = "vote" TypeMsgSubmitProposal = "submit_proposal" MaxDescriptionLength int = 5000 MaxTitleLength int = 140 )
Governance message types and routes
const ( QueryParams = "params" QueryProposals = "proposals" QueryProposal = "proposal" QueryDeposits = "deposits" QueryDeposit = "deposit" QueryVotes = "votes" QueryVote = "vote" QueryTally = "tally" ParamDeposit = "deposit" ParamVoting = "voting" ParamTallying = "tallying" )
query endpoints supported by the governance Querier
const ( // Default period for deposits & voting DefaultPeriod time.Duration = 86400 * 2 * time.Second // 2 days )
Variables ¶
var ( ParamStoreKeyDepositParams = []byte("depositparams") ParamStoreKeyVotingParams = []byte("votingparams") ParamStoreKeyTallyParams = []byte("tallyparams") // TODO: Find another way to implement this without using accounts, or find a cleaner way to implement it using accounts. DepositedCoinsAccAddr = sdk.AccAddress(crypto.AddressHash([]byte("govDepositedCoins"))) BurnedDepositCoinsAccAddr = sdk.AccAddress(crypto.AddressHash([]byte("govBurnedDepositCoins"))) )
Parameter store key
var ( KeyDelimiter = []byte(":") KeyNextProposalID = []byte("newProposalID") PrefixActiveProposalQueue = []byte("activeProposalQueue") PrefixInactiveProposalQueue = []byte("inactiveProposalQueue") )
Key for getting a the next available proposalID from the store
var ( KeySystemHaltHeight = []byte("SystemHaltHeight") KeyCriticalProposal = []byte("CriticalProposal") KeyImportantProposalNum = []byte("ImportantProposalNum") KeyNormalProposalNum = []byte("NormalProposalNum") PrefixValidatorSet = []byte("vs") )
Key for getting a the next available proposalID from the store
Functions ¶
func EndBlocker ¶
Called every block, process inflation, update validator set
func ErrAddressNotStaked ¶
func ErrAddressNotStaked(codespace sdk.CodespaceType, address sdk.AccAddress) sdk.Error
func ErrAlreadyActiveProposal ¶
func ErrAlreadyActiveProposal(codespace sdk.CodespaceType, proposalID uint64) sdk.Error
func ErrAlreadyFinishedProposal ¶
func ErrAlreadyFinishedProposal(codespace sdk.CodespaceType, proposalID uint64) sdk.Error
func ErrAlreadyVote ¶
func ErrAlreadyVote(codespace sdk.CodespaceType, address sdk.AccAddress, proposalID uint64) sdk.Error
func ErrCodeInvalidVersion ¶
func ErrCodeInvalidVersion(codespace sdk.CodespaceType, version uint64) sdk.Error
func ErrInactiveProposal ¶
func ErrInactiveProposal(codespace sdk.CodespaceType, proposalID uint64) sdk.Error
func ErrInvalidDescription ¶
func ErrInvalidDescription(codespace sdk.CodespaceType, errorMsg 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 ¶
func ErrInvalidTitle(codespace sdk.CodespaceType, errorMsg string) sdk.Error
func ErrInvalidVote ¶
func ErrInvalidVote(codespace sdk.CodespaceType, voteOption VoteOption) sdk.Error
func ErrNotProfiler ¶
func ErrNotProfiler(codespace sdk.CodespaceType, profiler sdk.AccAddress) sdk.Error
func ErrNotTrustee ¶
func ErrNotTrustee(codespace sdk.CodespaceType, trustee sdk.AccAddress) sdk.Error
func ErrOnlyValidatorVote ¶
func ErrOnlyValidatorVote(codespace sdk.CodespaceType, address sdk.AccAddress) sdk.Error
func ErrSwitchPeriodInProcess ¶
func ErrSwitchPeriodInProcess(codespace sdk.CodespaceType) sdk.Error
func ErrUnknownProposal ¶
func ErrUnknownProposal(codespace sdk.CodespaceType, proposalID uint64) sdk.Error
func InitGenesis ¶
func InitGenesis(ctx sdk.Context, k Keeper, data GenesisState)
InitGenesis - store genesis parameters
func KeyActiveProposalQueueProposal ¶
Returns the key for a proposalID in the activeProposalQueue
func KeyDeposit ¶
func KeyDeposit(proposalID uint64, depositorAddr sdk.AccAddress) []byte
Key for getting a specific deposit from the store
func KeyDepositsSubspace ¶
Key for getting all deposits on a proposal from the store
func KeyInactiveProposalQueueProposal ¶
Returns the key for a proposalID in the activeProposalQueue
func KeyProposal ¶
Key for getting a specific proposal from the store
func KeyValidatorSet ¶
func KeyVote ¶
func KeyVote(proposalID uint64, voterAddr sdk.AccAddress) []byte
Key for getting a specific vote from the store
func KeyVotesSubspace ¶
Key for getting all votes on a proposal from the store
func NewQuerier ¶
func PrefixActiveProposalQueueTime ¶
Returns the key for a proposalID in the activeProposalQueue
func PrefixInactiveProposalQueueTime ¶
Returns the key for a proposalID in the activeProposalQueue
func ProposalEqual ¶
func ProposalEqual(proposalA ProposalContent, proposalB ProposalContent) bool
checks if two proposals are equal
func SetParameterMetrics ¶
func SoftwareUpgradeProposalExecute ¶
func SoftwareUpgradeProposalExecute(ctx sdk.Context, gk Keeper, sp *SoftwareUpgradeProposal) error
func SortValAddresses ¶
func SortValAddresses(addrs []sdk.ValAddress)
TODO: Remove once address interface has been implemented (ref: #2186)
Types ¶
type BankKeeper ¶
type BankKeeper interface { GetCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins // TODO remove once governance doesn't require use of accounts SendCoins(ctx sdk.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins) (sdk.Tags, sdk.Error) SetSendEnabled(ctx sdk.Context, enabled bool) }
expected bank keeper
type Deposit ¶
type Deposit struct { Depositor sdk.AccAddress `json:"depositor"` // Address of the depositor ProposalID uint64 `json:"proposal_id"` // proposalID of the proposal Amount sdk.Coins `json:"amount"` // Deposit amount }
Deposit
type DepositParams ¶
type DepositParams struct { MinDeposit sdk.Coins `json:"min_deposit"` // Minimum deposit for a proposal to enter voting period. MaxDepositPeriod time.Duration `json:"max_deposit_period"` // Maximum period for Atom holders to deposit on a proposal. Initial value: 2 months }
Param around deposits for governance
func (DepositParams) Equal ¶
func (dp DepositParams) Equal(dp2 DepositParams) bool
Checks equality of DepositParams
func (DepositParams) String ¶
func (dp DepositParams) String() string
type DepositWithMetadata ¶
type DepositWithMetadata struct { ProposalID uint64 `json:"proposal_id"` Deposit Deposit `json:"deposit"` }
DepositWithMetadata (just for genesis)
type GenesisState ¶
type GenesisState struct { StartingProposalID uint64 `json:"starting_proposal_id"` Deposits []DepositWithMetadata `json:"deposits"` Votes []VoteWithMetadata `json:"votes"` Proposals []ProposalContent `json:"proposals"` DepositParams DepositParams `json:"deposit_params"` VotingParams VotingParams `json:"voting_params"` TallyParams TallyParams `json:"tally_params"` }
GenesisState - all staking state that must be provided at genesis
func DefaultGenesisState ¶
func DefaultGenesisState() GenesisState
get raw genesis raw message for testing
func ExportGenesis ¶
func ExportGenesis(ctx sdk.Context, k Keeper) GenesisState
ExportGenesis - output genesis parameters
func NewGenesisState ¶
func NewGenesisState(startingProposalID uint64, dp DepositParams, vp VotingParams, tp TallyParams) GenesisState
func (GenesisState) Equal ¶
func (data GenesisState) Equal(data2 GenesisState) bool
Checks whether 2 GenesisState structs are equivalent.
func (GenesisState) IsEmpty ¶
func (data GenesisState) IsEmpty() bool
Returns if a GenesisState is empty or has data in it
type Keeper ¶
type Keeper struct {
// contains filtered or unexported fields
}
Governance Keeper
func NewKeeper ¶
func NewKeeper(cdc *codec.Codec, key sdk.StoreKey, paramsKeeper params.Keeper, protocolKeeper sdk.ProtocolKeeper, guardianKeeper guardian.Keeper, paramSpace params.Subspace, ck BankKeeper, ds sdk.DelegationSet, codespace sdk.CodespaceType) Keeper
NewKeeper returns a governance keeper. It handles: - submitting governance proposals - depositing funds into proposals, and activating upon sufficient funds being deposited - users voting on proposals, with weight proportional to stake in the system - and tallying the result of the vote.
func (Keeper) ActiveProposalQueueIterator ¶
Returns an iterator for all the proposals in the Active Queue that expire by endTime
func (Keeper) AddDeposit ¶
func (keeper Keeper) AddDeposit(ctx sdk.Context, proposalID uint64, depositorAddr sdk.AccAddress, depositAmount sdk.Coins) (sdk.Error, bool)
Adds or updates a deposit of a specific depositor on a specific proposal Activates voting period when appropriate
func (Keeper) AddInitialDeposit ¶
func (Keeper) AddVote ¶
func (keeper Keeper) AddVote(ctx sdk.Context, proposalID uint64, voterAddr sdk.AccAddress, option VoteOption) sdk.Error
Adds a vote on a specific proposal
func (Keeper) DeleteDeposits ¶
Deletes all the deposits on a specific proposal without refunding them
func (Keeper) DeleteProposal ¶
Implements sdk.AccountKeeper.
func (Keeper) DeleteValidatorSet ¶
func (Keeper) GetDeposit ¶
func (keeper Keeper) GetDeposit(ctx sdk.Context, proposalID uint64, depositorAddr sdk.AccAddress) (Deposit, bool)
Gets the deposit of a specific depositor on a specific proposal
func (Keeper) GetDepositParams ¶
func (keeper Keeper) GetDepositParams(ctx sdk.Context) DepositParams
Returns the current DepositParams from the global param store
func (Keeper) GetDeposits ¶
Gets all the deposits on a specific proposal as an sdk.Iterator
func (Keeper) GetLastProposalID ¶
Get the last used proposal ID
func (Keeper) GetProposal ¶
func (keeper Keeper) GetProposal(ctx sdk.Context, proposalID uint64) (proposal ProposalContent, ok bool)
Get Proposal from store by ProposalID
func (Keeper) GetProposalsFiltered ¶
func (keeper Keeper) GetProposalsFiltered(ctx sdk.Context, voterAddr sdk.AccAddress, depositorAddr sdk.AccAddress, status ProposalStatus, numLatest uint64) []ProposalContent
Get Proposal from store by ProposalID voterAddr will filter proposals by whether or not that address has voted on them depositorAddr will filter proposals by whether or not that address has deposited to them status will filter proposals by status numLatest will fetch a specified number of the most recent proposals, or 0 for all proposals
func (Keeper) GetTallyParams ¶
func (keeper Keeper) GetTallyParams(ctx sdk.Context) TallyParams
Returns the current TallyParam from the global param store
func (Keeper) GetValidatorSet ¶
func (Keeper) GetVote ¶
func (keeper Keeper) GetVote(ctx sdk.Context, proposalID uint64, voterAddr sdk.AccAddress) (Vote, bool)
Gets the vote of a specific voter on a specific proposal
func (Keeper) GetVotingParams ¶
func (keeper Keeper) GetVotingParams(ctx sdk.Context) VotingParams
Returns the current VotingParams from the global param store
func (Keeper) InactiveProposalQueueIterator ¶
Returns an iterator for all the proposals in the Inactive Queue that expire by endTime
func (Keeper) InsertActiveProposalQueue ¶
func (keeper Keeper) InsertActiveProposalQueue(ctx sdk.Context, endTime time.Time, proposalID uint64)
Inserts a ProposalID into the active proposal queue at endTime
func (Keeper) InsertInactiveProposalQueue ¶
func (keeper Keeper) InsertInactiveProposalQueue(ctx sdk.Context, endTime time.Time, proposalID uint64)
Inserts a ProposalID into the inactive proposal queue at endTime
func (Keeper) NewSoftwareUpgradeProposal ¶
func (keeper Keeper) NewSoftwareUpgradeProposal(ctx sdk.Context, msg MsgSubmitSoftwareUpgradeProposal) ProposalContent
func (Keeper) RefundDeposits ¶
Refunds and deletes all the deposits on a specific proposal
func (Keeper) RemoveFromActiveProposalQueue ¶
func (keeper Keeper) RemoveFromActiveProposalQueue(ctx sdk.Context, endTime time.Time, proposalID uint64)
removes a proposalID from the Active Proposal Queue
func (Keeper) RemoveFromInactiveProposalQueue ¶
func (keeper Keeper) RemoveFromInactiveProposalQueue(ctx sdk.Context, endTime time.Time, proposalID uint64)
removes a proposalID from the Inactive Proposal Queue
func (Keeper) SetProposal ¶
func (keeper Keeper) SetProposal(ctx sdk.Context, proposal ProposalContent)
Implements sdk.AccountKeeper.
func (Keeper) SetValidatorSet ¶
func (Keeper) SubmitProposal ¶
func (keeper Keeper) SubmitProposal(ctx sdk.Context, content ProposalContent) (proposal ProposalContent, err sdk.Error)
Proposals
type Metrics ¶
type Metrics struct { ProposalStatus metrics.Gauge // 0:DepositPeriod 1:VotingPeriod 2:Pass 3:Reject 4:Other Vote metrics.Gauge // 0:Yes 1:No 2:NoWithVeto 3:Abstain Param metrics.Gauge }
func NopMetrics ¶
func NopMetrics() *Metrics
func PrometheusMetrics ¶
func PrometheusMetrics(config *cfg.InstrumentationConfig) *Metrics
PrometheusMetrics returns Metrics build using Prometheus client library.
type MsgDeposit ¶
type MsgDeposit struct { ProposalID uint64 `json:"proposal_id"` // ID of the proposal Depositor sdk.AccAddress `json:"depositor"` // Address of the depositor Amount sdk.Coins `json:"amount"` // Coins to add to the proposal's deposit }
MsgDeposit
func NewMsgDeposit ¶
func NewMsgDeposit(depositor sdk.AccAddress, proposalID uint64, amount sdk.Coins) MsgDeposit
func (MsgDeposit) String ¶
func (msg MsgDeposit) String() string
func (MsgDeposit) Type ¶
func (msg MsgDeposit) Type() string
type MsgSubmitProposal ¶
type MsgSubmitProposal struct { 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} Proposer sdk.AccAddress `json:"proposer"` // Address of the proposer InitialDeposit sdk.Coins `json:"initial_deposit"` // Initial deposit paid by sender. Must be strictly positive. }
MsgSubmitProposal
func NewMsgSubmitProposal ¶
func NewMsgSubmitProposal(title, description string, proposalType ProposalKind, proposer sdk.AccAddress, initialDeposit sdk.Coins) MsgSubmitProposal
func (MsgSubmitProposal) GetSignBytes ¶
func (msg MsgSubmitProposal) GetSignBytes() []byte
Implements Msg.
func (MsgSubmitProposal) GetSigners ¶
func (msg MsgSubmitProposal) GetSigners() []sdk.AccAddress
Implements Msg.
func (MsgSubmitProposal) String ¶
func (msg MsgSubmitProposal) String() string
func (MsgSubmitProposal) Type ¶
func (msg MsgSubmitProposal) Type() string
func (MsgSubmitProposal) ValidateBasic ¶
func (msg MsgSubmitProposal) ValidateBasic() sdk.Error
Implements Msg.
type MsgSubmitSoftwareUpgradeProposal ¶
type MsgSubmitSoftwareUpgradeProposal struct { MsgSubmitProposal Version uint64 `json:"version"` Software string `json:"software"` SwitchHeight uint64 `json:"switch_height"` Threshold sdk.Dec `json:"threshold"` }
func NewMsgSubmitSoftwareUpgradeProposal ¶
func NewMsgSubmitSoftwareUpgradeProposal(msgSubmitProposal MsgSubmitProposal, version uint64, software string, switchHeight uint64, threshold sdk.Dec) MsgSubmitSoftwareUpgradeProposal
func (MsgSubmitSoftwareUpgradeProposal) GetSignBytes ¶
func (msg MsgSubmitSoftwareUpgradeProposal) GetSignBytes() []byte
func (MsgSubmitSoftwareUpgradeProposal) ValidateBasic ¶
func (msg MsgSubmitSoftwareUpgradeProposal) ValidateBasic() sdk.Error
type MsgVote ¶
type MsgVote struct { ProposalID uint64 `json:"proposal_id"` // ID of the proposal Voter sdk.AccAddress `json:"voter"` // address of the voter Option VoteOption `json:"option"` // option from OptionSet chosen by the voter }
MsgVote
func NewMsgVote ¶
func NewMsgVote(voter sdk.AccAddress, proposalID uint64, option VoteOption) MsgVote
type Params ¶
type Params struct { VotingParams VotingParams `json:"voting_params"` TallyParams TallyParams `json:"tally_params"` DepositParams DepositParams `json:"deposit_params"` }
Params returns all of the governance params
func NewParams ¶
func NewParams(vp VotingParams, tp TallyParams, dp DepositParams) Params
type Proposal ¶
type Proposal struct { ProposalID uint64 `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} FinalTallyResult TallyResult `json:"final_tally_result"` // Result of Tallys SubmitTime time.Time `json:"submit_time"` // Time of the block where TxGovSubmitProposal was included DepositEndTime time.Time `json:"deposit_end_time"` // Time that the Proposal would expire if deposit amount isn't met TotalDeposit sdk.Coins `json:"total_deposit"` // Current deposit on this proposal. Initial value is set at InitialDeposit VotingStartTime time.Time `json:"voting_start_time"` // Time of the block where MinDeposit was reached. -1 if MinDeposit is not reached VotingEndTime time.Time `json:"voting_end_time"` // Time that the VotingPeriod for this proposal will end and votes will be tallied }
Proposal is a struct used by gov module internally embedds ProposalContent with additional fields to record the status of the proposal process
func (Proposal) GetDepositEndTime ¶
func (Proposal) GetDescription ¶
func (Proposal) GetProposalType ¶
func (tp Proposal) GetProposalType() ProposalKind
func (Proposal) GetProtocolDefinition ¶
func (tp Proposal) GetProtocolDefinition() sdk.ProtocolDefinition
func (Proposal) GetStatus ¶
func (tp Proposal) GetStatus() ProposalStatus
func (Proposal) GetSubmitTime ¶
func (Proposal) GetTallyResult ¶
func (tp Proposal) GetTallyResult() TallyResult
func (Proposal) GetTotalDeposit ¶
func (Proposal) GetVotingEndTime ¶
func (Proposal) GetVotingStartTime ¶
func (*Proposal) SetDepositEndTime ¶
func (*Proposal) SetDescription ¶
func (*Proposal) SetProposalID ¶
func (*Proposal) SetProposalType ¶
func (tp *Proposal) SetProposalType(proposalType ProposalKind)
func (*Proposal) SetProtocolDefinition ¶
func (tp *Proposal) SetProtocolDefinition(sdk.ProtocolDefinition)
func (*Proposal) SetStatus ¶
func (tp *Proposal) SetStatus(status ProposalStatus)
func (*Proposal) SetSubmitTime ¶
func (*Proposal) SetTallyResult ¶
func (tp *Proposal) SetTallyResult(tallyResult TallyResult)
func (*Proposal) SetTotalDeposit ¶
func (*Proposal) SetVotingEndTime ¶
func (*Proposal) SetVotingStartTime ¶
type ProposalContent ¶
type ProposalContent interface { GetProposalID() uint64 SetProposalID(uint64) GetTitle() string SetTitle(string) GetDescription() string SetDescription(string) GetProposalType() ProposalKind SetProposalType(ProposalKind) GetStatus() ProposalStatus SetStatus(ProposalStatus) GetTallyResult() TallyResult SetTallyResult(TallyResult) GetSubmitTime() time.Time SetSubmitTime(time.Time) GetDepositEndTime() time.Time SetDepositEndTime(time.Time) GetTotalDeposit() sdk.Coins SetTotalDeposit(sdk.Coins) GetVotingStartTime() time.Time SetVotingStartTime(time.Time) GetVotingEndTime() time.Time SetVotingEndTime(time.Time) GetProtocolDefinition() sdk.ProtocolDefinition SetProtocolDefinition(sdk.ProtocolDefinition) String() string }
ProposalContent is an interface that has title, description, and proposaltype that the governance module can use to identify them and generate human readable messages ProposalContent can have additional fields, which will handled by ProposalHandlers via type assertion, e.g. parameter change amount in ParameterChangeProposal
type ProposalKind ¶
type ProposalKind byte
Type that represents Proposal Type as a byte
const ( ProposalTypeNil ProposalKind = 0x00 ProposalTypeText ProposalKind = 0x01 ProposalTypeParameterChange ProposalKind = 0x02 ProposalTypeSoftwareUpgrade ProposalKind = 0x03 )
nolint
func ProposalTypeFromString ¶
func ProposalTypeFromString(str string) (ProposalKind, error)
String to proposalType byte. Returns 0xff if invalid.
func (ProposalKind) Format ¶
func (pt ProposalKind) Format(s fmt.State, verb rune)
For Printf / Sprintf, returns bech32 when using %s nolint: errcheck
func (ProposalKind) Marshal ¶
func (pt ProposalKind) Marshal() ([]byte, error)
Marshal needed for protobuf compatibility
func (ProposalKind) MarshalJSON ¶
func (pt ProposalKind) MarshalJSON() ([]byte, error)
Marshals to JSON using string
func (*ProposalKind) Unmarshal ¶
func (pt *ProposalKind) Unmarshal(data []byte) error
Unmarshal needed for protobuf compatibility
func (*ProposalKind) UnmarshalJSON ¶
func (pt *ProposalKind) UnmarshalJSON(data []byte) error
Unmarshals from JSON assuming Bech32 encoding
type ProposalResult ¶
type ProposalResult string
const ( PASS ProposalResult = "pass" REJECT ProposalResult = "reject" REJECTVETO ProposalResult = "reject-veto" )
type ProposalStatus ¶
type ProposalStatus byte
Type that represents Proposal Status as a byte
const ( StatusNil ProposalStatus = 0x00 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 ¶
func (status ProposalStatus) Format(s fmt.State, verb rune)
For Printf / Sprintf, returns bech32 when using %s nolint: errcheck
func (ProposalStatus) Marshal ¶
func (status ProposalStatus) Marshal() ([]byte, error)
Marshal needed for protobuf compatibility
func (ProposalStatus) MarshalJSON ¶
func (status ProposalStatus) MarshalJSON() ([]byte, error)
Marshals to JSON using string
func (ProposalStatus) String ¶
func (status ProposalStatus) String() string
Turns VoteStatus byte to String
func (*ProposalStatus) Unmarshal ¶
func (status *ProposalStatus) Unmarshal(data []byte) error
Unmarshal needed for protobuf compatibility
func (*ProposalStatus) UnmarshalJSON ¶
func (status *ProposalStatus) UnmarshalJSON(data []byte) error
Unmarshals from JSON assuming Bech32 encoding
type QueryDepositParams ¶
type QueryDepositParams struct { ProposalID uint64 Depositor sdk.AccAddress }
Params for query 'custom/gov/deposit'
func NewQueryDepositParams ¶
func NewQueryDepositParams(proposalID uint64, depositor sdk.AccAddress) QueryDepositParams
creates a new instance of QueryDepositParams
type QueryProposalParams ¶
type QueryProposalParams struct {
ProposalID uint64
}
Params for queries: - 'custom/gov/proposal' - 'custom/gov/deposits' - 'custom/gov/tally' - 'custom/gov/votes'
func NewQueryProposalParams ¶
func NewQueryProposalParams(proposalID uint64) QueryProposalParams
creates a new instance of QueryProposalParams
type QueryProposalsParams ¶
type QueryProposalsParams struct { Voter sdk.AccAddress Depositor sdk.AccAddress ProposalStatus ProposalStatus Limit uint64 }
Params for query 'custom/gov/proposals'
func NewQueryProposalsParams ¶
func NewQueryProposalsParams(status ProposalStatus, limit uint64, voter, depositor sdk.AccAddress) QueryProposalsParams
creates a new instance of QueryProposalsParams
type QueryVoteParams ¶
type QueryVoteParams struct { ProposalID uint64 Voter sdk.AccAddress }
Params for query 'custom/gov/vote'
func NewQueryVoteParams ¶
func NewQueryVoteParams(proposalID uint64, voter sdk.AccAddress) QueryVoteParams
creates a new instance of QueryVoteParams
type SoftwareUpgradeProposal ¶
type SoftwareUpgradeProposal struct { Proposal ProtocolDefinition sdk.ProtocolDefinition `json:"protocol_definition"` }
func (SoftwareUpgradeProposal) GetProtocolDefinition ¶
func (sp SoftwareUpgradeProposal) GetProtocolDefinition() sdk.ProtocolDefinition
func (SoftwareUpgradeProposal) ProposalType ¶
func (sp SoftwareUpgradeProposal) ProposalType() sdk.ProtocolDefinition
func (*SoftwareUpgradeProposal) SetProtocolDefinition ¶
func (sp *SoftwareUpgradeProposal) SetProtocolDefinition(upgrade sdk.ProtocolDefinition)
type TallyParams ¶
type TallyParams struct { Quorum sdk.Dec `json:"quorum"` // Minimum percentage of total stake needed to vote for a result to be considered valid Threshold sdk.Dec `json:"threshold"` // Minimum propotion of Yes votes for proposal to pass. Initial value: 0.5 Veto sdk.Dec `json:"veto"` // Minimum value of Veto votes to Total votes ratio for proposal to be vetoed. Initial value: 1/3 Penalty sdk.Dec `json:"penalty"` // Penalty if validator does not vote }
Param around Tallying votes in governance
func (TallyParams) String ¶
func (tp TallyParams) String() string
type TallyResult ¶
type TallyResult struct { Yes sdk.Int `json:"yes"` Abstain sdk.Int `json:"abstain"` No sdk.Int `json:"no"` NoWithVeto sdk.Int `json:"no_with_veto"` }
Tally Results
func NewTallyResult ¶
func NewTallyResult(yes, abstain, no, noWithVeto sdk.Int) TallyResult
func NewTallyResultFromMap ¶
func NewTallyResultFromMap(results map[VoteOption]sdk.Dec) TallyResult
func (TallyResult) Equals ¶
func (tr TallyResult) Equals(comp TallyResult) bool
checks if two proposals are equal
func (TallyResult) String ¶
func (tr TallyResult) String() string
type TextProposal ¶
type TextProposal struct { Proposal Title string `json:"title"` // Title of the proposal Description string `json:"description"` // Description of the proposal }
Text Proposals for test
func NewTextProposal ¶
func NewTextProposal(title, description string) *TextProposal
func (TextProposal) GetDescription ¶
func (tp TextProposal) GetDescription() string
func (TextProposal) ProposalType ¶
func (tp TextProposal) ProposalType() ProposalKind
type Vote ¶
type Vote struct { Voter sdk.AccAddress `json:"voter"` // address of the voter ProposalID uint64 `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 ¶
func (vo VoteOption) Format(s fmt.State, verb rune)
For Printf / Sprintf, returns bech32 when using %s nolint: errcheck
func (VoteOption) Marshal ¶
func (vo VoteOption) Marshal() ([]byte, error)
Marshal needed for protobuf compatibility
func (VoteOption) MarshalJSON ¶
func (vo VoteOption) MarshalJSON() ([]byte, error)
Marshals to JSON using string
func (*VoteOption) Unmarshal ¶
func (vo *VoteOption) Unmarshal(data []byte) error
Unmarshal needed for protobuf compatibility
func (*VoteOption) UnmarshalJSON ¶
func (vo *VoteOption) UnmarshalJSON(data []byte) error
Unmarshals from JSON assuming Bech32 encoding
type VoteWithMetadata ¶
VoteWithMetadata (just for genesis)
type VotingParams ¶
type VotingParams struct {
VotingPeriod time.Duration `json:"voting_period"` // Length of the voting period.
}
Param around Voting in governance
func (VotingParams) String ¶
func (vp VotingParams) String() string