gov

package
v0.7.3 Latest Latest
Warning

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

Go to latest
Published: Oct 28, 2019 License: GPL-3.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ActiveVersionError = common.NewBizError(302001, "current active version not found")

	VoteOptionError = common.NewBizError(302002, "vote option error")

	ProposalTypeError = common.NewBizError(302003, "proposal type error")

	ProposalIDEmpty  = common.NewBizError(302004, "proposal ID is empty")
	ProposalIDExist  = common.NewBizError(302005, "proposal ID already exists")
	ProposalNotFound = common.NewBizError(302006, "proposal not found")

	PIPIDEmpty = common.NewBizError(302007, "PIPID is empty")
	PIPIDExist = common.NewBizError(302008, "PIPID already exists")

	EndVotingRoundsTooSmall = common.NewBizError(302009, "endVotingRounds too small")
	EndVotingRoundsTooLarge = common.NewBizError(302010, "endVotingRounds too large")

	NewVersionError               = common.NewBizError(302011, "newVersion should larger than current active version")
	VotingVersionProposalExist    = common.NewBizError(302012, "another version proposal at voting stage")
	PreActiveVersionProposalExist = common.NewBizError(302013, "another version proposal at pre-active stage")

	VotingCancelProposalExist       = common.NewBizError(302014, "another cancel proposal at voting stage")
	TobeCanceledProposalNotFound    = common.NewBizError(302015, "to be canceled proposal not found")
	TobeCanceledProposalTypeError   = common.NewBizError(302016, "to be canceled proposal not version type")
	TobeCanceledProposalNotAtVoting = common.NewBizError(302017, "to be canceled proposal not at voting stage")

	ProposerEmpty = common.NewBizError(302018, "proposer is empty")

	VerifierInfoNotFound  = common.NewBizError(302019, "verifier detail info not found")
	VerifierStatusInvalid = common.NewBizError(302020, "verifier status is invalid")

	TxSenderDifferFromStaking = common.NewBizError(302021, "Tx caller differ from staking")
	TxSenderIsNotVerifier     = common.NewBizError(302022, "Tx caller is not verifier")
	TxSenderIsNotCandidate    = common.NewBizError(302023, "Tx caller is not candidate")

	VersionSignError    = common.NewBizError(302024, "version sign error")
	VerifierNotUpgraded = common.NewBizError(302025, "verifier not upgraded")

	ProposalNotAtVoting = common.NewBizError(302026, "proposal not at voting stage")
	VoteDuplicated      = common.NewBizError(302027, "vote duplicated")

	DeclareVersionError               = common.NewBizError(302028, "declared version error")
	NotifyStakingDeclaredVersionError = common.NewBizError(302029, "notify staking declared version error")

	TallyResultNotFound = common.NewBizError(302030, "tally result not found")
)
View Source
var (
	KeyDelimiter = []byte(":")
)
View Source
var (
	ValueDelimiter = []byte(":")
)

Functions

func AccuVerifiers

func AccuVerifiers(blockHash common.Hash, proposalID common.Hash, verifierList []discover.NodeID) error

AccuVerifiers accumulates all distinct verifiers those can vote this proposal ID

func AddActiveNode

func AddActiveNode(blockHash common.Hash, proposalID common.Hash, nodeID discover.NodeID) error

Add the node that has made a new version declare or vote during voting period

func AddActiveVersion

func AddActiveVersion(activeVersion uint32, activeBlock uint64, state xcom.StateDB) error

Set active version record

func AddPIPID

func AddPIPID(pipID string, state xcom.StateDB) error

func AddVoteValue

func AddVoteValue(proposalID common.Hash, voter discover.NodeID, option VoteOption, state xcom.StateDB) error

Add the Vote detail

func AddVotingProposalID

func AddVotingProposalID(blockHash common.Hash, proposalID common.Hash) error

func ClearActiveNodes

func ClearActiveNodes(blockHash common.Hash, proposalID common.Hash) error

Clear the version declaration records after upgrade

func DeclareVersion

func DeclareVersion(from common.Address, declaredNodeID discover.NodeID, declaredVersion uint32, programVersionSign common.VersionSign, blockHash common.Hash, blockNumber uint64, stk Staking, state xcom.StateDB) error

node declares it's version

func GetActiveNodeList

func GetActiveNodeList(blockHash common.Hash, proposalID common.Hash) ([]discover.NodeID, error)

