Help us shape the future of Go! Take the 2026 Go Developer Survey

dpos

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Nov 21, 2018 License: MIT Imports: 23 Imported by: 0

Documentation

Index

Constants

View Source
const (
	EternalBlockMsgChBufferSize        = 65536
	MaxEternalBlockMsgCacheTime        = 10 * 60
	MinConfirmMsgNumberForEternalBlock = 2 * PeriodSize / 3
	EternalBlockMsgKeySize             = crypto.HashSize + 8
)

Define const.

View Source
const (
	SecondInMs           = int64(1000)
	NewBlockTimeInterval = int64(5000)
	MaxPackedTxTime      = int64(2000)
	MaxBlockTimeOut      = 2
	PeriodSize           = 6
)

Define const

Variables

View Source
var (
	// dpos
	ErrNoLegalPowerToMint     = errors.New("No legal power to mint")
	ErrNotMyTurnToMint        = errors.New("Not my turn to mint")
	ErrWrongTimeToMint        = errors.New("Wrong time to mint")
	ErrNotFoundMiner          = errors.New("Failed to find miner")
	ErrDuplicateSignUpTx      = errors.New("Duplicate sign up tx")
	ErrCandidateNotFound      = errors.New("Candidate not found")
	ErrRepeatedMintAtSameTime = errors.New("Repeated mint at same time")
	ErrFailedToVerifySign     = errors.New("Failed to verify sign block")
	ErrNotMintPeer            = errors.New("Invalid mint peer")
	ErrInvalidMinerEpoch      = errors.New("Invalid miner epoch")

	// context
	ErrInvalidCandidateProtoMessage        = errors.New("Invalid candidate proto message")
	ErrInvalidConsensusContextProtoMessage = errors.New("Invalid consensus context proto message")
	ErrInvalidCandidateContextProtoMessage = errors.New("Invalid condidate context proto message")
	ErrInvalidPeriodContextProtoMessage    = errors.New("Invalid period contex proto message")
	ErrInvalidPeriodProtoMessage           = errors.New("Invalid period proto message")
	ErrInvalidEternalBlockMsgProtoMessage  = errors.New("Invalid eternalBlockMsg proto message")

	// bft_service
	ErrNoNeedToUpdateEternalBlock = errors.New("No need to update Eternal block")
	ErrIllegalMsg                 = errors.New("Illegal message from remote peer")
	ErrEternalBlockMsgHashIsExist = errors.New("EternalBlockMsgHash is already exist")
)

Define err message

View Source
var (
	// MetricsMintTurnCounter signs whose turn to mint
	MetricsMintTurnCounter = metrics.NewCounter("box.dpos.mint.turn")
)

Functions

This section is empty.

Types

type BftService

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

BftService use for quick identification of eternal block.

func NewBftService

func NewBftService(consensus *Dpos) (*BftService, error)

NewBftService new bft service for eternalBlockMsg.

func (*BftService) Start

func (bft *BftService) Start()

Start bft service to handle eternalBlockMsg.

type Candidate

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

Candidate represents possible to be the miner.

func (*Candidate) FromProtoMessage

func (candidate *Candidate) FromProtoMessage(message proto.Message) error

FromProtoMessage converts proto message to candidate.

func (*Candidate) Marshal

func (candidate *Candidate) Marshal() (data []byte, err error)

Marshal method marshal Candidate object to binary

func (*Candidate) ToProtoMessage

func (candidate *Candidate) ToProtoMessage() (proto.Message, error)

ToProtoMessage converts candidate to proto message.

func (*Candidate) Unmarshal

func (candidate *Candidate) Unmarshal(data []byte) error

Unmarshal method unmarshal binary data to Candidate object

type CandidateContext

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

CandidateContext represents possible to be the miner.

func InitCandidateContext

func InitCandidateContext() *CandidateContext

InitCandidateContext init candidate context

func (*CandidateContext) CandidateContextHash

func (candidateContext *CandidateContext) CandidateContextHash() (*crypto.HashType, error)

CandidateContextHash calc candidate context hash.

func (*CandidateContext) FromProtoMessage

func (candidateContext *CandidateContext) FromProtoMessage(message proto.Message) error

FromProtoMessage converts proto message to candidate.

func (*CandidateContext) Marshal

func (candidateContext *CandidateContext) Marshal() (data []byte, err error)

Marshal method marshal CandidateContext object to binary

func (*CandidateContext) ToProtoMessage

func (candidateContext *CandidateContext) ToProtoMessage() (proto.Message, error)

ToProtoMessage converts block header to proto message.

func (*CandidateContext) Unmarshal

func (candidateContext *CandidateContext) Unmarshal(data []byte) error

Unmarshal method unmarshal binary data to CandidateContext object

type Config

type Config struct {
	Keypath    string `mapstructure:"keypath"`
	EnableMint bool   `mapstructure:"enable_mint"`
	Passphrase string `mapstructure:"passphrase"`
}

Config defines the configurations of dpos

type ConsensusContext

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

ConsensusContext represents consensus context info.

type Dpos

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

Dpos define dpos struct

func NewDpos

