gov

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Mar 21, 2025 License: Apache-2.0 Imports: 16 Imported by: 3

Documentation

Index

Constants

View Source
const (
	// ErrDifferentOrigin is raised when the origin address is not the same as the voter address.
	ErrDifferentOrigin = "tx origin address %s does not match the voter address %s"
	// ErrInvalidVoter is raised when the voter address is not valid.
	ErrInvalidVoter = "invalid voter address: %s"
	// ErrInvalidProposalID invalid proposal id.
	ErrInvalidProposalID = "invalid proposal id %d "
	// ErrInvalidPageRequest invalid page request.
	ErrInvalidPageRequest = "invalid page request"
	// ErrInvalidOption invalid option.
	ErrInvalidOption = "invalid option %s "
	// ErrInvalidMetadata invalid metadata.
	ErrInvalidMetadata = "invalid metadata %s "
	// ErrInvalidWeightedVoteOptions invalid weighted vote options.
	ErrInvalidWeightedVoteOptions = "invalid weighted vote options %s "
	// ErrInvalidWeightedVoteOption invalid weighted vote option.
	ErrInvalidWeightedVoteOption = "invalid weighted vote option %s "
	// ErrInvalidWeightedVoteOptionType invalid weighted vote option type.
	ErrInvalidWeightedVoteOptionType = "invalid weighted vote option type %s "
	// ErrInvalidWeightedVoteOptionWeight invalid weighted vote option weight.
	ErrInvalidWeightedVoteOptionWeight = "invalid weighted vote option weight %s "
	// ErrInvalidDepositor invalid depositor.
	ErrInvalidDepositor = "invalid depositor %s "
)
View Source
const (
	// EventTypeVote defines the event type for the gov VoteMethod transaction.
	EventTypeVote = "Vote"
	// EventTypeVoteWeighted defines the event type for the gov VoteWeightedMethod transaction.
	EventTypeVoteWeighted = "VoteWeighted"
)
View Source
const (
	// GetVotesMethod defines the method name for the votes precompile request.
	GetVotesMethod = "getVotes"
	// GetVoteMethod defines the method name for the vote precompile request.
	GetVoteMethod = "getVote"
	// GetDepositMethod defines the method name for the deposit precompile request.
	GetDepositMethod = "getDeposit"
	// GetDepositsMethod defines the method name for the deposits precompile request.
	GetDepositsMethod = "getDeposits"
	// GetTallyResultMethod defines the method name for the tally result precompile request.
	GetTallyResultMethod = "getTallyResult"
	// GetProposalMethod defines the method name for the proposal precompile request.
	GetProposalMethod = "getProposal"
	// GetProposalsMethod defines the method name for the proposals precompile request.
	GetProposalsMethod = "getProposals"
	// GetParamsMethod defines the method name for the get params precompile request.
	GetParamsMethod = "getParams"
)
View Source
const (
	// VoteMethod defines the ABI method name for the gov Vote transaction.
	VoteMethod = "vote"
	// VoteWeightedMethod defines the ABI method name for the gov VoteWeighted transaction.
	VoteWeightedMethod = "voteWeighted"
)

Variables

This section is empty.

Functions

func BuildQueryParamsRequest

func BuildQueryParamsRequest(args []interface{}) (*govv1.QueryParamsRequest, error)

BuildQueryParamsRequest returns the structure for the governance parameters query.

func LoadABI

func LoadABI() (abi.ABI, error)

LoadABI loads the gov ABI from the embedded abi.json file for the gov precompile.

func NewMsgVote

func NewMsgVote(args []interface{}) (*govv1.MsgVote, common.Address, error)

NewMsgVote creates a new MsgVote instance.

func ParseDepositArgs

func ParseDepositArgs(args []interface{}) (*govv1.QueryDepositRequest, error)

ParseDepositArgs parses the arguments for the Deposit query.

func ParseDepositsArgs

func ParseDepositsArgs(method *abi.Method, args []interface{}) (*govv1.QueryDepositsRequest, error)

ParseDepositsArgs parses the arguments for the Deposits query.

func ParseProposalArgs

