plugin

package
v0.7.6 Latest Latest
Warning

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

Go to latest
Published: Jan 14, 2020 License: GPL-3.0 Imports: 39 Imported by: 0

Documentation

Index

Constants

View Source
const (
	LessThanFoundationYearDeveloperRate    = 100
	AfterFoundationYearDeveloperRewardRate = 50
	AfterFoundationYearFoundRewardRate     = 50
	IncreaseIssue                          = 40
	RewardPoolIncreaseRate                 = 80 // 80% of fixed-issued tokens are allocated to reward pool each year
)
View Source
const (
	HundredDenominator     = 100
	TenThousandDenominator = 10000
)
View Source
const (
	FreeVon     = uint16(0)
	RestrictVon = uint16(1)

	PreviousRound = uint(0)
	CurrentRound  = uint(1)
	NextRound     = uint(2)

	QueryStartIrr    = true
	QueryStartNotIrr = false

	EpochValIndexSize = 2
	RoundValIndexSize = 6
)

Variables

View Source
var (
	DecodeTxDataErr = errors.New("decode tx data is err")
	FuncNotExistErr = errors.New("the func is not exist")
	FnParamsLenErr  = errors.New("the params len and func params len is not equal")
)

Functions

func AppendDelegateRewardPer added in v0.7.6

func AppendDelegateRewardPer(blockHash common.Hash, nodeID discover.NodeID, stakingNum uint64, per *reward.DelegateRewardPer, db snapshotdb.DB) error

func CheckOperatingThreshold added in v0.7.4

func CheckOperatingThreshold(blockNumber uint64, blockHash common.Hash, balance *big.Int) (bool, *big.Int)

func CheckStakeThreshold added in v0.7.4

func CheckStakeThreshold(blockNumber uint64, blockHash common.Hash, stake *big.Int) (bool, *big.Int)

func Decimal

func Decimal(value float64) int

func GetBlockNumberByEpoch

func GetBlockNumberByEpoch(epoch uint64) uint64

func GetHistoryCumulativeIssue

func GetHistoryCumulativeIssue(state xcom.StateDB, year uint32) *big.Int

GetHistoryCumulativeIssue used for get the cumulative issuance of a certain year in history

func GetYearEndBalance

func GetYearEndBalance(state xcom.StateDB, year uint32) *big.Int

func LoadChainYearNumber added in v0.7.5

func LoadChainYearNumber(hash common.Hash, snapshotDB snapshotdb.DB) (uint32, error)

func LoadNewBlockReward added in v0.7.5

func LoadNewBlockReward(hash common.Hash, snapshotDB snapshotdb.DB) (*big.Int, error)

func LoadRemainingReward added in v0.7.5

func LoadRemainingReward(hash common.Hash, snapshotDB snapshotdb.DB) (*big.Int, error)

func LoadStakingReward added in v0.7.5

func LoadStakingReward(hash common.Hash, snapshotDB snapshotdb.DB) (*big.Int, error)

func LoadYearStartTime added in v0.7.5

func LoadYearStartTime(hash common.Hash, snapshotDB snapshotdb.DB) (yearStartBlockNumber uint64, yearStartTime int64, error error)

func SetYearEndBalance

func SetYearEndBalance(state xcom.StateDB, year uint32, balance *big.Int)

func SetYearEndCumulativeIssue

func SetYearEndCumulativeIssue(state xcom.StateDB, year uint32, total *big.Int)

SetYearEndCumulativeIssue used for set historical cumulative increase at the end of the year

func StorageChainYearNumber added in v0.7.5

func StorageChainYearNumber(hash common.Hash, snapshotDB snapshotdb.DB, yearNumber uint32) error

func StorageNewBlockReward added in v0.7.5

func StorageNewBlockReward(hash common.Hash, snapshotDB snapshotdb.DB, newBlockReward *big.Int) error

func StorageRemainingReward added in v0.7.5

func StorageRemainingReward(hash common.Hash, snapshotDB snapshotdb.DB, remainReward *big.Int) error

func StorageStakingReward added in v0.7.5

func StorageStakingReward(hash common.Hash, snapshotDB snapshotdb.DB, stakingReward *big.Int) error

func StorageYearStartTime added in v0.7.5

