governance

package
v0.0.0-...-6425a1c Latest Latest
Warning

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

Go to latest
Published: May 9, 2020 License: LGPL-3.0 Imports: 22 Imported by: 4

Documentation

Overview

Governance contract: Users can apply for a candidate node to join consensus selection, deposit ZPT to vote for candidate nodes, quit selection and unVote for candidate nodes through this contract. ZPT deposited in the contract can get GALA bonus which come from transaction fee of the network.

Index

Constants

View Source
const (
	//function name
	INIT_CONFIG                      = "initConfig"
	REGISTER_CANDIDATE               = "registerCandidate"
	REGISTER_CANDIDATE_TRANSFER_FROM = "registerCandidateTransferFrom"
	UNREGISTER_CANDIDATE             = "unRegisterCandidate"
	APPROVE_CANDIDATE                = "approveCandidate"
	REJECT_CANDIDATE                 = "rejectCandidate"
	BLACK_NODE                       = "blackNode"
	WHITE_NODE                       = "whiteNode"
	QUIT_NODE                        = "quitNode"
	VOTE_FOR_PEER                    = "voteForPeer"
	VOTE_FOR_PEER_TRANSFER_FROM      = "voteForPeerTransferFrom"
	UNVOTE_FOR_PEER                  = "unVoteForPeer"
	WITHDRAW                         = "withdraw"
	COMMIT_DPOS                      = "commitDpos"
	UPDATE_CONFIG                    = "updateConfig"
	UPDATE_GLOBAL_PARAM              = "updateGlobalParam"
	UPDATE_SPLIT_CURVE               = "updateSplitCurve"
	CALL_SPLIT                       = "callSplit"
	TRANSFER_PENALTY                 = "transferPenalty"
	WITHDRAW_GALA                    = "withdrawGala"
	GET_PEERPOOL_INFO                = "getPeerPoolInfo"
	GET_VOTE_INFO                    = "getVoteInfo"
	CHECK_VOTE_INFO                  = "checkVoteInfo"
	//key prefix
	GLOBAL_PARAM    = "globalParam"
	VBFT_CONFIG     = "vbftConfig"
	GOVERNANCE_VIEW = "governanceView"
	CANDIDITE_INDEX = "candidateIndex"
	PEER_POOL       = "peerPool"
	VOTE_INFO_POOL  = "voteInfoPool"
	PEER_INDEX      = "peerIndex"
	BLACK_LIST      = "blackList"
	TOTAL_STAKE     = "totalStake"
	PENALTY_STAKE   = "penaltyStake"
	SPLIT_CURVE     = "splitCurve"

	//global
	PRECISE = 1000000
)

Variables

View Source
var MinCandidateFee = uint64(math.Pow(10, constants.GALA_DECIMALS))

candidate fee must >= 1 Gala

View Source
var Xi = []uint32{}/* 101 elements not displayed */

Functions

func ApproveCandidate

func ApproveCandidate(native *native.NativeService) ([]byte, error)

Approve a registered candidate node, used by admin. Only approved candidate node can participate in consensus selection and get gala bonus.

func BlackNode

func BlackNode(native *native.NativeService) ([]byte, error)

Put a node into black list, remove node from pool, used by admin. Whole of initPos of black node will be punished, and several percent of vote deposit will be punished too. Node in black list can't be registered.

func CallSplit

func CallSplit(native *native.NativeService) ([]byte, error)

Trigger fee split

func CheckVBFTConfig

func CheckVBFTConfig(configuration *config.VBFTConfig) error

func CheckVoteInfo

func CheckVoteInfo(native *native.NativeService) ([]byte, error)

func CommitDpos

func CommitDpos(native *native.NativeService) ([]byte, error)

Go to next consensus epoch

func GetBytesUint32

func GetBytesUint32(b []byte) (uint32, error)

func GetPeerpoolInfo

func GetPeerpoolInfo(native *native.NativeService) ([]byte, error)

Get peerpool info, used by users.

func GetUint32Bytes

func GetUint32Bytes(num uint32) ([]byte, error)

func GetView

func GetView(native *native.NativeService, contract common.Address) (uint32, error)

func GetVoteInfo

func GetVoteInfo(native *native.NativeService) ([]byte, error)

func InitConfig

func InitConfig(native *native.NativeService) ([]byte, error)

Init governance contract, include vbft config, global param and Gid admin.

