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 ¶ added in v1.10.17
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) 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 (*Bootstrapper) GetAcceptedFailed ¶ added in v1.10.17
func (*Bootstrapper) GetAcceptedFrontierFailed ¶ added in v1.10.17
func (*Bootstrapper) GetAncestorsFailed ¶
func (*Bootstrapper) HealthCheck ¶ added in v1.10.16
func (b *Bootstrapper) HealthCheck(ctx context.Context) (interface{}, error)
func (*Bootstrapper) Shutdown ¶ added in v1.10.16
func (b *Bootstrapper) Shutdown(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()
}
Click to show internal directories.
Click to hide internal directories.