func StorageYearStartTime(hash common.Hash, snapshotDB snapshotdb.DB, blockNumber uint64, yearStartTime int64) error

func UpdateDelegateRewardPer added in v0.7.6

func UpdateDelegateRewardPer(blockHash common.Hash, nodeID discover.NodeID, stakingNum uint64, receives []reward.DelegateRewardReceipt, db snapshotdb.DB) error

func VerifyTxData added in v0.7.3

func VerifyTxData(input []byte, command map[uint16]interface{}) (cnCode uint16, fn interface{}, FnParams []reflect.Value, err error)

Types

type BasePlugin

type BasePlugin interface {
	BeginBlock(blockHash common.Hash, header *types.Header, state xcom.StateDB) error
	EndBlock(blockHash common.Hash, header *types.Header, state xcom.StateDB) error
	Confirmed(nodeId discover.NodeID, block *types.Block) error
}

type DelegationInfoWithRewardPerList added in v0.7.6

type DelegationInfoWithRewardPerList struct {
	DelegationInfo *staking.DelegationInfo
	RewardPerList  []*reward.DelegateRewardPer
}

func NewDelegationInfoWithRewardPerList added in v0.7.6

func NewDelegationInfoWithRewardPerList(delegationInfo *staking.DelegationInfo, rewardPerList []*reward.DelegateRewardPer) *DelegationInfoWithRewardPerList

func (*DelegationInfoWithRewardPerList) String added in v0.7.6

type GovPlugin

type GovPlugin struct {
}

func GovPluginInstance

func GovPluginInstance() *GovPlugin

func (*GovPlugin) BeginBlock

func (govPlugin *GovPlugin) BeginBlock(blockHash common.Hash, header *types.Header, state xcom.StateDB) error

implement BasePlugin

func (*GovPlugin) Confirmed

func (govPlugin *GovPlugin) Confirmed(nodeId discover.NodeID, block *types.Block) error

func (*GovPlugin) EndBlock

func (govPlugin *GovPlugin) EndBlock(blockHash common.Hash, header *types.Header, state xcom.StateDB) error

implement BasePlugin

type RestrictingPlugin

type RestrictingPlugin struct {
	// contains filtered or unexported fields
}

func RestrictingInstance

func RestrictingInstance() *RestrictingPlugin

func (*RestrictingPlugin) AddRestrictingRecord

func (rp *RestrictingPlugin) AddRestrictingRecord(from, account common.Address, blockNum uint64, plans []restricting.RestrictingPlan, state xcom.StateDB) error

AddRestrictingRecord stores four K-V record in StateDB: RestrictingInfo: the account info to be released ReleaseEpoch: the number of accounts to be released on the epoch corresponding to the target block height ReleaseAccount: the account on the index on the target epoch ReleaseAmount: the amount of the account to be released on the target epoch

func (*RestrictingPlugin) BeginBlock

func (rp *RestrictingPlugin) BeginBlock(blockHash common.Hash, head *types.Header, state xcom.StateDB) error

BeginBlock does something like check input params before execute transactions, in RestrictingPlugin it does nothing.

func (*RestrictingPlugin) Confirmed

func (rp *RestrictingPlugin) Confirmed(nodeId discover.NodeID, block *types.Block) error

Confirmed is empty function

func (*RestrictingPlugin) EndBlock

func (rp *RestrictingPlugin) EndBlock(blockHash common.Hash, head *types.Header, state xcom.StateDB) error

EndBlock invoke releaseRestricting

func (*RestrictingPlugin) GetRestrictingInfo

func (rp *RestrictingPlugin) GetRestrictingInfo(account common.Address, state xcom.StateDB) (*restricting.Result, *common.BizError)

func (*RestrictingPlugin) InitGenesisRestrictingPlans added in v0.7.5

func (rp *RestrictingPlugin) InitGenesisRestrictingPlans(statedb xcom.StateDB) error

init the genesis restricting plans

func (*RestrictingPlugin) PledgeLockFunds

func (rp *RestrictingPlugin) PledgeLockFunds(account common.Address, amount *big.Int, state xcom.StateDB) error

PledgeLockFunds transfer the money from the restricting contract account to the staking contract account

func (*RestrictingPlugin) ReturnLockFunds

