v0_9

package
v0.11.1 Latest Latest
Warning

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

Go to latest
Published: Oct 19, 2020 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MaxCommitteeDescriptionLength int = 512
	ModuleName                        = "committee"
)
View Source
const DefaultNextProposalID uint64 = 1

DefaultNextProposalID is the starting poiint for proposal IDs.

Variables

This section is empty.

Functions

func RegisterCodec

func RegisterCodec(cdc *codec.Codec)

RegisterCodec registers the necessary types for the module

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"`
}

func (AllowedAssetParam) Allows

func (aap AllowedAssetParam) Allows(current, incoming bep3types.AssetParam) bool

type AllowedAssetParams

type AllowedAssetParams []AllowedAssetParam

func (AllowedAssetParams) Allows

func (aaps AllowedAssetParams) Allows(current, incoming bep3types.AssetParams) bool

type AllowedCollateralParam

type AllowedCollateralParam struct {
	Denom               string `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"`
}

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"`
}

func (AllowedDebtParam) Allows

func (adp AllowedDebtParam) Allows(current, incoming cdptypes.DebtParam) bool

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 AllowedParam struct {
	Subspace string `json:"subspace" yaml:"subspace"`
	Key      string `json:"key" yaml:"key"`
}

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) HasMember

func (c Committee) HasMember(addr sdk.AccAddress) bool

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.

func (Committee) Validate

func (c Committee) Validate() error

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) MarshalYAML

func (GodPermission) MarshalYAML() (interface{}, error)

type ParamKeeper

type ParamKeeper interface {
	GetSubspace(string) (params.Subspace, bool)
}

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 NewProposal(pubProposal PubProposal, id uint64, committeeID uint64, deadline time.Time) Proposal

func (Proposal) HasExpiredBy

func (p Proposal) HasExpiredBy(time time.Time) bool

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

func (Proposal) String

func (p Proposal) String() string

String implements the fmt.Stringer interface, and importantly overrides the String methods inherited from the embedded PubProposal type.

type PubProposal

type PubProposal govtypes.Content

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 (SimpleParamChangePermission) MarshalYAML

func (perm SimpleParamChangePermission) MarshalYAML() (interface{}, error)

type SoftwareUpgradePermission

type SoftwareUpgradePermission struct{}

func (SoftwareUpgradePermission) Allows

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) MarshalYAML

func (TextPermission) MarshalYAML() (interface{}, error)

type Vote

type Vote struct {
	ProposalID uint64         `json:"proposal_id" yaml:"proposal_id"`
	Voter      sdk.AccAddress `json:"voter" yaml:"voter"`
}

func NewVote

func NewVote(proposalID uint64, voter sdk.AccAddress) Vote

func (Vote) Validate

func (v Vote) Validate() error

Jump to

Keyboard shortcuts

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