func ParseProposalArgs(args []interface{}) (*govv1.QueryProposalRequest, error)

ParseProposalArgs parses the arguments for the Proposal query

func ParseProposalsArgs

func ParseProposalsArgs(method *abi.Method, args []interface{}) (*govv1.QueryProposalsRequest, error)

ParseProposalsArgs parses the arguments for the Proposals query

func ParseTallyResultArgs

func ParseTallyResultArgs(args []interface{}) (*govv1.QueryTallyResultRequest, error)

ParseTallyResultArgs parses the arguments for the TallyResult query.

func ParseVoteArgs

func ParseVoteArgs(args []interface{}) (*govv1.QueryVoteRequest, error)

ParseVoteArgs parses the arguments for the Votes query.

func ParseVotesArgs

func ParseVotesArgs(method *abi.Method, args []interface{}) (*govv1.QueryVotesRequest, error)

ParseVotesArgs parses the arguments for the Votes query.

Types

type DepositData

type DepositData struct {
	ProposalId uint64         `abi:"proposalId"` //nolint:revive,stylecheck
	Depositor  common.Address `abi:"depositor"`
	Amount     []cmn.Coin     `abi:"amount"`
}

DepositData represents information about a deposit on a proposal

type DepositInput

type DepositInput struct {
	ProposalId uint64 //nolint:revive,stylecheck
	Depositor  common.Address
}

DepositInput defines the input for the Deposit query.

type DepositOutput

type DepositOutput struct {
	Deposit DepositData
}

DepositOutput defines the output for the Deposit query.

func (*DepositOutput) FromResponse

func (do *DepositOutput) FromResponse(res *govv1.QueryDepositResponse) *DepositOutput

type DepositsInput

type DepositsInput struct {
	ProposalId uint64 //nolint:revive,stylecheck
	Pagination query.PageRequest
}

DepositsInput defines the input for the Deposits query.

type DepositsOutput

type DepositsOutput struct {
	Deposits     []DepositData      `abi:"deposits"`
	PageResponse query.PageResponse `abi:"pageResponse"`
}

DepositsOutput defines the output for the Deposits query.

func (*DepositsOutput) FromResponse

func (do *DepositsOutput) FromResponse(res *govv1.QueryDepositsResponse) *DepositsOutput

type EventVote

type EventVote struct {
	Voter      common.Address
	ProposalId uint64 //nolint:revive,stylecheck
	Option     uint8
}

EventVote defines the event data for the Vote transaction.

type EventVoteWeighted

type EventVoteWeighted struct {
	Voter      common.Address
	ProposalId uint64 //nolint:revive,stylecheck
	Options    WeightedVoteOptions
}

EventVoteWeighted defines the event data for the VoteWeighted transaction.

type ParamsOutput

type ParamsOutput struct {
	VotingPeriod               int64      `abi:"votingPeriod"`
	MinDeposit                 []cmn.Coin `abi:"minDeposit"`
	MaxDepositPeriod           int64      `abi:"maxDepositPeriod"`
	Quorum                     string     `abi:"quorum"`
	Threshold                  string     `abi:"threshold"`
	VetoThreshold              string     `abi:"vetoThreshold"`
	MinInitialDepositRatio     string     `abi:"minInitialDepositRatio"`
	ProposalCancelRatio        string     `abi:"proposalCancelRatio"`
	ProposalCancelDest         string     `abi:"proposalCancelDest"`
	ExpeditedVotingPeriod      int64      `abi:"expeditedVotingPeriod"`
	ExpeditedThreshold         string     `abi:"expeditedThreshold"`
	ExpeditedMinDeposit        []cmn.Coin `abi:"expeditedMinDeposit"`
	BurnVoteQuorum             bool       `abi:"burnVoteQuorum"`
	BurnProposalDepositPrevote bool       `abi:"burnProposalDepositPrevote"`
	BurnVoteVeto               bool       `abi:"burnVoteVeto"`
	MinDepositRatio            string     `abi:"minDepositRatio"`
}

ParamsOutput contains the output data for the governance parameters query

func (*ParamsOutput) FromResponse