func NewDpos(parent goprocess.Process, chain *chain.BlockChain, txpool *txpool.TransactionPool, net p2p.Net, cfg *Config) (*Dpos, error)

NewDpos new a dpos implement.

func (*Dpos) BroadcastEternalMsgToMiners

func (dpos *Dpos) BroadcastEternalMsgToMiners(block *types.Block) error

BroadcastEternalMsgToMiners broadcast eternal message to miners

func (*Dpos) EnableMint

func (dpos *Dpos) EnableMint() bool

EnableMint return the peer mint status

func (*Dpos) LoadCandidates

func (dpos *Dpos) LoadCandidates() error

LoadCandidates load candidates info.

func (*Dpos) LoadPeriodContext

func (dpos *Dpos) LoadPeriodContext() (*PeriodContext, error)

LoadPeriodContext load period context

func (*Dpos) PackTxs

func (dpos *Dpos) PackTxs(block *types.Block, scriptAddr []byte) error

PackTxs packed txs and add them to block.

func (*Dpos) Proc

func (dpos *Dpos) Proc() goprocess.Process

Proc returns the goprocess running the service

func (*Dpos) RecoverMint

func (dpos *Dpos) RecoverMint()

RecoverMint resumes generating blocks.

func (*Dpos) Run

func (dpos *Dpos) Run() error

Run start dpos

func (*Dpos) Setup

func (dpos *Dpos) Setup() error

Setup setup dpos

func (*Dpos) Stop

func (dpos *Dpos) Stop()

Stop dpos

func (*Dpos) StopMint

func (dpos *Dpos) StopMint()

StopMint stops generating blocks.

func (*Dpos) StoreCandidateContext

func (dpos *Dpos) StoreCandidateContext(hash *crypto.HashType) error

StoreCandidateContext store candidate context

func (*Dpos) StorePeriodContext

func (dpos *Dpos) StorePeriodContext() error

StorePeriodContext store period context

func (*Dpos) ValidateMiner

func (dpos *Dpos) ValidateMiner() bool

ValidateMiner verifies whether the miner has authority to mint.

func (*Dpos) VerifyMinerEpoch

func (dpos *Dpos) VerifyMinerEpoch(block *types.Block) error

VerifyMinerEpoch verifies miner epoch.

func (*Dpos) VerifySign

func (dpos *Dpos) VerifySign(block *types.Block) (bool, error)

VerifySign consensus verifies signature info.

type EternalBlockMsg

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

EternalBlockMsg represents eternal block msg.

func (*EternalBlockMsg) FromProtoMessage

func (ebm *EternalBlockMsg) FromProtoMessage(message proto.Message) error

FromProtoMessage converts proto message to EternalBlockMsg.

func (*EternalBlockMsg) Marshal

func (ebm *EternalBlockMsg) Marshal() (data []byte, err error)

Marshal method marshal Candidate object to binary

func (*EternalBlockMsg) ToProtoMessage

func (ebm *EternalBlockMsg) ToProtoMessage() (proto.Message, error)

ToProtoMessage converts EternalBlockMsg to proto message.

func (*EternalBlockMsg) Unmarshal

func (ebm *EternalBlockMsg) Unmarshal(data []byte) error

Unmarshal method unmarshal binary data to Candidate object

type EternalBlockMsgKeyType

type EternalBlockMsgKeyType [EternalBlockMsgKeySize]byte

EternalBlockMsgKeyType is renamed EternalBlockMsgKey type

type Period

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

Period represents period info.

func (*Period) FromProtoMessage

func (period *Period) FromProtoMessage(message proto.Message) error

FromProtoMessage converts proto message to candidate.

func (*Period) Marshal

func (period *Period) Marshal() (data []byte, err error)

Marshal method marshal Period object to binary

func (*Period) ToProtoMessage

func (period *Period) ToProtoMessage() (proto.Message, error)

ToProtoMessage converts candidate to proto message.

func (*Period) Unmarshal

func (period *Period) Unmarshal(data []byte) error

Unmarshal method unmarshal binary data to Period object

type PeriodContext

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

PeriodContext represents period context info.

func InitPeriodContext

func InitPeriodContext() (*PeriodContext, error)

InitPeriodContext initializes period context.

func (*PeriodContext) FindMinerWithTimeStamp

func (pc *PeriodContext) FindMinerWithTimeStamp(timestamp int64) (*types.AddressHash, error)

FindMinerWithTimeStamp find miner in given timestamp

func (*PeriodContext) FromProtoMessage

func (pc *PeriodContext) FromProtoMessage(message proto.Message) error

FromProtoMessage converts proto message to PeriodContext.

func (*PeriodContext) Marshal

func (pc *PeriodContext) Marshal() (data []byte, err error)

Marshal method marshal ConsensusContext object to binary

func (*PeriodContext) ToProtoMessage

func (pc *PeriodContext) ToProtoMessage() (proto.Message, error)

ToProtoMessage converts PeriodContext to proto message.

func (*PeriodContext) Unmarshal

func (pc *PeriodContext) Unmarshal(data []byte) error

Unmarshal method unmarshal binary data to ConsensusContext object

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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