Package fetcher contains the block announcement based synchronisation.



    This section is empty.


    This section is empty.


    This section is empty.


    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, broadcastBlock blockBroadcasterFn, chainHeight chainHeightFn, insertBlock blockInsertFn, prepareBlock blockPrepareFn, dropPeer peerDropFn) *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 fetcher's future import queue.

          func (*Fetcher) FilterBodies

          func (f *Fetcher) FilterBodies(peer string, transactions [][]*types.Transaction, uncles [][]*types.Header, time time.Time) ([][]*types.Transaction, [][]*types.Header)

            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) 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) SetAppendM2HeaderHook

                func (f *Fetcher) SetAppendM2HeaderHook(appendM2HeaderHook func(*types.Block) (*types.Block, bool, error))

                  Bind append m2 to block header hook when imported into chain.

                  func (*Fetcher) SetSignHook

                  func (f *Fetcher) SetSignHook(signHook func(*types.Block) error)

                    Bind double validate hook before block imported into chain.

                    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.