func (o *ParamsOutput) FromResponse(res *govv1.QueryParamsResponse) *ParamsOutput

FromResponse populates the ParamsOutput from a query response

type Precompile

type Precompile struct {
	cmn.Precompile
	// contains filtered or unexported fields
}

Precompile defines the precompiled contract for gov.

func NewPrecompile

func NewPrecompile(
	govKeeper govkeeper.Keeper,
	authzKeeper authzkeeper.Keeper,
) (*Precompile, error)

NewPrecompile creates a new gov Precompile instance as a PrecompiledContract interface.

func (Precompile) EmitVoteEvent

func (p Precompile) EmitVoteEvent(ctx sdk.Context, stateDB vm.StateDB, voterAddress common.Address, proposalID uint64, option int32) error

EmitVoteEvent creates a new event emitted on a Vote transaction.

func (Precompile) EmitVoteWeightedEvent

func (p Precompile) EmitVoteWeightedEvent(ctx sdk.Context, stateDB vm.StateDB, voterAddress common.Address, proposalID uint64, options WeightedVoteOptions) error

EmitVoteWeightedEvent creates a new event emitted on a VoteWeighted transaction.

func (*Precompile) GetDeposit

func (p *Precompile) GetDeposit(
	ctx sdk.Context,
	method *abi.Method,
	_ *vm.Contract,
	args []interface{},
) ([]byte, error)

GetDeposit implements the query logic for getting a deposit for a proposal.

func (*Precompile) GetDeposits

func (p *Precompile) GetDeposits(
	ctx sdk.Context,
	method *abi.Method,
	_ *vm.Contract,
	args []interface{},
) ([]byte, error)

GetDeposits implements the query logic for getting all deposits for a proposal.

func (*Precompile) GetParams

func (p *Precompile) GetParams(
	ctx sdk.Context,
	method *abi.Method,
	_ *vm.Contract,
	args []interface{},
) ([]byte, error)

GetParams implements the query logic for getting governance parameters

func (*Precompile) GetProposal

func (p *Precompile) GetProposal(
	ctx sdk.Context,
	method *abi.Method,
	_ *vm.Contract,
	args []interface{},
) ([]byte, error)

GetProposal implements the query logic for getting a proposal

func (*Precompile) GetProposals

func (p *Precompile) GetProposals(
	ctx sdk.Context,
	method *abi.Method,
	_ *vm.Contract,
	args []interface{},
) ([]byte, error)

GetProposals implements the query logic for getting proposals

func (*Precompile) GetTallyResult

func (p *Precompile) GetTallyResult(
	ctx sdk.Context,
	method *abi.Method,
	_ *vm.Contract,
	args []interface{},
) ([]byte, error)

GetTallyResult implements the query logic for getting the tally result of a proposal.

func (*Precompile) GetVote

func (p *Precompile) GetVote(
	ctx sdk.Context,
	method *abi.Method,
	_ *vm.Contract,
	args []interface{},
) ([]byte, error)

GetVote implements the query logic for getting votes for a proposal.

func (*Precompile) GetVotes

func (p *Precompile) GetVotes(
	ctx sdk.Context,
	method *abi.Method,
	_ *vm.Contract,
	args []interface{},
) ([]byte, error)

GetVotes implements the query logic for getting votes for a proposal.

func (Precompile) IsTransaction

func (Precompile) IsTransaction(method *abi.Method) bool

IsTransaction checks if the given method name corresponds to a transaction or query.

func (Precompile) Logger

func (p Precompile) Logger(ctx sdk.Context) log.Logger

Logger returns a precompile-specific logger.

func (Precompile) RequiredGas

func (p Precompile) RequiredGas(input []byte) uint64

RequiredGas calculates the precompiled contract's base gas rate.

func (Precompile) Run

func (p Precompile) Run(evm *vm.EVM, contract *vm.Contract, readOnly bool) (bz []byte, err error)

Run executes the precompiled contract gov methods defined in the ABI.

func (Precompile) Vote