func (rp *RestrictingPlugin) ReturnLockFunds(account common.Address, amount *big.Int, state xcom.StateDB) error

ReturnLockFunds transfer the money from the staking contract account to the restricting contract account

func (*RestrictingPlugin) SlashingNotify

func (rp *RestrictingPlugin) SlashingNotify(account common.Address, amount *big.Int, state xcom.StateDB) error

SlashingNotify modify Debt of restricting account

type RewardMgrPlugin added in v0.7.3

type RewardMgrPlugin struct {
	// contains filtered or unexported fields
}

func RewardMgrInstance

func RewardMgrInstance() *RewardMgrPlugin

func (*RewardMgrPlugin) AllocatePackageBlock added in v0.7.6

func (rmp *RewardMgrPlugin) AllocatePackageBlock(blockHash common.Hash, head *types.Header, reward *big.Int, state xcom.StateDB) error

AllocatePackageBlock used for reward new block. it returns coinbase and error

func (*RewardMgrPlugin) AllocateStakingReward added in v0.7.6

func (rmp *RewardMgrPlugin) AllocateStakingReward(blockNumber uint64, blockHash common.Hash, sreward *big.Int, state xcom.StateDB) ([]*staking.Candidate, error)

AllocateStakingReward used for reward staking at the settle block

func (*RewardMgrPlugin) BeginBlock added in v0.7.3

func (rmp *RewardMgrPlugin) BeginBlock(blockHash common.Hash, head *types.Header, state xcom.StateDB) error

BeginBlock does something like check input params before execute transactions, in RewardMgrPlugin it does nothing.

func (*RewardMgrPlugin) CalDelegateRewardAndNodeReward added in v0.7.6

func (rmp *RewardMgrPlugin) CalDelegateRewardAndNodeReward(totalReward *big.Int, per uint16) (*big.Int, *big.Int)

func (*RewardMgrPlugin) CalcEpochReward added in v0.7.5

func (rmp *RewardMgrPlugin) CalcEpochReward(blockHash common.Hash, head *types.Header, state xcom.StateDB) (*big.Int, *big.Int, error)

func (*RewardMgrPlugin) Confirmed added in v0.7.3

func (rmp *RewardMgrPlugin) Confirmed(nodeId discover.NodeID, block *types.Block) error

Confirmed does nothing

func (*RewardMgrPlugin) EndBlock added in v0.7.3

func (rmp *RewardMgrPlugin) EndBlock(blockHash common.Hash, head *types.Header, state xcom.StateDB) error

EndBlock will handle reward work, if it's time to settle, reward staking. Then reward worker for create new block, this is necessary. At last if current block is the last block at the end of year, increasing issuance.

func (*RewardMgrPlugin) GetDelegateReward added in v0.7.6

func (rmp *RewardMgrPlugin) GetDelegateReward(blockHash common.Hash, blockNum uint64, account common.Address, nodes []discover.NodeID, state xcom.StateDB) ([]reward.NodeDelegateRewardPresenter, error)

func (*RewardMgrPlugin) GetDelegateRewardPerList added in v0.7.6

func (rmp *RewardMgrPlugin) GetDelegateRewardPerList(blockHash common.Hash, nodeID discover.NodeID, stakingNum, fromEpoch, toEpoch uint64) ([]*reward.DelegateRewardPer, error)

func (*RewardMgrPlugin) HandleDelegatePerReward added in v0.7.6

func (rmp *RewardMgrPlugin) HandleDelegatePerReward(blockHash common.Hash, blockNumber uint64, list []*staking.Candidate, state xcom.StateDB) error

func (*RewardMgrPlugin) ReturnDelegateReward added in v0.7.6

func (rmp *RewardMgrPlugin) ReturnDelegateReward(address common.Address, amount *big.Int, state xcom.StateDB)

func (*RewardMgrPlugin) SetCurrentNodeID added in v0.7.6

func (rmp *RewardMgrPlugin) SetCurrentNodeID(nodeId discover.NodeID)

func (*RewardMgrPlugin) WithdrawDelegateReward added in v0.7.6

func (rmp *RewardMgrPlugin) WithdrawDelegateReward(blockHash common.Hash, blockNum uint64, account common.Address, list []*DelegationInfoWithRewardPerList, state xcom.StateDB) ([]reward.NodeDelegateReward, error)

