bootstrap

package
v1.11.6-rc.3 Latest Latest
Warning

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

Go to latest
Published: May 22, 2024 License: BSD-3-Clause Imports: 27 Imported by: 9

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Bootstrapper

type Bootstrapper struct {
	Config
	common.Halter

	// list of NoOpsHandler for messages dropped by bootstrapper
	common.StateSummaryFrontierHandler
	common.AcceptedStateSummaryHandler
	common.PutHandler
	common.QueryHandler
	common.ChitsHandler
	common.AppHandler
	// contains filtered or unexported fields
}

bootstrapper repeatedly performs the bootstrapping protocol.

  1. Wait until a sufficient amount of stake is connected.
  2. Sample a small number of nodes to get the last accepted block ID
  3. Verify against the full network that the last accepted block ID received in step 2 is an accepted block.
  4. Sync the full ancestry of the last accepted block.
  5. Execute all the fetched blocks that haven't already been executed.
  6. Restart the bootstrapping protocol until the number of blocks being accepted during a bootstrapping round stops decreasing.

Note: Because of step 6, the bootstrapping protocol will generally be performed multiple times.

Invariant: The VM is not guaranteed to be initialized until Start has been called, so it must be guaranteed the VM is not used until after Start.

func New added in v1.7.4

func New(config Config, onFinished func(ctx context.Context, lastReqID uint32) error) (*Bootstrapper, error)

func (*Bootstrapper) Accepted added in v1.10.17

func (b *Bootstrapper) Accepted(ctx context.Context, nodeID ids.NodeID, requestID uint32, containerIDs set.Set[ids.ID]) error

func (*Bootstrapper) AcceptedFrontier added in v1.10.17

func (b *Bootstrapper) AcceptedFrontier(ctx context.Context, nodeID ids.NodeID, requestID uint32, containerID ids.ID) error

func (*Bootstrapper) Ancestors added in v1.10.16

func (b *Bootstrapper) Ancestors(ctx context.Context, nodeID ids.NodeID, requestID uint32, blks [][]byte) error

Ancestors handles the receipt of multiple containers. Should be received in response to a GetAncestors message to [nodeID] with request ID [requestID]

func (*Bootstrapper) Clear added in v1.10.16

func (b *Bootstrapper) Clear(context.Context) error

func (*Bootstrapper) Connected added in v0.8.2

func (b *Bootstrapper) Connected(ctx context.Context, nodeID ids.NodeID, nodeVersion *version.Application) error

func (*Bootstrapper) Context added in v1.10.16

func (b *Bootstrapper) Context() *snow.ConsensusContext

func (*Bootstrapper) Disconnected added in v0.8.2

func (b *Bootstrapper) Disconnected(ctx context.Context, nodeID ids.NodeID) error

func (*Bootstrapper) GetAcceptedFailed added in v1.10.17

func (b *Bootstrapper) GetAcceptedFailed(ctx context.Context, nodeID ids.NodeID, requestID uint32) error

func (*Bootstrapper) GetAcceptedFrontierFailed added in v1.10.17

func (b *Bootstrapper) GetAcceptedFrontierFailed(ctx context.Context, nodeID ids.NodeID, requestID uint32) error

func (*Bootstrapper) GetAncestorsFailed

func (b *Bootstrapper) GetAncestorsFailed(ctx context.Context, nodeID ids.NodeID, requestID uint32) error

func (*Bootstrapper) Gossip added in v1.10.16

func (*Bootstrapper) Gossip(context.Context) error

func (*Bootstrapper) HealthCheck added in v1.10.16

func (b *Bootstrapper) HealthCheck(ctx context.Context) (interface{}, error)

func (*Bootstrapper) Notify added in v1.10.16

func (b *Bootstrapper) Notify(_ context.Context, msg common.Message) error

func (*Bootstrapper) Shutdown added in v1.10.16

func (b *Bootstrapper) Shutdown(ctx context.Context) error

func (*Bootstrapper) Start added in v1.10.16

func (b *Bootstrapper) Start(ctx context.Context, startReqID uint32) error

func (*Bootstrapper) Timeout added in v1.4.4

func (b *Bootstrapper) Timeout(ctx context.Context) error

type Config

type Config struct {
	common.AllGetsServer

	Ctx     *snow.ConsensusContext
	Beacons validators.Manager

	SampleK          int
	StartupTracker   tracker.Startup
	Sender           common.Sender
	BootstrapTracker common.BootstrapTracker
	Timer            common.Timer

	// PeerTracker manages the set of nodes that we fetch the next block from.
	PeerTracker *p2p.PeerTracker

	// This node will only consider the first [AncestorsMaxContainersReceived]
	// containers in an ancestors message it receives.
	AncestorsMaxContainersReceived int

	// Database used to track the fetched, but not yet executed, blocks during
	// bootstrapping.
	DB database.Database

	VM block.ChainVM

	Bootstrapped func()
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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