func (p Precompile) Vote(
	ctx sdk.Context,
	origin common.Address,
	contract *vm.Contract,
	stateDB vm.StateDB,
	method *abi.Method,
	args []interface{},
) ([]byte, error)

Vote defines a method to add a vote on a specific proposal.

func (Precompile) VoteWeighted

func (p Precompile) VoteWeighted(
	ctx sdk.Context,
	origin common.Address,
	contract *vm.Contract,
	stateDB vm.StateDB,
	method *abi.Method,
	args []interface{},
) ([]byte, error)

VoteWeighted defines a method to add a vote on a specific proposal.

type ProposalData

type ProposalData struct {
	Id               uint64          `abi:"id"` //nolint
	Messages         []string        `abi:"messages"`
	Status           uint32          `abi:"status"`
	FinalTallyResult TallyResultData `abi:"finalTallyResult"`
	SubmitTime       uint64          `abi:"submitTime"`
	DepositEndTime   uint64          `abi:"depositEndTime"`
	TotalDeposit     []cmn.Coin      `abi:"totalDeposit"`
	VotingStartTime  uint64          `abi:"votingStartTime"`
	VotingEndTime    uint64          `abi:"votingEndTime"`
	Metadata         string          `abi:"metadata"`
	Title            string          `abi:"title"`
	Summary          string          `abi:"summary"`
	Proposer         common.Address  `abi:"proposer"`
}

ProposalData represents a governance proposal

type ProposalOutput

type ProposalOutput struct {
	Proposal ProposalData
}

ProposalOutput defines the output for the Proposal query

func (*ProposalOutput) FromResponse

func (po *ProposalOutput) FromResponse(res *govv1.QueryProposalResponse) *ProposalOutput

type ProposalsInput

type ProposalsInput struct {
	ProposalStatus uint32
	Voter          common.Address
	Depositor      common.Address
	Pagination     query.PageRequest
}

ProposalsInput defines the input for the Proposals query

type ProposalsOutput

type ProposalsOutput struct {
	Proposals    []ProposalData
	PageResponse query.PageResponse
}

ProposalsOutput defines the output for the Proposals query

func (*ProposalsOutput) FromResponse

type TallyResultData

type TallyResultData struct {
	Yes        string
	Abstain    string
	No         string
	NoWithVeto string
}

TallyResultData represents the tally result of a proposal

type TallyResultOutput

type TallyResultOutput struct {
	TallyResult TallyResultData
}

TallyResultOutput defines the output for the TallyResult query.

func (*TallyResultOutput) FromResponse

type VoteOutput

type VoteOutput struct {
	Vote WeightedVote
}

VoteOutput is the output response returned by the vote query method.

func (*VoteOutput) FromResponse

func (vo *VoteOutput) FromResponse(res *govv1.QueryVoteResponse) *VoteOutput

type VotesInput

type VotesInput struct {
	ProposalId uint64 //nolint:revive,stylecheck
	Pagination query.PageRequest
}

VotesInput defines the input for the Votes query.

type VotesOutput

type VotesOutput struct {
	Votes        []WeightedVote
	PageResponse query.PageResponse
}

VotesOutput defines the output for the Votes query.

func (*VotesOutput) FromResponse

func (vo *VotesOutput) FromResponse(res *govv1.QueryVotesResponse) *VotesOutput

type WeightedVote

type WeightedVote struct {
	ProposalId uint64 //nolint:revive,stylecheck
	Voter      common.Address
	Options    []WeightedVoteOption
	Metadata   string
}

WeightedVote defines a struct of vote for vote split.

type WeightedVoteOption

type WeightedVoteOption struct {
	Option uint8
	Weight string
}

WeightedVoteOption defines a unit of vote for vote split.

type WeightedVoteOptions

type WeightedVoteOptions []WeightedVoteOption

WeightedVoteOptions defines a slice of WeightedVoteOption.

func NewMsgVoteWeighted

func NewMsgVoteWeighted(method *abi.Method, args []interface{}) (*govv1.MsgVoteWeighted, common.Address, WeightedVoteOptions, error)

NewMsgVoteWeighted creates a new MsgVoteWeighted instance.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL
JackTT - Gopher 🇻🇳