Documentation
¶
Index ¶
- Constants
- func NewDispatcherAndIllegalMonitor(consensus Consensus, eventMonitor *log.EventMonitor, network DposNetwork, ...) (ProposalDispatcher, IllegalBehaviorMonitor)
- type AbnormalRecovering
- type Consensus
- type ConsensusBlockCache
- type ConsensusBlockCacheListener
- type DposEventConditionHandler
- type DposHandlerSwitch
- type DposManager
- type DposNetwork
- type DposNetworkConfig
- type DposNormalHandler
- func (h DposNormalHandler) AddListeners(listeners ...log.EventListener)
- func (h *DposNormalHandler) ChangeView(firstBlockHash *common.Uint256)
- func (h DposNormalHandler) FinishConsensus()
- func (h DposNormalHandler) HelpToRecoverAbnormal(id peer.PID, height uint32)
- func (h DposNormalHandler) Initialize(dispatcher ProposalDispatcher, consensus Consensus)
- func (h DposNormalHandler) OnViewChanged(isOnDuty bool)
- func (h *DposNormalHandler) ProcessAcceptVote(id peer.PID, p types.DPosProposalVote)
- func (h *DposNormalHandler) ProcessRejectVote(id peer.PID, p types.DPosProposalVote)
- func (h DposNormalHandler) RecoverAbnormal(status *msg2.ConsensusStatus)
- func (h DposNormalHandler) RequestAbnormalRecovering()
- func (h DposNormalHandler) ResponseGetBlocks(id peer.PID, startBlockHeight, endBlockHeight uint32)
- func (h *DposNormalHandler) StartNewProposal(p types.DPosProposal)
- func (h DposNormalHandler) SwitchTo(onDuty bool)
- func (h *DposNormalHandler) TryStartNewConsensus(b *types.Block) bool
- type DposOnDutyHandler
- func (h DposOnDutyHandler) AddListeners(listeners ...log.EventListener)
- func (h *DposOnDutyHandler) ChangeView(firstBlockHash *common.Uint256)
- func (h DposOnDutyHandler) FinishConsensus()
- func (h DposOnDutyHandler) HelpToRecoverAbnormal(id peer.PID, height uint32)
- func (h DposOnDutyHandler) Initialize(dispatcher ProposalDispatcher, consensus Consensus)
- func (h DposOnDutyHandler) OnViewChanged(isOnDuty bool)
- func (h *DposOnDutyHandler) ProcessAcceptVote(id peer.PID, p types.DPosProposalVote)
- func (h *DposOnDutyHandler) ProcessRejectVote(id peer.PID, p types.DPosProposalVote)
- func (h DposOnDutyHandler) RecoverAbnormal(status *msg2.ConsensusStatus)
- func (h DposOnDutyHandler) RequestAbnormalRecovering()
- func (h DposOnDutyHandler) ResponseGetBlocks(id peer.PID, startBlockHeight, endBlockHeight uint32)
- func (h *DposOnDutyHandler) StartNewProposal(p types.DPosProposal)
- func (h DposOnDutyHandler) SwitchTo(onDuty bool)
- func (h *DposOnDutyHandler) TryStartNewConsensus(b *types.Block) bool
- type IllegalBehaviorMonitor
- type NetworkEventListener
- type ProposalDispatcher
- type StatusSyncEventListener
- type ViewListener
Constants ¶
View Source
const WaitHeightTolerance = uint32(1)
Variables ¶
This section is empty.
Functions ¶
func NewDispatcherAndIllegalMonitor ¶
func NewDispatcherAndIllegalMonitor(consensus Consensus, eventMonitor *log.EventMonitor, network DposNetwork, manager DposManager, dposAccount account.DposAccount) (ProposalDispatcher, IllegalBehaviorMonitor)
Types ¶
type AbnormalRecovering ¶
type AbnormalRecovering interface {
CollectConsensusStatus(height uint32, status *msg.ConsensusStatus) error
RecoverFromConsensusStatus(status *msg.ConsensusStatus) error
}
type Consensus ¶
type Consensus interface {
AbnormalRecovering
IsRunning() bool
SetRunning()
IsReady() bool
SetReady()
IsOnDuty() bool
SetOnDuty(onDuty bool)
IsArbitratorOnDuty(arbitrator string) bool
GetOnDutyArbitrator() string
StartConsensus(b *types.Block)
ProcessBlock(b *types.Block)
ChangeView()
TryChangeView() bool
GetViewOffset() uint32
}
func NewConsensus ¶
func NewConsensus(manager DposManager, tolerance time.Duration, viewListener ViewListener) Consensus
type ConsensusBlockCache ¶
type ConsensusBlockCache struct {
ConsensusBlocks map[common.Uint256]*types.Block
ConsensusBlockList []common.Uint256
Listener ConsensusBlockCacheListener
}
func (*ConsensusBlockCache) AddValue ¶
func (c *ConsensusBlockCache) AddValue(key common.Uint256, value *types.Block)
func (*ConsensusBlockCache) GetFirstArrivedBlockHash ¶
func (c *ConsensusBlockCache) GetFirstArrivedBlockHash() (common.Uint256, bool)
func (*ConsensusBlockCache) Reset ¶
func (c *ConsensusBlockCache) Reset()
func (*ConsensusBlockCache) TryGetValue ¶
type DposEventConditionHandler ¶
type DposEventConditionHandler interface {
TryStartNewConsensus(b *types.Block) bool
ChangeView(firstBlockHash *common.Uint256)
StartNewProposal(p types.DPosProposal)
ProcessAcceptVote(id peer.PID, p types.DPosProposalVote)
ProcessRejectVote(id peer.PID, p types.DPosProposalVote)
}
type DposHandlerSwitch ¶
type DposHandlerSwitch interface {
ViewListener
DposEventConditionHandler
Initialize(dispatcher ProposalDispatcher, consensus Consensus)
SwitchTo(isOnDuty bool)
FinishConsensus()
RequestAbnormalRecovering()
HelpToRecoverAbnormal(id peer.PID, height uint32)
RecoverAbnormal(status *msg2.ConsensusStatus)
ResponseGetBlocks(id peer.PID, startBlockHeight, endBlockHeight uint32)
}
func NewHandler ¶
func NewHandler(network DposNetwork, manager DposManager, monitor *log.EventMonitor) DposHandlerSwitch
type DposManager ¶
type DposManager interface {
NetworkEventListener
GetPublicKey() string
GetBlockCache() *ConsensusBlockCache
GetArbitrators() interfaces.Arbitrators
Initialize(handler DposHandlerSwitch, dispatcher ProposalDispatcher, consensus Consensus, network DposNetwork, illegalMonitor IllegalBehaviorMonitor, blockPool *mempool.BlockPool, txPool *mempool.TxPool, node protocol.Noder)
Recover()
ProcessHigherBlock(b *types.Block)
ConfirmBlock()
ChangeConsensus(onDuty bool)
AppendConfirm(confirm *types.DPosProposalVoteSlot) (bool, bool, error)
AppendToTxnPool(txn *types.Transaction) errors.ErrCode
Relay(from protocol.Noder, message interface{}) error
}
func NewManager ¶
func NewManager(name string, arbitrators interfaces.Arbitrators) DposManager
type DposNetwork ¶
type DposNetworkConfig ¶
type DposNetworkConfig struct {
ProposalDispatcher ProposalDispatcher
Store interfaces.IDposStore
}
type DposNormalHandler ¶
type DposNormalHandler struct {
// contains filtered or unexported fields
}
func (DposNormalHandler) AddListeners ¶
func (h DposNormalHandler) AddListeners(listeners ...log.EventListener)
func (*DposNormalHandler) ChangeView ¶
func (h *DposNormalHandler) ChangeView(firstBlockHash *common.Uint256)
func (DposNormalHandler) FinishConsensus ¶
func (h DposNormalHandler) FinishConsensus()
func (DposNormalHandler) HelpToRecoverAbnormal ¶
func (DposNormalHandler) Initialize ¶
func (h DposNormalHandler) Initialize(dispatcher ProposalDispatcher, consensus Consensus)
func (DposNormalHandler) OnViewChanged ¶
func (h DposNormalHandler) OnViewChanged(isOnDuty bool)
func (*DposNormalHandler) ProcessAcceptVote ¶
func (h *DposNormalHandler) ProcessAcceptVote(id peer.PID, p types.DPosProposalVote)
func (*DposNormalHandler) ProcessRejectVote ¶
func (h *DposNormalHandler) ProcessRejectVote(id peer.PID, p types.DPosProposalVote)
func (DposNormalHandler) RecoverAbnormal ¶
func (h DposNormalHandler) RecoverAbnormal(status *msg2.ConsensusStatus)
func (DposNormalHandler) RequestAbnormalRecovering ¶
func (h DposNormalHandler) RequestAbnormalRecovering()
func (DposNormalHandler) ResponseGetBlocks ¶
func (*DposNormalHandler) StartNewProposal ¶
func (h *DposNormalHandler) StartNewProposal(p types.DPosProposal)
func (*DposNormalHandler) TryStartNewConsensus ¶
func (h *DposNormalHandler) TryStartNewConsensus(b *types.Block) bool
type DposOnDutyHandler ¶
type DposOnDutyHandler struct {
// contains filtered or unexported fields
}
func (DposOnDutyHandler) AddListeners ¶
func (h DposOnDutyHandler) AddListeners(listeners ...log.EventListener)
func (*DposOnDutyHandler) ChangeView ¶
func (h *DposOnDutyHandler) ChangeView(firstBlockHash *common.Uint256)
func (DposOnDutyHandler) FinishConsensus ¶
func (h DposOnDutyHandler) FinishConsensus()
func (DposOnDutyHandler) HelpToRecoverAbnormal ¶
func (DposOnDutyHandler) Initialize ¶
func (h DposOnDutyHandler) Initialize(dispatcher ProposalDispatcher, consensus Consensus)
func (DposOnDutyHandler) OnViewChanged ¶
func (h DposOnDutyHandler) OnViewChanged(isOnDuty bool)
func (*DposOnDutyHandler) ProcessAcceptVote ¶
func (h *DposOnDutyHandler) ProcessAcceptVote(id peer.PID, p types.DPosProposalVote)
func (*DposOnDutyHandler) ProcessRejectVote ¶
func (h *DposOnDutyHandler) ProcessRejectVote(id peer.PID, p types.DPosProposalVote)
func (DposOnDutyHandler) RecoverAbnormal ¶
func (h DposOnDutyHandler) RecoverAbnormal(status *msg2.ConsensusStatus)
func (DposOnDutyHandler) RequestAbnormalRecovering ¶
func (h DposOnDutyHandler) RequestAbnormalRecovering()
func (DposOnDutyHandler) ResponseGetBlocks ¶
func (*DposOnDutyHandler) StartNewProposal ¶
func (h *DposOnDutyHandler) StartNewProposal(p types.DPosProposal)
func (*DposOnDutyHandler) TryStartNewConsensus ¶
func (h *DposOnDutyHandler) TryStartNewConsensus(b *types.Block) bool
type IllegalBehaviorMonitor ¶
type IllegalBehaviorMonitor interface {
IsBlockValid(block *types.Block) bool
AddProposal(proposal types.DPosProposal)
Reset(changeView bool)
IsLegalProposal(p *types.DPosProposal) (*types.DPosProposal, bool)
ProcessIllegalProposal(first, second *types.DPosProposal)
ProcessIllegalVote(first, second *types.DPosProposalVote)
IsLegalVote(v *types.DPosProposalVote) (*types.DPosProposalVote, bool)
AddProposalEvidence(evidence *types.DposIllegalProposals)
AddVoteEvidence(evidence *types.DposIllegalVotes)
AddBlockEvidence(evidence *types.DposIllegalBlocks)
}
type NetworkEventListener ¶
type NetworkEventListener interface {
StatusSyncEventListener
OnProposalReceived(id peer.PID, p types.DPosProposal)
OnVoteReceived(id peer.PID, p types.DPosProposalVote)
OnVoteRejected(id peer.PID, p types.DPosProposalVote)
OnChangeView()
OnBadNetwork()
OnBlockReceived(b *types.Block, confirmed bool)
OnConfirmReceived(p *types.DPosProposalVoteSlot)
OnIllegalBlocksReceived(i *types.DposIllegalBlocks)
}
type ProposalDispatcher ¶
type ProposalDispatcher interface {
AbnormalRecovering
//status
GetProcessingBlock() *types.Block
GetProcessingProposal() *types.DPosProposal
IsProcessingBlockEmpty() bool
CurrentHeight() uint32
//proposal
StartProposal(b *types.Block)
CleanProposals(changeView bool)
FinishProposal()
TryStartSpeculatingProposal(b *types.Block)
ProcessProposal(d types.DPosProposal)
FinishConsensus()
ProcessVote(v types.DPosProposalVote, accept bool)
AddPendingVote(v types.DPosProposalVote)
OnAbnormalStateDetected()
RequestAbnormalRecovering()
TryAppendAndBroadcastConfirmBlockMsg() bool
}
type StatusSyncEventListener ¶
type StatusSyncEventListener interface {
OnPing(id peer.PID, height uint32)
OnPong(id peer.PID, height uint32)
OnBlock(id peer.PID, block *types.Block)
OnInv(id peer.PID, blockHash common.Uint256)
OnGetBlock(id peer.PID, blockHash common.Uint256)
OnGetBlocks(id peer.PID, startBlockHeight, endBlockHeight uint32)
OnResponseBlocks(id peer.PID, blockConfirms []*types.DposBlock)
OnRequestConsensus(id peer.PID, height uint32)
OnResponseConsensus(id peer.PID, status *msg.ConsensusStatus)
OnRequestProposal(id peer.PID, hash common.Uint256)
OnIllegalProposalReceived(id peer.PID, proposals *types.DposIllegalProposals)
OnIllegalVotesReceived(id peer.PID, votes *types.DposIllegalVotes)
}
type ViewListener ¶
type ViewListener interface {
OnViewChanged(isOnDuty bool)
}
Click to show internal directories.
Click to hide internal directories.