type SlashingPlugin

type SlashingPlugin struct {
	// contains filtered or unexported fields
}

func SlashInstance

func SlashInstance() *SlashingPlugin

func (*SlashingPlugin) BeginBlock

func (sp *SlashingPlugin) BeginBlock(blockHash common.Hash, header *types.Header, state xcom.StateDB) error

func (*SlashingPlugin) CheckDuplicateSign

func (sp *SlashingPlugin) CheckDuplicateSign(addr common.Address, blockNumber uint64, dupType consensus.EvidenceType, stateDB xcom.StateDB) ([]byte, error)

func (*SlashingPlugin) Confirmed

func (sp *SlashingPlugin) Confirmed(nodeId discover.NodeID, block *types.Block) error

func (*SlashingPlugin) DecodeEvidence

func (sp *SlashingPlugin) DecodeEvidence(dupType consensus.EvidenceType, data string) (consensus.Evidence, error)

func (*SlashingPlugin) EndBlock

func (sp *SlashingPlugin) EndBlock(blockHash common.Hash, header *types.Header, state xcom.StateDB) error

func (*SlashingPlugin) GetPrePackAmount added in v0.7.3

func (sp *SlashingPlugin) GetPrePackAmount(blockNumber uint64, parentHash common.Hash) (map[discover.NodeID]uint32, error)

Get the consensus rate of all nodes in the previous round

func (*SlashingPlugin) SetDecodeEvidenceFun

func (sp *SlashingPlugin) SetDecodeEvidenceFun(f func(dupType consensus.EvidenceType, data string) (consensus.Evidence, error))

func (*SlashingPlugin) SetPrivateKey

func (sp *SlashingPlugin) SetPrivateKey(privateKey *ecdsa.PrivateKey)

func (*SlashingPlugin) Slash

func (sp *SlashingPlugin) Slash(evidence consensus.Evidence, blockHash common.Hash, blockNumber uint64, stateDB xcom.StateDB, caller common.Address) error

type StakingPlugin

type StakingPlugin struct {
	// contains filtered or unexported fields
}

func StakingInstance

func StakingInstance() *StakingPlugin

Instance a global StakingPlugin

func (*StakingPlugin) BeginBlock

func (sk *StakingPlugin) BeginBlock(blockHash common.Hash, header *types.Header, state xcom.StateDB) error

func (*StakingPlugin) Confirmed

func (sk *StakingPlugin) Confirmed(nodeId discover.NodeID, block *types.Block) error

func (*StakingPlugin) CreateCandidate

func (sk *StakingPlugin) CreateCandidate(state xcom.StateDB, blockHash common.Hash, blockNumber, amount *big.Int,
	typ uint16, addr common.Address, can *staking.Candidate) error

func (*StakingPlugin) DeclarePromoteNotify

func (sk *StakingPlugin) DeclarePromoteNotify(blockHash common.Hash, blockNumber uint64, nodeId discover.NodeID,
	programVersion uint32) error

func (*StakingPlugin) Delegate

func (sk *StakingPlugin) Delegate(state xcom.StateDB, blockHash common.Hash, blockNumber *big.Int,
	delAddr common.Address, del *staking.Delegation, canAddr common.Address, can *staking.Candidate,
	typ uint16, amount *big.Int, delegateRewardPerList []*reward.DelegateRewardPer) error

func (*StakingPlugin) EditCandidate

func (sk *StakingPlugin) EditCandidate(blockHash common.Hash, blockNumber *big.Int, canAddr common.Address, can *staking.Candidate) error

func (*StakingPlugin) ElectNextVerifierList

func (sk *StakingPlugin) ElectNextVerifierList(blockHash common.Hash, blockNumber uint64, state xcom.StateDB) error

func (*StakingPlugin) Election

func (sk *StakingPlugin) Election(blockHash common.Hash, header *types.Header, state xcom.StateDB) error

func (*StakingPlugin) EndBlock

func (sk *StakingPlugin) EndBlock(blockHash common.Hash, header *types.Header, state xcom.StateDB) error

func (*StakingPlugin) GetCanBase added in v0.7.4