func InitGovernance

func InitGovernance()

Init governance contract address

func QuitNode

func QuitNode(native *native.NativeService) ([]byte, error)

Quit a registered node, used by node owner. Remove node from pool and unfreeze deposit next epoch(candidate node) / next next epoch(consensus node)

func RegisterCandidate

func RegisterCandidate(native *native.NativeService) ([]byte, error)

Register a candidate node, used by users. Users can register a candidate node with a authorized Gid. Candidate node can be voted and become consensus node according to their pos. Candidate node can get gala bonus according to their pos.

func RegisterCandidateTransferFrom

func RegisterCandidateTransferFrom(native *native.NativeService) ([]byte, error)

Register a candidate node, used by contracts. Contracts can register a candidate node with a authorized Gid after approving ZPT to governance contract before invoke this function. Candidate node can be voted and become consensus node according to their pos. Candidate node can get gala bonus according to their pos.

func RegisterGovernanceContract

func RegisterGovernanceContract(native *native.NativeService)

Register methods of governance contract

func RejectCandidate

func RejectCandidate(native *native.NativeService) ([]byte, error)

Reject a registered candidate node, remove node from pool and unfreeze deposit zpt, used by admin. Only approved candidate node can participate in consensus selection and get gala bonus.

func TransferPenalty

func TransferPenalty(native *native.NativeService) ([]byte, error)

Transfer all punished ZPT of a black node to a certain address

func UnRegisterCandidate

func UnRegisterCandidate(native *native.NativeService) ([]byte, error)

Unregister a registered candidate node, will remove node from pool, and unfreeze deposit zpt.

func UnVoteForPeer

func UnVoteForPeer(native *native.NativeService) ([]byte, error)

UnVote for a node by redeeming ZPT from this governance contract

func UpdateConfig

func UpdateConfig(native *native.NativeService) ([]byte, error)

Update VBFT config

func UpdateGlobalParam

func UpdateGlobalParam(native *native.NativeService) ([]byte, error)

Update global params of this governance contract

func UpdateSplitCurve

func UpdateSplitCurve(native *native.NativeService) ([]byte, error)

Update split curve

func VoteForPeer

func VoteForPeer(native *native.NativeService) ([]byte, error)

Vote for a node by depositing ZPT in this governance contract, used by users

func VoteForPeerTransferFrom

func VoteForPeerTransferFrom(native *native.NativeService) ([]byte, error)

Vote for a node by depositing ZPT in this governance contract, used by contracts

func WhiteNode

func WhiteNode(native *native.NativeService) ([]byte, error)

Remove a node from black list, allow it to be registered, used by admin.

func Withdraw

func Withdraw(native *native.NativeService) ([]byte, error)

Withdraw unfreezed ZPT deposited in this governance contract.

func WithdrawGala

func WithdrawGala(native *native.NativeService) ([]byte, error)

Withdraw unbounded GALA according to deposit ZPT in this governance contract

Types

type ApproveCandidateParam

type ApproveCandidateParam struct {
	PeerPubkey string
}

func (*ApproveCandidateParam) Deserialize

func (this *ApproveCandidateParam) Deserialize(r io.Reader) error

func (*ApproveCandidateParam) Serialize

func (this *ApproveCandidateParam) Serialize(w io.Writer) error

type BlackListItem

type BlackListItem struct {
	PeerPubkey string
	Address    common.Address
	InitPos    uint64
}

func (*BlackListItem) Deserialize

func (this *BlackListItem) Deserialize(r io.Reader) error

func (*BlackListItem) Serialize

func (this *BlackListItem) Serialize(w io.Writer) error

type BlackNodeParam

type BlackNodeParam struct {
	PeerPubkeyList []string
}

func (*BlackNodeParam) Deserialize

func (this *BlackNodeParam) Deserialize(r io.Reader) error

func (*BlackNodeParam) Serialize

func (this *BlackNodeParam) Serialize(w io.Writer) error

type CandidateSplitInfo

type CandidateSplitInfo struct {
	PeerPubkey string
	Address    common.Address
	InitPos    uint64
	Stake      uint64
	S          uint64
}

type CheckVoteInfoParam

type CheckVoteInfoParam struct {
	PeerPubkey string
}

func (*CheckVoteInfoParam) Deserialize

func (this *CheckVoteInfoParam) Deserialize(r io.Reader) error

