fetcher

package
v1.1.3 Latest Latest
Warning

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

Go to latest
Published: Feb 13, 2020 License: GPL-3.0 Imports: 13 Imported by: 0

Documentation

Overview

Package fetcher contains the block announcement based synchronisation.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Fetcher

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

Fetcher is responsible for accumulating block announcements from various peers and scheduling them for retrieval.

func New

func New(getBlock blockRetrievalFn, verifyHeader headerVerifierFn, broadcastFastBlock blockBroadcasterFn, chainHeight chainHeightFn, insertChain chainInsertFn, dropPeer peerDropFn, agentFetcher PbftAgentFetcher, broadcastSigns signBroadcasterFn) *Fetcher

New creates a block fetcher to retrieve blocks based on hash announcements.

func (*Fetcher) Enqueue

func (f *Fetcher) Enqueue(peer string, block *types.Block) error

Enqueue tries to fill gaps the the fetcher's future import queue.

func (*Fetcher) FilterBodies

func (f *Fetcher) FilterBodies(peer string, transactions [][]*types.Transaction, signs [][]*types.PbftSign, infos [][]*types.CommitteeMember, time time.Time) ([][]*types.Transaction, [][]*types.PbftSign, [][]*types.CommitteeMember)

FilterBodies extracts all the block bodies that were explicitly requested by the fetcher, returning those that should be handled differently.

func (*Fetcher) FilterHeaders

func (f *Fetcher) FilterHeaders(peer string, headers []*types.Header, time time.Time) []*types.Header

FilterHeaders extracts all the headers that were explicitly requested by the fetcher, returning those that should be handled differently.

func (*Fetcher) GetPendingBlock

func (f *Fetcher) GetPendingBlock(hash common.Hash) *types.Block

GetPendingBlock gets a block that is not inserted locally

func (*Fetcher) Notify

func (f *Fetcher) Notify(peer string, hash common.Hash, number uint64, time time.Time,
	headerFetcher headerRequesterFn, bodyFetcher bodyRequesterFn) error

Notify announces the fetcher of the potential availability of a new block in the network.

func (*Fetcher) Start

func (f *Fetcher) Start()

Start boots up the announcement based synchroniser, accepting and processing hash notifications and block fetches until termination requested.

func (*Fetcher) Stop

func (f *Fetcher) Stop()

Stop terminates the announcement based synchroniser, canceling all pending operations.

type PbftAgentFetcher

type PbftAgentFetcher interface {
	// a  type to verify a leader's fast block for fast propagation.
	VerifyCommitteeSign(signs *types.PbftSign) bool
	// when check evil Leader, changeLeader
	ChangeCommitteeLeader(height *big.Int) bool
	//  according height require committee number
	GetCommitteeNumber(height *big.Int) int32
	// AcquireCommitteeAuth check current node whether committee.
	AcquireCommitteeAuth(*big.Int) bool
}

PbftAgentFetcher encapsulates functions required to interact with PbftAgent.

Directories

Path Synopsis
Package fetcher contains the block announcement based synchronisation.
Package fetcher contains the block announcement based synchronisation.

Jump to

Keyboard shortcuts

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