func (sk *StakingPlugin) GetCanBase(blockHash common.Hash, addr common.Address) (*staking.CandidateBase, error)

func (*StakingPlugin) GetCanBaseByIrr added in v0.7.4

func (sk *StakingPlugin) GetCanBaseByIrr(addr common.Address) (*staking.CandidateBase, error)

func (*StakingPlugin) GetCanBaseList added in v0.7.4

func (sk *StakingPlugin) GetCanBaseList(blockHash common.Hash, blockNumber uint64) (staking.CandidateBaseQueue, error)

func (*StakingPlugin) GetCanMutable added in v0.7.4

func (sk *StakingPlugin) GetCanMutable(blockHash common.Hash, addr common.Address) (*staking.CandidateMutable, error)

func (*StakingPlugin) GetCanMutableByIrr added in v0.7.4

func (sk *StakingPlugin) GetCanMutableByIrr(addr common.Address) (*staking.CandidateMutable, error)

func (*StakingPlugin) GetCandidateCompactInfo

func (sk *StakingPlugin) GetCandidateCompactInfo(blockHash common.Hash, blockNumber uint64, addr common.Address) (*staking.CandidateHex, error)

func (*StakingPlugin) GetCandidateInfo

func (sk *StakingPlugin) GetCandidateInfo(blockHash common.Hash, addr common.Address) (*staking.Candidate, error)

func (*StakingPlugin) GetCandidateInfoByIrr

func (sk *StakingPlugin) GetCandidateInfoByIrr(addr common.Address) (*staking.Candidate, error)

func (*StakingPlugin) GetCandidateList

func (sk *StakingPlugin) GetCandidateList(blockHash common.Hash, blockNumber uint64) (staking.CandidateHexQueue, error)

func (*StakingPlugin) GetCandidateONEpoch

func (sk *StakingPlugin) GetCandidateONEpoch(blockHash common.Hash, blockNumber uint64, isCommit bool) (staking.CandidateQueue, error)

func (*StakingPlugin) GetCandidateONRound

func (sk *StakingPlugin) GetCandidateONRound(blockHash common.Hash, blockNumber uint64,
	flag uint, isCommit bool) (staking.CandidateQueue, error)

func (*StakingPlugin) GetDelegateExCompactInfo

func (sk *StakingPlugin) GetDelegateExCompactInfo(blockHash common.Hash, blockNumber uint64, delAddr common.Address,
	nodeId discover.NodeID, stakeBlockNumber uint64) (*staking.DelegationEx, error)

func (*StakingPlugin) GetDelegateExInfo

func (sk *StakingPlugin) GetDelegateExInfo(blockHash common.Hash, delAddr common.Address,
	nodeId discover.NodeID, stakeBlockNumber uint64) (*staking.DelegationEx, error)

func (*StakingPlugin) GetDelegateExInfoByIrr

func (sk *StakingPlugin) GetDelegateExInfoByIrr(delAddr common.Address,
	nodeId discover.NodeID, stakeBlockNumber uint64) (*staking.DelegationEx, error)

func (*StakingPlugin) GetDelegateInfo

func (sk *StakingPlugin) GetDelegateInfo(blockHash common.Hash, delAddr common.Address,
	nodeId discover.NodeID, stakeBlockNumber uint64) (*staking.Delegation, error)

func (*StakingPlugin) GetDelegateInfoByIrr

func (sk *StakingPlugin) GetDelegateInfoByIrr(delAddr common.Address,
	nodeId discover.NodeID, stakeBlockNumber uint64) (*staking.Delegation, error)

func (*StakingPlugin) GetDelegatesInfo added in v0.7.6

func (sk *StakingPlugin) GetDelegatesInfo(blockHash common.Hash, delAddr common.Address) ([]*staking.DelegationInfo, error)

func (*StakingPlugin) GetLastNumber

func (sk *StakingPlugin) GetLastNumber(blockNumber uint64) uint64

func (*StakingPlugin) GetRelatedListByDelAddr

func (sk *StakingPlugin) GetRelatedListByDelAddr(blockHash common.Hash, addr common.Address) (staking.DelRelatedQueue, error)

func (*StakingPlugin) GetValidator

func (sk *StakingPlugin) GetValidator(blockNumber uint64) (*cbfttypes.Validators, error)

