Documentation
¶
Overview ¶
Governance contract: Users can apply for a candidate node to join consensus selection, deposit ONT to authorize for candidate nodes, quit selection and unAuthorize 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
- Variables
- func AddInitPos(native *native.NativeService) ([]byte, error)
- func ApproveCandidate(native *native.NativeService) ([]byte, error)
- func AuthorizeForPeer(native *native.NativeService) ([]byte, error)
- func AuthorizeForPeerTransferFrom(native *native.NativeService) ([]byte, error)
- func BlackNode(native *native.NativeService) ([]byte, error)
- func ChangeMaxAuthorization(native *native.NativeService) ([]byte, error)
- func CheckVBFTConfig(configuration *config.VBFTConfig) error
- func CommitDpos(native *native.NativeService) ([]byte, error)
- func GetBytesUint32(b []byte) (uint32, error)
- func GetBytesUint64(b []byte) (uint64, error)
- func GetUint32Bytes(num uint32) ([]byte, error)
- func GetUint64Bytes(num uint64) ([]byte, error)
- func GetView(native *native.NativeService, contract common.Address) (uint32, error)
- func InitConfig(native *native.NativeService) ([]byte, error)
- func InitGovernance()
- func QuitNode(native *native.NativeService) ([]byte, error)
- func ReduceInitPos(native *native.NativeService) ([]byte, error)
- func RegisterCandidate(native *native.NativeService) ([]byte, error)
- func RegisterCandidateTransferFrom(native *native.NativeService) ([]byte, error)
- func RegisterGovernanceContract(native *native.NativeService)
- func RejectCandidate(native *native.NativeService) ([]byte, error)
- func SetPeerCost(native *native.NativeService) ([]byte, error)
- func SetPromisePos(native *native.NativeService) ([]byte, error)
- func TransferPenalty(native *native.NativeService) ([]byte, error)
- func UnAuthorizeForPeer(native *native.NativeService) ([]byte, error)
- func UnRegisterCandidate(native *native.NativeService) ([]byte, error)
- func UpdateConfig(native *native.NativeService) ([]byte, error)
- func UpdateGlobalParam(native *native.NativeService) ([]byte, error)
- func UpdateGlobalParam2(native *native.NativeService) ([]byte, error)
- func UpdateSplitCurve(native *native.NativeService) ([]byte, error)
- func WhiteNode(native *native.NativeService) ([]byte, error)
- func Withdraw(native *native.NativeService) ([]byte, error)
- func WithdrawFee(native *native.NativeService) ([]byte, error)
- func WithdrawOng(native *native.NativeService) ([]byte, error)
- type ApproveCandidateParam
- type AuthorizeForPeerParam
- type AuthorizeInfo
- type BlackListItem
- type BlackNodeParam
- type CandidateSplitInfo
- type ChangeInitPosParam
- type ChangeMaxAuthorizationParam
- type Configuration
- type GlobalParam
- type GlobalParam2
- type GovernanceView
- type PeerAttributes
- type PeerPoolItem
- type PeerPoolList
- type PeerPoolMap
- type PeerStakeInfo
- type PenaltyStake
- type PreConfig
- type PromisePos
- type QuitNodeParam
- type RegisterCandidateParam
- type RejectCandidateParam
- type SetPeerCostParam
- type SplitCurve
- type SplitFeeAddress
- type Status
- type TotalStake
- type TransferPenaltyParam
- type UnRegisterCandidateParam
- type WhiteNodeParam
- type WithdrawFeeParam
- type WithdrawOngParam
- type WithdrawParam
Constants ¶
const ( //function name INIT_CONFIG = "initConfig" REGISTER_CANDIDATE = "registerCandidate" REGISTER_CANDIDATE_TRANSFER_FROM = "registerCandidateTransferFrom" UNREGISTER_CANDIDATE = "unRegisterCandidate" AUTHORIZE_FOR_PEER = "authorizeForPeer" AUTHORIZE_FOR_PEER_TRANSFER_FROM = "authorizeForPeerTransferFrom" UNAUTHORIZE_FOR_PEER = "unAuthorizeForPeer" APPROVE_CANDIDATE = "approveCandidate" REJECT_CANDIDATE = "rejectCandidate" BLACK_NODE = "blackNode" WHITE_NODE = "whiteNode" QUIT_NODE = "quitNode" WITHDRAW = "withdraw" WITHDRAW_ONG = "withdrawOng" WITHDRAW_FEE = "withdrawFee" COMMIT_DPOS = "commitDpos" UPDATE_CONFIG = "updateConfig" UPDATE_GLOBAL_PARAM = "updateGlobalParam" UPDATE_GLOBAL_PARAM2 = "updateGlobalParam2" UPDATE_SPLIT_CURVE = "updateSplitCurve" TRANSFER_PENALTY = "transferPenalty" CHANGE_MAX_AUTHORIZATION = "changeMaxAuthorization" SET_PEER_COST = "setPeerCost" ADD_INIT_POS = "addInitPos" REDUCE_INIT_POS = "reduceInitPos" SET_PROMISE_POS = "setPromisePos" //key prefix GLOBAL_PARAM = "globalParam" GLOBAL_PARAM2 = "globalParam2" VBFT_CONFIG = "vbftConfig" GOVERNANCE_VIEW = "governanceView" CANDIDITE_INDEX = "candidateIndex" PEER_POOL = "peerPool" PEER_INDEX = "peerIndex" BLACK_LIST = "blackList" TOTAL_STAKE = "totalStake" PENALTY_STAKE = "penaltyStake" SPLIT_CURVE = "splitCurve" PEER_ATTRIBUTES = "peerAttributes" SPLIT_FEE = "splitFee" SPLIT_FEE_ADDRESS = "splitFeeAddress" PROMISE_POS = "promisePos" PRE_CONFIG = "preConfig" //global PRECISE = 1000000 NEW_VERSION_VIEW = 6 NEW_VERSION_BLOCK = 414100 )
Variables ¶
var AUTHORIZE_INFO_POOL = []byte{118, 111, 116, 101, 73, 110, 102, 111, 80, 111, 111, 108}
var MIN_CANDIDATE_FEE = uint64(math.Pow(10, constants.ONG_DECIMALS))
candidate fee must >= 1 ONG
var Xi = []uint32{}/* 101 elements not displayed */
Functions ¶
func AddInitPos ¶ added in v1.0.3
func AddInitPos(native *native.NativeService) ([]byte, error)
add init pos of a node
func ApproveCandidate ¶
func ApproveCandidate(native *native.NativeService) ([]byte, error)
Approve a registered candidate node Only approved candidate node can participate in consensus selection and get ong bonus.
func AuthorizeForPeer ¶ added in v1.0.2
func AuthorizeForPeer(native *native.NativeService) ([]byte, error)
Authorize for a node by depositing ONT in this governance contract, used by users
func AuthorizeForPeerTransferFrom ¶ added in v1.0.2
func AuthorizeForPeerTransferFrom(native *native.NativeService) ([]byte, error)
Authorize for a node by depositing ONT in this governance contract, used by contracts
func BlackNode ¶
func BlackNode(native *native.NativeService) ([]byte, error)
Put a node into black list, remove node from pool Whole of initPos of black node will be punished, and several percent of authorize deposit will be punished too. Node in black list can't be registered.
func ChangeMaxAuthorization ¶ added in v1.0.3
func ChangeMaxAuthorization(native *native.NativeService) ([]byte, error)
Change the status if node can receive authorization from ont holders
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 GetBytesUint64 ¶ added in v1.0.3
func GetUint32Bytes ¶
func GetUint64Bytes ¶ added in v1.0.3
func InitConfig ¶
func InitConfig(native *native.NativeService) ([]byte, error)
Init governance contract, include vbft config, global param and ontid admin.
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 ReduceInitPos ¶ added in v1.0.3
func ReduceInitPos(native *native.NativeService) ([]byte, error)
reduce init pos of a 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 authorized 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 authorized 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 Only approved candidate node can participate in consensus selection and get ong bonus.
func SetPeerCost ¶ added in v1.0.3
func SetPeerCost(native *native.NativeService) ([]byte, error)
Set node cost, node can take some percentage of fee before split
func SetPromisePos ¶ added in v1.0.3
func SetPromisePos(native *native.NativeService) ([]byte, error)
set promise pos of a node
func TransferPenalty ¶
func TransferPenalty(native *native.NativeService) ([]byte, error)
Transfer all punished ONT of a black node to a certain address
func UnAuthorizeForPeer ¶ added in v1.0.2
func UnAuthorizeForPeer(native *native.NativeService) ([]byte, error)
UnAuthorize for a node by redeeming ONT from this governance contract
func UnRegisterCandidate ¶
func UnRegisterCandidate(native *native.NativeService) ([]byte, error)
Unregister a registered candidate node, will remove node from pool, and unfreeze deposit ont.
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 UpdateGlobalParam2 ¶ added in v1.0.3
func UpdateGlobalParam2(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 WhiteNode ¶
func WhiteNode(native *native.NativeService) ([]byte, error)
Remove a node from black list, allow it to be registered
func Withdraw ¶
func Withdraw(native *native.NativeService) ([]byte, error)
Withdraw unfreezed ONT deposited in this governance contract.
func WithdrawFee ¶ added in v1.0.3
func WithdrawFee(native *native.NativeService) ([]byte, error)
Withdraw split fee of address
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
type AuthorizeForPeerParam ¶ added in v1.0.2
type AuthorizeForPeerParam struct {
Address common.Address
PeerPubkeyList []string
PosList []uint32
}
func (*AuthorizeForPeerParam) Deserialize ¶ added in v1.0.2
func (this *AuthorizeForPeerParam) Deserialize(r io.Reader) error
type AuthorizeInfo ¶ added in v1.0.2
type AuthorizeInfo struct {
PeerPubkey string
Address common.Address
ConsensusPos uint64 //pos deposit in consensus node
CandidatePos uint64 //pos deposit in candidate node
NewPos uint64 //deposit new pos to consensus or candidate node, it will be calculated in next epoch, you can withdrawal it at any time
WithdrawConsensusPos uint64 //unAuthorized pos from consensus pos, frozen until next next epoch
WithdrawCandidatePos uint64 //unAuthorized pos from candidate pos, frozen until next epoch
WithdrawUnfreezePos uint64 //unfrozen pos, can withdraw at any time
}
func (*AuthorizeInfo) Deserialize ¶ added in v1.0.2
func (this *AuthorizeInfo) Deserialize(r io.Reader) error
type BlackListItem ¶
type BlackListItem struct {
PeerPubkey string //peerPubkey in black list
Address common.Address //the owner of this peer
InitPos uint64 //initPos of this peer
}
func (*BlackListItem) Deserialize ¶
func (this *BlackListItem) Deserialize(r io.Reader) error
type BlackNodeParam ¶
type BlackNodeParam struct {
PeerPubkeyList []string
}
func (*BlackNodeParam) Deserialize ¶
func (this *BlackNodeParam) Deserialize(r io.Reader) error
type CandidateSplitInfo ¶
type ChangeInitPosParam ¶ added in v1.0.3
func (*ChangeInitPosParam) Deserialize ¶ added in v1.0.3
func (this *ChangeInitPosParam) Deserialize(r io.Reader) error
type ChangeMaxAuthorizationParam ¶ added in v1.0.3
type ChangeMaxAuthorizationParam struct {
PeerPubkey string
Address common.Address
MaxAuthorize uint32
}
func (*ChangeMaxAuthorizationParam) Deserialize ¶ added in v1.0.3
func (this *ChangeMaxAuthorizationParam) Deserialize(r io.Reader) 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
type GlobalParam ¶
type GlobalParam struct {
CandidateFee uint64 //unit: 10^-9 ong
MinInitStake uint32 //min init pos
CandidateNum uint32 //num of candidate and consensus node
PosLimit uint32 //authorize pos limit is initPos*posLimit
A uint32 //fee split to all consensus node
B uint32 //fee split to all candidate node
Yita uint32 //split curve coefficient
Penalty uint32 //authorize pos penalty percentage
}
func (*GlobalParam) Deserialize ¶
func (this *GlobalParam) Deserialize(r io.Reader) error
type GlobalParam2 ¶ added in v1.0.3
type GlobalParam2 struct {
MinAuthorizePos uint32 //min ONT of each authorization, 500 default
CandidateFeeSplitNum uint32 //num of peer can receive motivation(include consensus and candidate)
Field1 []byte //reserved field
Field2 []byte //reserved field
Field3 []byte //reserved field
Field4 []byte //reserved field
Field5 []byte //reserved field
Field6 []byte //reserved field
}
func (*GlobalParam2) Deserialize ¶ added in v1.0.3
func (this *GlobalParam2) Deserialize(r io.Reader) error
type GovernanceView ¶
func GetGovernanceView ¶
func GetGovernanceView(native *native.NativeService, contract common.Address) (*GovernanceView, error)
func (*GovernanceView) Deserialize ¶
func (this *GovernanceView) Deserialize(r io.Reader) error
type PeerAttributes ¶ added in v1.0.3
type PeerAttributes struct {
PeerPubkey string
MaxAuthorize uint64 //max authorzie pos this peer can receive(number of ont), set by peer owner
T2PeerCost uint64 //candidate or consensus node doesn't share income percent with authorize users, 100 means node will take all incomes, it will take effect in view T + 2
T1PeerCost uint64 //candidate or consensus node doesn't share income percent with authorize users, 100 means node will take all incomes, it will take effect in view T + 1
TPeerCost uint64 //candidate or consensus node doesn't share income percent with authorize users, 100 means node will take all incomes, it will take effect in view T
Field1 []byte //reserved field
Field2 []byte //reserved field
Field3 []byte //reserved field
Field4 []byte //reserved field
}
func (*PeerAttributes) Deserialize ¶ added in v1.0.3
func (this *PeerAttributes) Deserialize(r io.Reader) error
type PeerPoolItem ¶
type PeerPoolItem struct {
Index uint32 //peer index
PeerPubkey string //peer pubkey
Address common.Address //peer owner
Status Status //peer status
InitPos uint64 //peer initPos
TotalPos uint64 //total authorize pos this peer received
}
func (*PeerPoolItem) Deserialize ¶
func (this *PeerPoolItem) Deserialize(r io.Reader) 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
type PeerStakeInfo ¶
type PenaltyStake ¶
type PenaltyStake struct {
PeerPubkey string //peer pubKey of penalty stake
InitPos uint64 //initPos penalty
AuthorizePos uint64 //authorize pos penalty
TimeOffset uint32 //time used for calculate unbound ong
Amount uint64 //unbound ong that this penalty unbounded
}
func (*PenaltyStake) Deserialize ¶
func (this *PenaltyStake) Deserialize(r io.Reader) error
type PreConfig ¶ added in v1.0.3
type PreConfig struct {
Configuration *Configuration
SetView uint32
}
func (*PreConfig) Deserialize ¶ added in v1.0.3
type PromisePos ¶ added in v1.0.3
func (*PromisePos) Deserialize ¶ added in v1.0.3
func (this *PromisePos) Deserialize(r io.Reader) error
type QuitNodeParam ¶
func (*QuitNodeParam) Deserialize ¶
func (this *QuitNodeParam) Deserialize(r io.Reader) 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
type RejectCandidateParam ¶
type RejectCandidateParam struct {
PeerPubkey string
}
func (*RejectCandidateParam) Deserialize ¶
func (this *RejectCandidateParam) Deserialize(r io.Reader) error
type SetPeerCostParam ¶ added in v1.0.3
func (*SetPeerCostParam) Deserialize ¶ added in v1.0.3
func (this *SetPeerCostParam) Deserialize(r io.Reader) error
type SplitCurve ¶
type SplitCurve struct {
Yi []uint32
}
func (*SplitCurve) Deserialize ¶
func (this *SplitCurve) Deserialize(r io.Reader) error
type SplitFeeAddress ¶ added in v1.0.3
func (*SplitFeeAddress) Deserialize ¶ added in v1.0.3
func (this *SplitFeeAddress) Deserialize(r io.Reader) error
type TotalStake ¶
func (*TotalStake) Deserialize ¶
func (this *TotalStake) Deserialize(r io.Reader) error
type TransferPenaltyParam ¶
func (*TransferPenaltyParam) Deserialize ¶
func (this *TransferPenaltyParam) Deserialize(r io.Reader) error
type UnRegisterCandidateParam ¶
func (*UnRegisterCandidateParam) Deserialize ¶
func (this *UnRegisterCandidateParam) Deserialize(r io.Reader) error
type WhiteNodeParam ¶
type WhiteNodeParam struct {
PeerPubkey string
}
func (*WhiteNodeParam) Deserialize ¶
func (this *WhiteNodeParam) Deserialize(r io.Reader) error
type WithdrawFeeParam ¶ added in v1.0.3
func (*WithdrawFeeParam) Deserialize ¶ added in v1.0.3
func (this *WithdrawFeeParam) Deserialize(r io.Reader) error
type WithdrawOngParam ¶ added in v0.9.2
func (*WithdrawOngParam) Deserialize ¶ added in v0.9.2
func (this *WithdrawOngParam) Deserialize(r io.Reader) error
type WithdrawParam ¶
func (*WithdrawParam) Deserialize ¶
func (this *WithdrawParam) Deserialize(r io.Reader) error