dpos

package module
v0.0.0-...-4889046 Latest Latest
Warning

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

Go to latest
Published: Aug 14, 2022 License: Apache-2.0 Imports: 24 Imported by: 2

README

consensus-dpos

介绍

hercules 链DPoS共识模块

软件架构

软件架构说明

安装教程
  1. xxxx
  2. xxxx
  3. xxxx
使用说明
  1. xxxx
  2. xxxx
  3. xxxx
参与贡献
  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request
特技
  1. 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md
  2. Gitee 官方博客 blog.gitee.com
  3. 你可以 https://gitee.com/explore 这个地址来了解 Gitee 上的优秀开源项目
  4. GVP 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
  5. Gitee 官方提供的使用手册 https://gitee.com/help
  6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 https://gitee.com/gitee-stars/

Documentation

Index

Constants

View Source
const DposOrgId = "dpos_org_id"
View Source
const ModuleName = "dpos_module"

Variables

This section is empty.

Functions

func GetChainConfig

func GetChainConfig(store protocol.BlockchainStore) (*configPb.ChainConfig, error)

func GetLatestEpochInfo

func GetLatestEpochInfo(store protocol.BlockchainStore) (*syscontract.Epoch, error)

func GetNodeIDsFromValidators

func GetNodeIDsFromValidators(store protocol.BlockchainStore, validators []string) ([]string, error)

func GetValidatorList

func GetValidatorList(chainConfig *configPb.ChainConfig, store protocol.BlockchainStore) (validators []string, err error)

func GetValidatorListFromLedger

func GetValidatorListFromLedger(store protocol.BlockchainStore) (validators []string, err error)

func ValidatorsElection

func ValidatorsElection(
	infos []*pbdpos.CandidateInfo, n int, seed []byte, outSort bool) ([]*pbdpos.CandidateInfo, error)

ValidatorsElection select validators from Candidates

Types

type CandidateInfos

type CandidateInfos []*pbdpos.CandidateInfo

CandidateInfos array for sort

func (CandidateInfos) Len

func (s CandidateInfos) Len() int

func (CandidateInfos) Less

func (s CandidateInfos) Less(i, j int) bool

func (CandidateInfos) Swap

func (s CandidateInfos) Swap(i, j int)

type DPoSImpl

type DPoSImpl struct {
	protocol.ConsensusEngine
	// contains filtered or unexported fields
}

func NewDPoSImpl

func NewDPoSImpl(config *consensusUtils.ConsensusImplConfig, baseConsensusEngine protocol.ConsensusExtendEngine) *DPoSImpl

NewDPoSImpl create dpos instance with config and base consensus engine

func (*DPoSImpl) CreateRWSet

func (impl *DPoSImpl) CreateRWSet(preBlkHash []byte, proposedBlock *consensus.ProposalBlock) error

func (*DPoSImpl) GetConsensusStateJSON

func (impl *DPoSImpl) GetConsensusStateJSON() ([]byte, error)

func (*DPoSImpl) GetLastHeight

func (impl *DPoSImpl) GetLastHeight() uint64

func (*DPoSImpl) GetValidators

func (impl *DPoSImpl) GetValidators() ([]string, error)

func (*DPoSImpl) SetConsensusEngine

func (impl *DPoSImpl) SetConsensusEngine(engine protocol.ConsensusEngine)

func (*DPoSImpl) Start

func (impl *DPoSImpl) Start() error

func (*DPoSImpl) Stop

func (impl *DPoSImpl) Stop() error

func (*DPoSImpl) VerifyConsensusArgs

func (impl *DPoSImpl) VerifyConsensusArgs(block *common.Block, blockTxRwSet map[string]*common.TxRWSet) (err error)

type DPoSState

type DPoSState struct {
	EpochInfo              *syscontract.Epoch
	CandidateInfos         []NodeInfo
	InternalConsensusState []byte
}

type NodeInfo

type NodeInfo struct {
	NodeId        string
	StakeWeight   string
	CandidateAddr string
}

Jump to

Keyboard shortcuts

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