func (*StakingPlugin) GetValidatorList

func (sk *StakingPlugin) GetValidatorList(blockHash common.Hash, blockNumber uint64, flag uint, isCommit bool) (
	staking.ValidatorExQueue, error)

flag:NOTE 0: Query previous round consensus validator 1: Query current round consensus validaor 2: Query next round consensus validator

func (*StakingPlugin) GetVerifierCandidateInfo added in v0.7.6

func (sk *StakingPlugin) GetVerifierCandidateInfo(blockHash common.Hash, blockNumber uint64) ([]*staking.Candidate, error)

func (*StakingPlugin) GetVerifierList

func (sk *StakingPlugin) GetVerifierList(blockHash common.Hash, blockNumber uint64, isCommit bool) (staking.ValidatorExQueue, error)

func (*StakingPlugin) HandleUnCandidateItem

func (sk *StakingPlugin) HandleUnCandidateItem(state xcom.StateDB, blockNumber uint64, blockHash common.Hash, epoch uint64) error

func (*StakingPlugin) HasStake

func (sk *StakingPlugin) HasStake(blockHash common.Hash, addr common.Address) (bool, error)

func (*StakingPlugin) IncreaseStaking

func (sk *StakingPlugin) IncreaseStaking(state xcom.StateDB, blockHash common.Hash, blockNumber,
	amount *big.Int, typ uint16, canAddr common.Address, can *staking.Candidate) error

func (*StakingPlugin) IsCandidate

func (sk *StakingPlugin) IsCandidate(blockHash common.Hash, nodeId discover.NodeID, isCommit bool) (bool, error)

func (*StakingPlugin) IsCandidateNode

func (sk *StakingPlugin) IsCandidateNode(nodeID discover.NodeID) bool

NOTE: Verify that it is the validator of the current Epoch

func (*StakingPlugin) IsCurrValidator

func (sk *StakingPlugin) IsCurrValidator(blockHash common.Hash, blockNumber uint64, nodeId discover.NodeID, isCommit bool) (bool, error)

func (*StakingPlugin) IsCurrVerifier

func (sk *StakingPlugin) IsCurrVerifier(blockHash common.Hash, blockNumber uint64, nodeId discover.NodeID, isCommit bool) (bool, error)

func (*StakingPlugin) ListCurrentValidatorID

func (sk *StakingPlugin) ListCurrentValidatorID(blockHash common.Hash, blockNumber uint64) ([]discover.NodeID, error)

func (*StakingPlugin) ListVerifierNodeID

func (sk *StakingPlugin) ListVerifierNodeID(blockHash common.Hash, blockNumber uint64) ([]discover.NodeID, error)

func (*StakingPlugin) ProposalPassedNotify

func (sk *StakingPlugin) ProposalPassedNotify(blockHash common.Hash, blockNumber uint64, nodeIds []discover.NodeID,
	programVersion uint32) error

func (*StakingPlugin) RollBackStaking

func (sk *StakingPlugin) RollBackStaking(state xcom.StateDB, blockHash common.Hash, blockNumber *big.Int,
	addr common.Address, typ uint16) error

/ This method may only be called when creatStaking

func (*StakingPlugin) SetEventMux

func (sk *StakingPlugin) SetEventMux(eventMux *event.TypeMux)

func (*StakingPlugin) SlashCandidates

func (sk *StakingPlugin) SlashCandidates(state xcom.StateDB, blockHash common.Hash, blockNumber uint64, queue ...*staking.SlashNodeItem) error

NotifyPunishedVerifiers

func (*StakingPlugin) WithdrewDelegate

func (sk *StakingPlugin) WithdrewDelegate(state xcom.StateDB, blockHash common.Hash, blockNumber, amount *big.Int,
	delAddr common.Address, nodeId discover.NodeID, stakingBlockNum uint64, del *staking.Delegation, delegateRewardPerList []*reward.DelegateRewardPer) (*big.Int, error)

func (*StakingPlugin) WithdrewStaking

func (sk *StakingPlugin) WithdrewStaking(state xcom.StateDB, blockHash common.Hash, blockNumber *big.Int,
	canAddr common.Address, can *staking.Candidate) error

Jump to

Keyboard shortcuts

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