Documentation ¶
Index ¶
- Constants
- func RegisterCodec(cdc *codec.Codec)
- type AllowedAssetParam
- type AllowedAssetParams
- type AllowedCollateralParam
- type AllowedCollateralParams
- type AllowedDebtParam
- type AllowedMarket
- type AllowedMarkets
- type AllowedParam
- type AllowedParams
- type Committee
- type GenesisState
- type GodPermission
- type ParamKeeper
- type Permission
- type Proposal
- type PubProposal
- type SimpleParamChangePermission
- type SoftwareUpgradePermission
- type SubParamChangePermission
- type TextPermission
- type Vote
Constants ¶
const ( MaxCommitteeDescriptionLength int = 512 ModuleName = "committee" )
const DefaultNextProposalID uint64 = 1
DefaultNextProposalID is the starting point for proposal IDs.
Variables ¶
This section is empty.
Functions ¶
func RegisterCodec ¶ added in v0.13.0
Types ¶
type AllowedAssetParam ¶
type AllowedAssetParam struct { Denom string `json:"denom" yaml:"denom"` CoinID bool `json:"coin_id" yaml:"coin_id"` Limit bool `json:"limit" yaml:"limit"` Active bool `json:"active" yaml:"active"` MaxSwapAmount bool `json:"max_swap_amount" yaml:"max_swap_amount"` MinBlockLock bool `json:"min_block_lock" yaml:"min_block_lock"` }
AllowedAssetParam bep3 asset parameters that can be changed by committee
func (AllowedAssetParam) Allows ¶
func (aap AllowedAssetParam) Allows(current, incoming bep3types.AssetParam) bool
Allows bep3 AssetParam parameters than can be changed by committee
type AllowedAssetParams ¶
type AllowedAssetParams []AllowedAssetParam
func (AllowedAssetParams) Allows ¶
func (aaps AllowedAssetParams) Allows(current, incoming bep3types.AssetParams) bool
Allows implement permission interface
type AllowedCollateralParam ¶
type AllowedCollateralParam struct { Type string `json:"type" yaml:"type"` Denom bool `json:"denom" yaml:"denom"` LiquidationRatio bool `json:"liquidation_ratio" yaml:"liquidation_ratio"` DebtLimit bool `json:"debt_limit" yaml:"debt_limit"` StabilityFee bool `json:"stability_fee" yaml:"stability_fee"` AuctionSize bool `json:"auction_size" yaml:"auction_size"` LiquidationPenalty bool `json:"liquidation_penalty" yaml:"liquidation_penalty"` Prefix bool `json:"prefix" yaml:"prefix"` SpotMarketID bool `json:"spot_market_id" yaml:"spot_market_id"` LiquidationMarketID bool `json:"liquidation_market_id" yaml:"liquidation_market_id"` ConversionFactor bool `json:"conversion_factor" yaml:"conversion_factor"` }
AllowedCollateralParam cdp.CollateralParam fields that can be subject to committee governance
func NewAllowedCollateralParam ¶ added in v0.13.0
func NewAllowedCollateralParam( ctype string, denom, liqRatio, debtLimit, stabilityFee, auctionSize, liquidationPenalty, prefix, spotMarket, liquidationMarket, conversionFactor bool) AllowedCollateralParam
NewAllowedCollateralParam return a new AllowedCollateralParam
func (AllowedCollateralParam) Allows ¶
func (acp AllowedCollateralParam) Allows(current, incoming cdptypes.CollateralParam) bool
type AllowedCollateralParams ¶
type AllowedCollateralParams []AllowedCollateralParam
func (AllowedCollateralParams) Allows ¶
func (acps AllowedCollateralParams) Allows(current, incoming cdptypes.CollateralParams) bool
type AllowedDebtParam ¶
type AllowedDebtParam struct { Denom bool `json:"denom" yaml:"denom"` ReferenceAsset bool `json:"reference_asset" yaml:"reference_asset"` ConversionFactor bool `json:"conversion_factor" yaml:"conversion_factor"` DebtFloor bool `json:"debt_floor" yaml:"debt_floor"` SavingsRate bool `json:"savings_rate" yaml:"savings_rate"` }
type AllowedMarket ¶
type AllowedMarket struct { MarketID string `json:"market_id" yaml:"market_id"` BaseAsset bool `json:"base_asset" yaml:"base_asset"` QuoteAsset bool `json:"quote_asset" yaml:"quote_asset"` Oracles bool `json:"oracles" yaml:"oracles"` Active bool `json:"active" yaml:"active"` }
func (AllowedMarket) Allows ¶
func (am AllowedMarket) Allows(current, incoming pricefeedtypes.Market) bool
type AllowedMarkets ¶
type AllowedMarkets []AllowedMarket
func (AllowedMarkets) Allows ¶
func (ams AllowedMarkets) Allows(current, incoming pricefeedtypes.Markets) bool
type AllowedParam ¶
type AllowedParams ¶
type AllowedParams []AllowedParam
func (AllowedParams) Contains ¶
func (allowed AllowedParams) Contains(paramChange paramstypes.ParamChange) bool
type Committee ¶
type Committee struct { ID uint64 `json:"id" yaml:"id"` Description string `json:"description" yaml:"description"` Members []sdk.AccAddress `json:"members" yaml:"members"` Permissions []Permission `json:"permissions" yaml:"permissions"` VoteThreshold sdk.Dec `json:"vote_threshold" yaml:"vote_threshold"` // Smallest percentage of members that must vote for a proposal to pass. ProposalDuration time.Duration `json:"proposal_duration" yaml:"proposal_duration"` // The length of time a proposal remains active for. Proposals will close earlier if they get enough votes. }
A Committee is a collection of addresses that are allowed to vote and enact any governance proposal that passes their permissions.
func NewCommittee ¶
func NewCommittee(id uint64, description string, members []sdk.AccAddress, permissions []Permission, threshold sdk.Dec, duration time.Duration) Committee
func (Committee) HasPermissionsFor ¶
func (c Committee) HasPermissionsFor(ctx sdk.Context, appCdc *codec.Codec, pk ParamKeeper, proposal PubProposal) bool
HasPermissionsFor returns whether the committee is authorized to enact a proposal. As long as one permission allows the proposal then it goes through. Its the OR of all permissions.
type GenesisState ¶
type GenesisState struct { NextProposalID uint64 `json:"next_proposal_id" yaml:"next_proposal_id"` Committees []Committee `json:"committees" yaml:"committees"` Proposals []Proposal `json:"proposals" yaml:"proposals"` Votes []Vote `json:"votes" yaml:"votes"` }
GenesisState is state that must be provided at chain genesis.
func DefaultGenesisState ¶
func DefaultGenesisState() GenesisState
DefaultGenesisState returns the default genesis state for the module.
func NewGenesisState ¶
func NewGenesisState(nextProposalID uint64, committees []Committee, proposals []Proposal, votes []Vote) GenesisState
NewGenesisState returns a new genesis state object for the module.
func (GenesisState) Validate ¶
func (gs GenesisState) Validate() error
Validate performs basic validation of genesis data.
type GodPermission ¶
type GodPermission struct{}
GodPermission allows any governance proposal. It is used mainly for testing.
func (GodPermission) Allows ¶
func (GodPermission) Allows(sdk.Context, *codec.Codec, ParamKeeper, PubProposal) bool
func (GodPermission) MarshalYAML ¶
func (GodPermission) MarshalYAML() (interface{}, error)
type Permission ¶
type Permission interface {
Allows(sdk.Context, *codec.Codec, ParamKeeper, PubProposal) bool
}
Permission is anything with a method that validates whether a proposal is allowed by it or not.
type Proposal ¶
type Proposal struct { PubProposal `json:"pub_proposal" yaml:"pub_proposal"` ID uint64 `json:"id" yaml:"id"` CommitteeID uint64 `json:"committee_id" yaml:"committee_id"` Deadline time.Time `json:"deadline" yaml:"deadline"` }
Proposal is an internal record of a governance proposal submitted to a committee.
func NewProposal ¶
func (Proposal) HasExpiredBy ¶
HasExpiredBy calculates if the proposal will have expired by a certain time. All votes must be cast before deadline, those cast at time == deadline are not valid
type PubProposal ¶
PubProposal is the interface that all proposals must fulfill to be submitted to a committee. Proposal types can be created external to this module. For example a ParamChangeProposal, or CommunityPoolSpendProposal. It is pinned to the equivalent type in the gov module to create compatibility between proposal types.
type SimpleParamChangePermission ¶
type SimpleParamChangePermission struct {
AllowedParams AllowedParams `json:"allowed_params" yaml:"allowed_params"`
}
SimpleParamChangePermission only allows changes to certain params
func (SimpleParamChangePermission) Allows ¶
func (perm SimpleParamChangePermission) Allows(_ sdk.Context, _ *codec.Codec, _ ParamKeeper, p PubProposal) bool
func (SimpleParamChangePermission) MarshalYAML ¶
func (perm SimpleParamChangePermission) MarshalYAML() (interface{}, error)
type SoftwareUpgradePermission ¶
type SoftwareUpgradePermission struct{}
func (SoftwareUpgradePermission) Allows ¶
func (SoftwareUpgradePermission) Allows(_ sdk.Context, _ *codec.Codec, _ ParamKeeper, p PubProposal) bool
func (SoftwareUpgradePermission) MarshalYAML ¶
func (SoftwareUpgradePermission) MarshalYAML() (interface{}, error)
type SubParamChangePermission ¶
type SubParamChangePermission struct { AllowedParams AllowedParams `json:"allowed_params" yaml:"allowed_params"` AllowedCollateralParams AllowedCollateralParams `json:"allowed_collateral_params" yaml:"allowed_collateral_params"` AllowedDebtParam AllowedDebtParam `json:"allowed_debt_param" yaml:"allowed_debt_param"` AllowedAssetParams AllowedAssetParams `json:"allowed_asset_params" yaml:"allowed_asset_params"` AllowedMarkets AllowedMarkets `json:"allowed_markets" yaml:"allowed_markets"` }
ParamChangeProposal only allows changes to certain params
func (SubParamChangePermission) Allows ¶
func (perm SubParamChangePermission) Allows(ctx sdk.Context, appCdc *codec.Codec, pk ParamKeeper, p PubProposal) bool
func (SubParamChangePermission) MarshalYAML ¶
func (perm SubParamChangePermission) MarshalYAML() (interface{}, error)
type TextPermission ¶
type TextPermission struct{}
TextPermission allows any text governance proposal.
func (TextPermission) Allows ¶
func (TextPermission) Allows(_ sdk.Context, _ *codec.Codec, _ ParamKeeper, p PubProposal) bool
func (TextPermission) MarshalYAML ¶
func (TextPermission) MarshalYAML() (interface{}, error)