Get the node list that have made a new version declare or vote during voting period

func GetActiveVersion

func GetActiveVersion(blockNumber uint64, state xcom.StateDB) uint32

func GetCurrentActiveVersion

func GetCurrentActiveVersion(state xcom.StateDB) uint32

Get current active version record

func GetMaxEndVotingBlock

func GetMaxEndVotingBlock(nodeID discover.NodeID, blockHash common.Hash, state xcom.StateDB) (uint64, error)

GetMaxEndVotingBlock returns the max endVotingBlock of proposals those are at voting stage, and the nodeID has voted for those proposals. or returns 0 if there's no proposal at voting stage, or nodeID didn't voted for any proposal. if any error happened, return 0 and the error

func GetPreActiveProposalID

func GetPreActiveProposalID(blockHash common.Hash) (common.Hash, error)

func GetPreActiveVersion

func GetPreActiveVersion(state xcom.StateDB) uint32

Get pre-active version

func GetVersionForStaking

func GetVersionForStaking(state xcom.StateDB) uint32

func GetVotedVerifierMap

func GetVotedVerifierMap(proposalID common.Hash, state xcom.StateDB) (map[discover.NodeID]struct{}, error)

func KeyAccuVerifier

func KeyAccuVerifier(proposalID common.Hash) []byte

func KeyActiveNodes

func KeyActiveNodes(proposalID common.Hash) []byte

func KeyActiveVersions

func KeyActiveVersions() []byte

func KeyEndProposals

func KeyEndProposals() []byte

func KeyPIPIDs

func KeyPIPIDs() []byte

func KeyPreActiveProposal

func KeyPreActiveProposal() []byte

func KeyPreActiveVersion

func KeyPreActiveVersion() []byte

func KeyProposal

func KeyProposal(proposalID common.Hash) []byte

func KeyTallyResult

func KeyTallyResult(proposalID common.Hash) []byte

func KeyVote

func KeyVote(proposalID common.Hash) []byte

func KeyVotingProposals

func KeyVotingProposals() []byte

func ListAccuVerifier

func ListAccuVerifier(blockHash common.Hash, proposalID common.Hash) ([]discover.NodeID, error)

Get the total number of all voting verifiers

func ListEndProposalID

func ListEndProposalID(blockHash common.Hash) ([]common.Hash, error)

func ListPIPID

func ListPIPID(state xcom.StateDB) ([]string, error)

func ListVotingProposal

func ListVotingProposal(blockHash common.Hash) ([]common.Hash, error)

Get voting proposal

func ListVotingProposalID

func ListVotingProposalID(blockHash common.Hash) ([]common.Hash, error)

list all proposal IDs at voting stage

func MovePreActiveProposalIDToEnd

func MovePreActiveProposalIDToEnd(blockHash common.Hash, proposalID common.Hash) error

func MoveVotingProposalIDToEnd

func MoveVotingProposalIDToEnd(blockHash common.Hash, proposalID common.Hash) error

func MoveVotingProposalIDToPreActive

func MoveVotingProposalIDToPreActive(blockHash common.Hash, proposalID common.Hash) error

func NotifyPunishedVerifiers

func NotifyPunishedVerifiers(blockHash common.Hash, punishedVerifierMap map[discover.NodeID]struct{}, state xcom.StateDB) error

NotifyPunishedVerifiers receives punished verifies notification from Staking

func SetPreActiveVersion

func SetPreActiveVersion(preActiveVersion uint32, state xcom.StateDB) error

Set pre-active version

func SetProposal

func SetProposal(proposal Proposal, state xcom.StateDB) error

func SetTallyResult

func SetTallyResult(tallyResult TallyResult, state xcom.StateDB) error

func Submit

func Submit(from common.Address, proposal Proposal, blockHash common.Hash, blockNumber uint64, stk Staking, state xcom.StateDB) error

submit a proposal

func TallyVoteValue

func TallyVoteValue(proposalID common.Hash, state xcom.StateDB) (yeas, nays, abstentions uint16, e error)

TallyVoteValue statistics vote option for a proposal

func UpdateVoteValue

func UpdateVoteValue(proposalID common.Hash, voteValueList []VoteValue, state xcom.StateDB) error

func Vote