func (*CheckVoteInfoParam) Serialize

func (this *CheckVoteInfoParam) Serialize(w io.Writer) error

type Configuration

type Configuration struct {
	N                    uint32
	C                    uint32
	K                    uint32
	L                    uint32
	BlockMsgDelay        uint32
	HashMsgDelay         uint32
	PeerHandshakeTimeout uint32
	MaxBlockChangeView   uint32
}

func (*Configuration) Deserialize

func (this *Configuration) Deserialize(r io.Reader) error

func (*Configuration) Serialize

func (this *Configuration) Serialize(w io.Writer) error

type GetVoteInfoParam

type GetVoteInfoParam struct {
	PeerPubkey string
	Address    common.Address
}

func (*GetVoteInfoParam) Deserialize

func (this *GetVoteInfoParam) Deserialize(r io.Reader) error

func (*GetVoteInfoParam) Serialize

func (this *GetVoteInfoParam) Serialize(w io.Writer) error

type GlobalParam

type GlobalParam struct {
	CandidateFee uint64 //unit: 10^-4 gala
	MinInitStake uint64
	CandidateNum uint32
	PosLimit     uint32
	A            uint32
	B            uint32
	Yita         uint32
	Penalty      uint32
}

func (*GlobalParam) Deserialize

func (this *GlobalParam) Deserialize(r io.Reader) error

func (*GlobalParam) Serialize

func (this *GlobalParam) Serialize(w io.Writer) error

type GovernanceView

type GovernanceView struct {
	View   uint32
	Height uint32
	TxHash common.Uint256
}

func GetGovernanceView

func GetGovernanceView(native *native.NativeService, contract common.Address) (*GovernanceView, error)

func (*GovernanceView) Deserialize

func (this *GovernanceView) Deserialize(r io.Reader) error

func (*GovernanceView) Serialize

func (this *GovernanceView) Serialize(w io.Writer) error

type PeerPoolItem

type PeerPoolItem struct {
	Index      uint32
	PeerPubkey string
	Address    common.Address
	Status     Status
	InitPos    uint64
	TotalPos   uint64
}

func (*PeerPoolItem) Deserialize

func (this *PeerPoolItem) Deserialize(r io.Reader) error

func (*PeerPoolItem) DeserializeNew

func (this *PeerPoolItem) DeserializeNew(r io.Reader) error

func (*PeerPoolItem) Serialize

func (this *PeerPoolItem) Serialize(w io.Writer) error

type PeerPoolList

type PeerPoolList struct {
	Peers []*PeerPoolItem
}

type PeerPoolMap

type PeerPoolMap struct {
	PeerPoolMap map[string]*PeerPoolItem
}

func GetPeerPoolMap

func GetPeerPoolMap(native *native.NativeService, contract common.Address, view uint32) (*PeerPoolMap, error)

func (*PeerPoolMap) Deserialize

func (this *PeerPoolMap) Deserialize(r io.Reader) error

func (*PeerPoolMap) DeserializeNew

func (this *PeerPoolMap) DeserializeNew(r io.Reader) error

func (*PeerPoolMap) Serialize

func (this *PeerPoolMap) Serialize(w io.Writer) error

type PeerStakeInfo

type PeerStakeInfo struct {
	Index      uint32
	PeerPubkey string
	Stake      uint64
}

type PenaltyStake

type PenaltyStake struct {
	PeerPubkey string
	InitPos    uint64
	VotePos    uint64
	TimeOffset uint32
	Amount     uint64
}

func (*PenaltyStake) Deserialize

func (this *PenaltyStake) Deserialize(r io.Reader) error

func (*PenaltyStake) Serialize

func (this *PenaltyStake) Serialize(w io.Writer) error

type QuitNodeParam

type QuitNodeParam struct {
	PeerPubkey string
	Address    common.Address
}

func (*QuitNodeParam) Deserialize

func (this *QuitNodeParam) Deserialize(r io.Reader) error

func (*QuitNodeParam) Serialize

func (this *QuitNodeParam) Serialize(w io.Writer) error

type RegisterCandidateParam

type RegisterCandidateParam struct {
	PeerPubkey string
	Address    common.Address
	InitPos    uint64
	Caller     []byte
	KeyNo      uint32
}

func (*RegisterCandidateParam) Deserialize

func (this *RegisterCandidateParam) Deserialize(r io.Reader) error

