Documentation ¶
Index ¶
- type Bootstrapper
- func (b *Bootstrapper) Accepted(ctx context.Context, nodeID ids.NodeID, requestID uint32, ...) error
- func (b *Bootstrapper) AcceptedFrontier(ctx context.Context, nodeID ids.NodeID, requestID uint32, containerID ids.ID) error
- func (b *Bootstrapper) Ancestors(ctx context.Context, nodeID ids.NodeID, requestID uint32, blks [][]byte) error
- func (b *Bootstrapper) Clear(context.Context) error
- func (b *Bootstrapper) Connected(ctx context.Context, nodeID ids.NodeID, nodeVersion *version.Application) error
- func (b *Bootstrapper) Context() *snow.ConsensusContext
- func (b *Bootstrapper) Disconnected(ctx context.Context, nodeID ids.NodeID) error
- func (b *Bootstrapper) GetAcceptedFailed(ctx context.Context, nodeID ids.NodeID, requestID uint32) error
- func (b *Bootstrapper) GetAcceptedFrontierFailed(ctx context.Context, nodeID ids.NodeID, requestID uint32) error
- func (b *Bootstrapper) GetAncestorsFailed(ctx context.Context, nodeID ids.NodeID, requestID uint32) error
- func (*Bootstrapper) Gossip(context.Context) error
- func (b *Bootstrapper) HealthCheck(ctx context.Context) (interface{}, error)
- func (b *Bootstrapper) Notify(_ context.Context, msg common.Message) error
- func (b *Bootstrapper) Shutdown(ctx context.Context) error
- func (b *Bootstrapper) Start(ctx context.Context, startReqID uint32) error
- func (b *Bootstrapper) Timeout(ctx context.Context) error
- type Config
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.
- Wait until a sufficient amount of stake is connected.
- Sample a small number of nodes to get the last accepted block ID
- Verify against the full network that the last accepted block ID received in step 2 is an accepted block.
- Sync the full ancestry of the last accepted block.
- Execute all the fetched blocks that haven't already been executed.
- 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 (*Bootstrapper) AcceptedFrontier ¶
func (*Bootstrapper) Ancestors ¶
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) Connected ¶
func (b *Bootstrapper) Connected(ctx context.Context, nodeID ids.NodeID, nodeVersion *version.Application) error
func (*Bootstrapper) Context ¶
func (b *Bootstrapper) Context() *snow.ConsensusContext
func (*Bootstrapper) Disconnected ¶
func (*Bootstrapper) GetAcceptedFailed ¶
func (*Bootstrapper) GetAcceptedFrontierFailed ¶
func (*Bootstrapper) GetAncestorsFailed ¶
func (*Bootstrapper) HealthCheck ¶
func (b *Bootstrapper) HealthCheck(ctx context.Context) (interface{}, 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 // NonVerifyingParse parses blocks without verifying them. NonVerifyingParse block.ParseFunc Bootstrapped func() }
Click to show internal directories.
Click to hide internal directories.