Documentation
¶
Overview ¶
Package api implements the governance APIs.
Index ¶
- Constants
- type CancelUpgradeProposal
- type ChangeParametersProposal
- type ConsensusParameterChanges
- type ConsensusParameters
- type Event
- type Genesis
- type Proposal
- type ProposalContent
- type ProposalExecutedEvent
- type ProposalFinalizedEvent
- type ProposalQuery
- type ProposalState
- type ProposalSubmittedEvent
- type ProposalVote
- type UpgradeProposal
- type Vote
- type VoteEntry
- type VoteEvent
Constants ¶
const ( // GasOpSubmitProposal is the gas operation identifier for submitting proposal. GasOpSubmitProposal transaction.Op = "submit_proposal" // GasOpCastVote is the gas operation identifier for casting vote. GasOpCastVote transaction.Op = "cast_vote" )
const ( StateActive ProposalState = 1 StatePassed ProposalState = 2 StateRejected ProposalState = 3 StateFailed ProposalState = 4 StateActiveName = "active" StatePassedName = "passed" StateRejectedName = "rejected" StateFailedName = "failed" )
Proposal state kinds.
const ( VoteYes Vote = 1 VoteNo Vote = 2 VoteAbstain Vote = 3 VoteYesName = "yes" VoteNoName = "no" VoteAbstainName = "abstain" )
Vote kinds.
const ModuleName = "governance"
ModuleName is a unique module name for the governance backend.
const ProposalContentInvalidText = "(invalid)"
ProposalContentInvalidText is the textual representation of an invalid ProposalContent.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CancelUpgradeProposal ¶
type CancelUpgradeProposal struct {
// ProposalID is the identifier of the pending upgrade proposal.
ProposalID uint64 `json:"proposal_id"`
}
CancelUpgradeProposal is an upgrade cancellation proposal.
type ChangeParametersProposal ¶
type ChangeParametersProposal struct {
// Module identifies the consensus backend module to which changes should be applied.
Module string `json:"module"`
// Changes are consensus parameter changes that should be applied to the module.
Changes cbor.RawMessage `json:"changes"`
}
ChangeParametersProposal is a consensus change parameters proposal.
type ConsensusParameterChanges ¶
type ConsensusParameterChanges struct {
// GasCosts are the new gas costs.
GasCosts transaction.Costs `json:"gas_costs,omitempty"`
// MinProposalDeposit is the new minimal proposal deposit.
MinProposalDeposit *quantity.Quantity `json:"min_proposal_deposit,omitempty"`
// VotingPeriod is the new voting period.
VotingPeriod *beacon.EpochTime `json:"voting_period,omitempty"`
// StakeThreshold is the new stake threshold.
StakeThreshold *uint8 `json:"stake_threshold,omitempty"`
// UpgradeMinEpochDiff is the new minimal epoch difference between two pending upgrades.
UpgradeMinEpochDiff *beacon.EpochTime `json:"upgrade_min_epoch_diff,omitempty"`
// UpgradeCancelMinEpochDiff is the new minimal epoch difference for the upgrade cancellation
// proposal to be valid.
UpgradeCancelMinEpochDiff *beacon.EpochTime `json:"upgrade_cancel_min_epoch_diff,omitempty"`
// EnableChangeParametersProposal is the new enable change parameters proposal flag.
EnableChangeParametersProposal *bool `json:"enable_change_parameters_proposal,omitempty"`
}
ConsensusParameterChanges are allowed governance consensus parameter changes.
type ConsensusParameters ¶
type ConsensusParameters struct {
// GasCosts are the governance transaction gas costs.
GasCosts transaction.Costs `json:"gas_costs,omitempty"`
// MinProposalDeposit is the number of base units that are deposited when
// creating a new proposal.
MinProposalDeposit quantity.Quantity `json:"min_proposal_deposit,omitempty"`
// VotingPeriod is the number of epochs after which the voting for a proposal
// is closed and the votes are tallied.
VotingPeriod beacon.EpochTime `json:"voting_period,omitempty"`
// StakeThreshold is the minimum percentage of VoteYes votes in terms
// of total voting power when the proposal expires in order for a
// proposal to be accepted. This value has a lower bound of 67.
StakeThreshold uint8 `json:"stake_threshold,omitempty"`
// UpgradeMinEpochDiff is the minimum number of epochs between the current
// epoch and the proposed upgrade epoch for the upgrade proposal to be valid.
// This is also the minimum number of epochs between two pending upgrades.
UpgradeMinEpochDiff beacon.EpochTime `json:"upgrade_min_epoch_diff,omitempty"`
// UpgradeCancelMinEpochDiff is the minimum number of epochs between the current
// epoch and the proposed upgrade epoch for the upgrade cancellation proposal to be valid.
UpgradeCancelMinEpochDiff beacon.EpochTime `json:"upgrade_cancel_min_epoch_diff,omitempty"`
// EnableChangeParametersProposal is true iff change parameters proposals are allowed.
EnableChangeParametersProposal bool `json:"enable_change_parameters_proposal,omitempty"`
}
ConsensusParameters are the governance consensus parameters.
type Event ¶
type Event struct {
Height int64 `json:"height,omitempty"`
TxHash hash.Hash `json:"tx_hash,omitempty"`
ProposalSubmitted *ProposalSubmittedEvent `json:"proposal_submitted,omitempty"`
ProposalExecuted *ProposalExecutedEvent `json:"proposal_executed,omitempty"`
ProposalFinalized *ProposalFinalizedEvent `json:"proposal_finalized,omitempty"`
Vote *VoteEvent `json:"vote,omitempty"`
}
Event signifies a governance event, returned via GetEvents.
type Genesis ¶
type Genesis struct {
// Parameters are the genesis consensus parameters.
Parameters ConsensusParameters `json:"params"`
// Proposals are the governance proposals.
Proposals []*Proposal `json:"proposals,omitempty"`
// VoteEntries are the governance proposal vote entries.
VoteEntries map[uint64][]*VoteEntry `json:"vote_entries,omitempty"`
}
Genesis is the initial governance state for use in the genesis block.
Note: PendingProposalUpgrades are not included in genesis, but are instead computed at InitChain from accepted proposals.
type Proposal ¶
type Proposal struct {
// ID is the unique identifier of the proposal.
ID uint64 `json:"id"`
// Submitter is the address of the proposal submitter.
Submitter staking.Address `json:"submitter"`
// State is the state of the proposal.
State ProposalState `json:"state"`
// Deposit is the deposit attached to the proposal.
Deposit quantity.Quantity `json:"deposit"`
// Content is the content of the proposal.
Content ProposalContent `json:"content"`
// CreatedAt is the epoch at which the proposal was created.
CreatedAt beacon.EpochTime `json:"created_at"`
// ClosesAt is the epoch at which the proposal will close and votes will
// be tallied.
ClosesAt beacon.EpochTime `json:"closes_at"`
// Results are the final tallied results after the voting period has
// ended.
Results map[Vote]quantity.Quantity `json:"results,omitempty"`
// InvalidVotes is the number of invalid votes after tallying.
InvalidVotes uint64 `json:"invalid_votes,omitempty"`
}
Proposal is a consensus upgrade proposal.
type ProposalContent ¶
type ProposalContent struct {
Upgrade *UpgradeProposal `json:"upgrade,omitempty"`
CancelUpgrade *CancelUpgradeProposal `json:"cancel_upgrade,omitempty"`
ChangeParameters *ChangeParametersProposal `json:"change_parameters,omitempty"`
}
ProposalContent is a consensus layer governance proposal content.
type ProposalExecutedEvent ¶
type ProposalExecutedEvent struct {
// ID is the unique identifier of a proposal.
ID uint64 `json:"id"`
}
ProposalExecutedEvent is emitted when a proposal is executed.
type ProposalFinalizedEvent ¶
type ProposalFinalizedEvent struct {
// ID is the unique identifier of a proposal.
ID uint64 `json:"id"`
// State is the new proposal state.
State ProposalState `json:"state"`
}
ProposalFinalizedEvent is the event emitted when a proposal is finalized.
type ProposalQuery ¶
ProposalQuery is a proposal query.
type ProposalState ¶
type ProposalState uint8
ProposalState is the state of the proposal.
func (ProposalState) MarshalText ¶
func (p ProposalState) MarshalText() ([]byte, error)
MarshalText encodes a ProposalState into text form.
func (ProposalState) String ¶
func (p ProposalState) String() string
String returns a string representation of a ProposalState.
func (*ProposalState) UnmarshalText ¶
func (p *ProposalState) UnmarshalText(text []byte) error
UnmarshalText decodes a text slice into a ProposalState.
type ProposalSubmittedEvent ¶
type ProposalSubmittedEvent struct {
// ID is the unique identifier of a proposal.
ID uint64 `json:"id"`
// Submitter is the staking account address of the submitter.
Submitter staking.Address `json:"submitter"`
}
ProposalSubmittedEvent is the event emitted when a new proposal is submitted.
type ProposalVote ¶
type ProposalVote struct {
// ID is the unique identifier of a proposal.
ID uint64 `json:"id"`
// Vote is the vote.
Vote Vote `json:"vote"`
}
ProposalVote is a vote for a proposal.
type UpgradeProposal ¶
type UpgradeProposal struct {
upgrade.Descriptor
}
UpgradeProposal is an upgrade proposal.
type Vote ¶
type Vote uint8
Vote is a governance vote.
func (Vote) MarshalText ¶
MarshalText encodes a Vote into text form.
func (*Vote) UnmarshalText ¶
UnmarshalText decodes a text slice into a Vote.
type VoteEvent ¶
type VoteEvent struct {
// ID is the unique identifier of a proposal.
ID uint64 `json:"id"`
// Submitter is the staking account address of the vote submitter.
Submitter staking.Address `json:"submitter"`
// Vote is the cast vote.
Vote Vote `json:"vote"`
}
VoteEvent is the event emitted when a vote is cast.