func Vote(from common.Address, vote VoteInfo, blockHash common.Hash, blockNumber uint64, programVersion uint32, programVersionSign common.VersionSign, stk Staking, state xcom.StateDB) error

vote for a proposal

Types

type ActiveVersionValue

type ActiveVersionValue struct {
	ActiveVersion uint32 `json:"ActiveVersion"`
	ActiveBlock   uint64 `json:"ActiveBlock"`
}

func ListActiveVersion

func ListActiveVersion(state xcom.StateDB) ([]ActiveVersionValue, error)

type CancelProposal

type CancelProposal struct {
	ProposalID      common.Hash
	ProposalType    ProposalType
	PIPID           string
	SubmitBlock     uint64
	EndVotingRounds uint64
	EndVotingBlock  uint64
	Proposer        discover.NodeID
	TobeCanceled    common.Hash
	Result          TallyResult `json:"-"`
}

func FindVotingCancelProposal

func FindVotingCancelProposal(blockHash common.Hash, blockNumber uint64, state xcom.StateDB) (*CancelProposal, error)

find a cancel proposal at voting stage

func (*CancelProposal) GetEndVotingBlock

func (cp *CancelProposal) GetEndVotingBlock() uint64

func (*CancelProposal) GetPIPID

func (cp *CancelProposal) GetPIPID() string

func (*CancelProposal) GetProposalID

func (cp *CancelProposal) GetProposalID() common.Hash

func (*CancelProposal) GetProposalType

func (cp *CancelProposal) GetProposalType() ProposalType

func (*CancelProposal) GetProposer

func (cp *CancelProposal) GetProposer() discover.NodeID

func (*CancelProposal) GetSubmitBlock

func (cp *CancelProposal) GetSubmitBlock() uint64

func (*CancelProposal) GetTallyResult

func (cp *CancelProposal) GetTallyResult() TallyResult

func (*CancelProposal) String

func (cp *CancelProposal) String() string

func (*CancelProposal) Verify

func (cp *CancelProposal) Verify(submitBlock uint64, blockHash common.Hash, state xcom.StateDB) error

type ParamValue

type ParamValue struct {
	Name  string `json:"Name"`
	Value string `json:"Value"`
}

type Proposal

type Proposal interface {
	GetProposalID() common.Hash
	GetProposalType() ProposalType
	GetPIPID() string
	GetSubmitBlock() uint64
	GetEndVotingBlock() uint64
	GetProposer() discover.NodeID
	GetTallyResult() TallyResult
	Verify(blockNumber uint64, blockHash common.Hash, state xcom.StateDB) error
	String() string
}

func GetExistProposal

func GetExistProposal(proposalID common.Hash, state xcom.StateDB) (Proposal, error)

func GetProposal

func GetProposal(proposalID common.Hash, state xcom.StateDB) (Proposal, error)

func GetProposalList

func GetProposalList(blockHash common.Hash, state xcom.StateDB) ([]Proposal, error)

Select proposal id list from snapshot database ,then get proposal detail from statedb one by one

func ListProposal

func ListProposal(blockHash common.Hash, state xcom.StateDB) ([]Proposal, error)

query proposal list

type ProposalStatus

type ProposalStatus uint8
const (
	Voting    ProposalStatus = 0x01
	Pass      ProposalStatus = 0x02
	Failed    ProposalStatus = 0x03
	PreActive ProposalStatus = 0x04
	Active    ProposalStatus = 0x05
	Canceled  ProposalStatus = 0x06
)

func (ProposalStatus) ToString

func (status ProposalStatus) ToString() string

type ProposalType

type ProposalType uint8
const (
	Text    ProposalType = 0x01
	Version ProposalType = 0x02
	Param   ProposalType = 0x03
	Cancel  ProposalType = 0x04
)

type Staking

type Staking interface {
	GetVerifierList(blockHash common.Hash, blockNumber uint64, isCommit bool) (staking.ValidatorExQueue, error)
	ListVerifierNodeID(blockHash common.Hash, blockNumber uint64) ([]discover.NodeID, error)
	GetCandidateList(blockHash common.Hash, blockNumber uint64) (staking.CandidateHexQueue, error)
	GetCandidateInfo(blockHash common.Hash, addr common.Address) (*staking.Candidate, error)
	DeclarePromoteNotify(blockHash common.Hash, blockNumber uint64, nodeId discover.NodeID, programVersion uint32) error
}

type TallyResult