func (*RegisterCandidateParam) Serialize

func (this *RegisterCandidateParam) Serialize(w io.Writer) error

type RejectCandidateParam

type RejectCandidateParam struct {
	PeerPubkey string
}

func (*RejectCandidateParam) Deserialize

func (this *RejectCandidateParam) Deserialize(r io.Reader) error

func (*RejectCandidateParam) Serialize

func (this *RejectCandidateParam) Serialize(w io.Writer) error

type SplitCurve

type SplitCurve struct {
	Yi []uint32
}

func (*SplitCurve) Deserialize

func (this *SplitCurve) Deserialize(r io.Reader) error

func (*SplitCurve) Serialize

func (this *SplitCurve) Serialize(w io.Writer) error

type Status

type Status int
const (
	//status
	RegisterCandidateStatus Status = iota
	CandidateStatus
	ConsensusStatus
	QuitConsensusStatus
	QuitingStatus
	QuitCandidateStatus
	BlackStatus
)

func (*Status) Deserialize

func (this *Status) Deserialize(r io.Reader) error

func (*Status) Serialize

func (this *Status) Serialize(w io.Writer) error

type SyncNodeSplitInfo

type SyncNodeSplitInfo struct {
	PeerPubkey string
	Address    common.Address
	InitPos    uint64
	S          uint64
}

type TotalStake

type TotalStake struct {
	Address    common.Address
	Stake      uint64
	TimeOffset uint32
}

func (*TotalStake) Deserialize

func (this *TotalStake) Deserialize(r io.Reader) error

func (*TotalStake) Serialize

func (this *TotalStake) Serialize(w io.Writer) error

type TransferPenaltyParam

type TransferPenaltyParam struct {
	PeerPubkey string
	Address    common.Address
}

func (*TransferPenaltyParam) Deserialize

func (this *TransferPenaltyParam) Deserialize(r io.Reader) error

func (*TransferPenaltyParam) Serialize

func (this *TransferPenaltyParam) Serialize(w io.Writer) error

type UnRegisterCandidateParam

type UnRegisterCandidateParam struct {
	PeerPubkey string
	Address    common.Address
}

func (*UnRegisterCandidateParam) Deserialize

func (this *UnRegisterCandidateParam) Deserialize(r io.Reader) error

func (*UnRegisterCandidateParam) Serialize

func (this *UnRegisterCandidateParam) Serialize(w io.Writer) error

type VoteForPeerParam

type VoteForPeerParam struct {
	Address        common.Address
	PeerPubkeyList []string
	PosList        []uint64
}

func (*VoteForPeerParam) Deserialize

func (this *VoteForPeerParam) Deserialize(r io.Reader) error

func (*VoteForPeerParam) Serialize

func (this *VoteForPeerParam) Serialize(w io.Writer) error

type VoteInfo

type VoteInfo struct {
	PeerPubkey          string
	Address             common.Address
	ConsensusPos        uint64
	FreezePos           uint64
	NewPos              uint64
	WithdrawPos         uint64
	WithdrawFreezePos   uint64
	WithdrawUnfreezePos uint64
}

func (*VoteInfo) Deserialize

func (this *VoteInfo) Deserialize(r io.Reader) error

func (*VoteInfo) Serialize

func (this *VoteInfo) Serialize(w io.Writer) error

type WhiteNodeParam

type WhiteNodeParam struct {
	PeerPubkey string
}

func (*WhiteNodeParam) Deserialize

func (this *WhiteNodeParam) Deserialize(r io.Reader) error

func (*WhiteNodeParam) Serialize

func (this *WhiteNodeParam) Serialize(w io.Writer) error

type WithdrawGalaParam

type WithdrawGalaParam struct {
	Address common.Address
}

func (*WithdrawGalaParam) Deserialize

func (this *WithdrawGalaParam) Deserialize(r io.Reader) error

func (*WithdrawGalaParam) Serialize

func (this *WithdrawGalaParam) Serialize(w io.Writer) error

type WithdrawParam

type WithdrawParam struct {
	Address        common.Address
	PeerPubkeyList []string
	WithdrawList   []uint64
}

func (*WithdrawParam) Deserialize

func (this *WithdrawParam) Deserialize(r io.Reader) error

func (*WithdrawParam) Serialize

func (this *WithdrawParam) Serialize(w io.Writer) error

Jump to

Keyboard shortcuts

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