governance

package
v1.0.1 Latest Latest
Warning

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

Go to latest
Published: Jul 16, 2018 License: LGPL-3.0 Imports: 21 Imported by: 0

Documentation

Overview

Governance contract: Users can apply for a candidate node to join consensus selection, deposit ONT to vote for candidate nodes, quit selection and unVote for candidate nodes through this contract. ONT deposited in the contract can get ONG 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_ONG                     = "withdrawOng"

	//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.ONG_DECIMALS))

candidate fee must >= 1 ONG

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 ong 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 CommitDpos

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

Go to next consensus epoch

func GetBytesUint32

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

func GetUint32Bytes

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

func GetView

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

func InitConfig

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

Init governance contract, include vbft config, global param and ontid 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 ontid. Candidate node can be voted and become consensus node according to their pos. Candidate node can get ong bonus according to their pos.

func RegisterCandidateTransferFrom added in v1.0.0

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

Register a candidate node, used by contracts. Contracts can register a candidate node with a authorized ontid after approving ont to governance contract before invoke this function. Candidate node can be voted and become consensus node according to their pos. Candidate node can get ong 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 ont, used by admin. Only approved candidate node can participate in consensus selection and get ong bonus.

func TransferPenalty

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

Transfer all punished ONT 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 ont.

func UnVoteForPeer

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

UnVote for a node by redeeming ONT 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 ONT in this governance contract, used by users

func VoteForPeerTransferFrom added in v1.0.0

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

Vote for a node by depositing ONT 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 ONT deposited in this governance contract.

func WithdrawOng added in v0.9.2

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

Withdraw unbounded ONG according to deposit ONT 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 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 GlobalParam

type GlobalParam struct {
	CandidateFee uint64 //unit: 10^-9 ong
	MinInitStake uint32
	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) 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) 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    uint32
	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
	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        []uint32
}

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 WithdrawOngParam added in v0.9.2

type WithdrawOngParam struct {
	Address common.Address
}

func (*WithdrawOngParam) Deserialize added in v0.9.2

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

func (*WithdrawOngParam) Serialize added in v0.9.2

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

type WithdrawParam

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

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