Documentation ¶
Index ¶
Constants ¶
const ( // SnapshotChannel exchanges snapshot metadata SnapshotChannel = p2p.ChannelID(0x60) // ChunkChannel exchanges chunk contents ChunkChannel = p2p.ChannelID(0x61) )
Variables ¶
var ( // ChannelShims contains a map of ChannelDescriptorShim objects, where each // object wraps a reference to a legacy p2p ChannelDescriptor and the corresponding // p2p proto.Message the new p2p Channel is responsible for handling. // // // TODO: Remove once p2p refactor is complete. // ref: https://github.com/tendermint/tendermint/issues/5670 ChannelShims = map[p2p.ChannelID]*p2p.ChannelDescriptorShim{ SnapshotChannel: { MsgType: new(ssproto.Message), Descriptor: &p2p.ChannelDescriptor{ ID: byte(SnapshotChannel), Priority: 5, SendQueueCapacity: 10, RecvMessageCapacity: snapshotMsgSize, }, }, ChunkChannel: { MsgType: new(ssproto.Message), Descriptor: &p2p.ChannelDescriptor{ ID: byte(ChunkChannel), Priority: 1, SendQueueCapacity: 4, RecvMessageCapacity: chunkMsgSize, }, }, } )
Functions ¶
This section is empty.
Types ¶
type Reactor ¶
type Reactor struct { service.BaseService // contains filtered or unexported fields }
Reactor handles state sync, both restoring snapshots for the local node and serving snapshots for other nodes.
func NewReactor ¶
func NewReactor( logger log.Logger, conn proxy.AppConnSnapshot, connQuery proxy.AppConnQuery, snapshotCh, chunkCh *p2p.Channel, peerUpdates *p2p.PeerUpdates, tempDir string, ) *Reactor
NewReactor returns a reference to a new state sync reactor, which implements the service.Service interface. It accepts a logger, connections for snapshots and querying, references to p2p Channels and a channel to listen for peer updates on. Note, the reactor will close all p2p Channels when stopping.
func (*Reactor) OnStart ¶
OnStart starts separate go routines for each p2p Channel and listens for envelopes on each. In addition, it also listens for peer updates and handles messages on that p2p channel accordingly. The caller must be sure to execute OnStop to ensure the outbound p2p Channels are closed. No error is returned.
func (*Reactor) OnStop ¶
func (r *Reactor) OnStop()
OnStop stops the reactor by signaling to all spawned goroutines to exit and blocking until they all exit.
func (*Reactor) Sync ¶
func (r *Reactor) Sync(stateProvider StateProvider, discoveryTime time.Duration) (sm.State, *types.Commit, error)
Sync runs a state sync, returning the new state and last commit at the snapshot height. The caller must store the state and commit in the state database and block store.
type StateProvider ¶
type StateProvider interface { // AppHash returns the app hash after the given height has been committed. AppHash(ctx context.Context, height uint64) ([]byte, error) // Commit returns the commit at the given height. Commit(ctx context.Context, height uint64) (*types.Commit, error) // State returns a state object at the given height. State(ctx context.Context, height uint64) (sm.State, error) }
StateProvider is a provider of trusted state data for bootstrapping a node. This refers to the state.State object, not the state machine.
func NewLightClientStateProvider ¶
func NewLightClientStateProvider( ctx context.Context, chainID string, version sm.Version, initialHeight int64, servers []string, trustOptions light.TrustOptions, logger log.Logger, ) (StateProvider, error)
NewLightClientStateProvider creates a new StateProvider using a light client and RPC clients.