type TallyResult struct {
	ProposalID    common.Hash    `json:"proposalID"`
	Yeas          uint16         `json:"yeas"`
	Nays          uint16         `json:"nays"`
	Abstentions   uint16         `json:"abstentions"`
	AccuVerifiers uint16         `json:"accuVerifiers"`
	Status        ProposalStatus `json:"status"`
	CanceledBy    common.Hash    `json:"canceledBy"`
}

func GetTallyResult

func GetTallyResult(proposalID common.Hash, state xcom.StateDB) (*TallyResult, error)

type TextProposal

type TextProposal struct {
	ProposalID     common.Hash
	ProposalType   ProposalType
	PIPID          string
	SubmitBlock    uint64
	EndVotingBlock uint64
	Proposer       discover.NodeID
	Result         TallyResult `json:"-"`
}

func (*TextProposal) GetEndVotingBlock

func (tp *TextProposal) GetEndVotingBlock() uint64

func (*TextProposal) GetPIPID

func (tp *TextProposal) GetPIPID() string

func (*TextProposal) GetProposalID

func (tp *TextProposal) GetProposalID() common.Hash

func (*TextProposal) GetProposalType

func (tp *TextProposal) GetProposalType() ProposalType

func (*TextProposal) GetProposer

func (tp *TextProposal) GetProposer() discover.NodeID

func (*TextProposal) GetSubmitBlock

func (tp *TextProposal) GetSubmitBlock() uint64

func (*TextProposal) GetTallyResult

func (tp *TextProposal) GetTallyResult() TallyResult

func (*TextProposal) String

func (tp *TextProposal) String() string

func (*TextProposal) Verify

func (tp *TextProposal) Verify(submitBlock uint64, blockHash common.Hash, state xcom.StateDB) error

type VersionProposal

type VersionProposal struct {
	ProposalID      common.Hash
	ProposalType    ProposalType
	PIPID           string
	SubmitBlock     uint64
	EndVotingRounds uint64
	EndVotingBlock  uint64
	Proposer        discover.NodeID
	Result          TallyResult `json:"-"`
	NewVersion      uint32
	ActiveBlock     uint64
}

func FindVotingVersionProposal

func FindVotingVersionProposal(blockHash common.Hash, state xcom.StateDB) (*VersionProposal, error)

find a version proposal at voting stage

func (*VersionProposal) GetActiveBlock

func (vp *VersionProposal) GetActiveBlock() uint64

func (*VersionProposal) GetEndVotingBlock

func (vp *VersionProposal) GetEndVotingBlock() uint64

func (*VersionProposal) GetNewVersion

func (vp *VersionProposal) GetNewVersion() uint32

func (*VersionProposal) GetPIPID

func (vp *VersionProposal) GetPIPID() string

func (*VersionProposal) GetProposalID

func (vp *VersionProposal) GetProposalID() common.Hash

func (*VersionProposal) GetProposalType

func (vp *VersionProposal) GetProposalType() ProposalType

func (*VersionProposal) GetProposer

func (vp *VersionProposal) GetProposer() discover.NodeID

func (*VersionProposal) GetSubmitBlock

func (vp *VersionProposal) GetSubmitBlock() uint64

func (*VersionProposal) GetTallyResult

func (vp *VersionProposal) GetTallyResult() TallyResult

func (*VersionProposal) String

func (vp *VersionProposal) String() string

func (*VersionProposal) Verify

func (vp *VersionProposal) Verify(submitBlock uint64, blockHash common.Hash, state xcom.StateDB) error

type VoteInfo

type VoteInfo struct {
	ProposalID common.Hash     `json:"proposalID"`
	VoteNodeID discover.NodeID `json:"voteNodeID"`
	VoteOption VoteOption      `json:"voteOption"`
}

type VoteOption

type VoteOption uint8
const (
	Yes        VoteOption = 0x01
	No         VoteOption = 0x02
	Abstention VoteOption = 0x03
)

func ParseVoteOption

func ParseVoteOption(option uint8) VoteOption

type VoteValue

type VoteValue struct {
	VoteNodeID discover.NodeID `json:"voteNodeID"`
	VoteOption VoteOption      `json:"voteOption"`
}

func ListVoteValue

func ListVoteValue(proposalID common.Hash, state xcom.StateDB) ([]VoteValue, error)

list vote detail

Jump to

Keyboard shortcuts

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