Documentation
¶
Index ¶
- Variables
- func NewClient(config *ClientConfig) *client
- type CallbackLeafSyncer
- type Client
- type ClientConfig
- type EthBlockParser
- type LeafClient
- type LeafSyncTask
- type LeafSyncerConfig
- type TestClient
- func (ml *TestClient) BlocksReceived() int32
- func (ml *TestClient) CodeReceived() int32
- func (ml *TestClient) GetBlocks(ctx context.Context, blockHash common.Hash, height uint64, numParents uint16) ([]*types.Block, error)
- func (ml *TestClient) GetCode(ctx context.Context, hashes []common.Hash) ([][]byte, error)
- func (ml *TestClient) GetLeafs(ctx context.Context, request message.LeafsRequest) (message.LeafsResponse, error)
- func (ml *TestClient) LeavesReceived() int32
Constants ¶
This section is empty.
Variables ¶
View Source
var ErrFailedToFetchLeafs = errors.New("failed to fetch leafs")
View Source
var (
StateSyncVersion = &version.Application{
Major: 1,
Minor: 7,
Patch: 13,
}
)
Functions ¶
func NewClient ¶
func NewClient(config *ClientConfig) *client
Types ¶
type CallbackLeafSyncer ¶
type CallbackLeafSyncer struct {
// contains filtered or unexported fields
}
func NewCallbackLeafSyncer ¶
func NewCallbackLeafSyncer(client LeafClient, tasks <-chan LeafSyncTask, config *LeafSyncerConfig) *CallbackLeafSyncer
NewCallbackLeafSyncer creates a new syncer object to perform leaf sync of tries.
type Client ¶
type Client interface {
// GetLeafs synchronously sends the given request, returning a parsed LeafsResponse or error
// Note: this verifies the response including the range proofs.
GetLeafs(ctx context.Context, request message.LeafsRequest) (message.LeafsResponse, error)
// GetBlocks synchronously retrieves blocks starting with specified common.Hash and height up to specified parents
// specified range from height to height-parents is inclusive
GetBlocks(ctx context.Context, blockHash common.Hash, height uint64, parents uint16) ([]*types.Block, error)
// GetCode synchronously retrieves code associated with the given hashes
GetCode(ctx context.Context, hashes []common.Hash) ([][]byte, error)
}
Client synchronously fetches data from the network to fulfill state sync requests. Repeatedly requests failed requests until the context to the request is expired.
type ClientConfig ¶
type ClientConfig struct {
NetworkClient network.SyncedNetworkClient
Codec codec.Manager
Stats stats.ClientSyncerStats
StateSyncNodeIDs []ids.NodeID
BlockParser EthBlockParser
}
type EthBlockParser ¶ added in v0.8.11
type LeafClient ¶
type LeafClient interface {
// GetLeafs synchronously sends the given request, returning a parsed LeafsResponse or error
// Note: this verifies the response including the range proofs.
GetLeafs(context.Context, message.LeafsRequest) (message.LeafsResponse, error)
}
type LeafSyncTask ¶
type LeafSyncTask interface {
Root() common.Hash // Root of the trie to sync
Account() common.Hash // Account hash of the trie to sync (only applicable to storage tries)
Start() []byte // Starting key to request new leaves
End() []byte // End key to request new leaves
NodeType() message.NodeType // Specifies the message type (atomic/state trie) for the leaf syncer to send
OnStart() (bool, error) // Callback when tasks begins, returns true if work can be skipped
OnLeafs(keys, vals [][]byte) error // Callback when new leaves are received from the network
OnFinish(ctx context.Context) error // Callback when there are no more leaves in the trie to sync or when we reach End()
}
LeafSyncTask represents a complete task to be completed by the leaf syncer. Note: each LeafSyncTask is processed on its own goroutine and there will not be concurrent calls to the callback methods. Implementations should return the same value for Root, Account, Start, and NodeType throughout the sync. The value returned by End can change between calls to OnLeafs.
type LeafSyncerConfig ¶ added in v0.15.4
type TestClient ¶ added in v0.15.1
type TestClient struct {
// GetLeafsIntercept is called on every GetLeafs request if set to a non-nil callback.
// The returned response will be returned by TestClient to the caller.
GetLeafsIntercept func(req message.LeafsRequest, res message.LeafsResponse) (message.LeafsResponse, error)
// GetCodesIntercept is called on every GetCode request if set to a non-nil callback.
// The returned response will be returned by TestClient to the caller.
GetCodeIntercept func(hashes []common.Hash, codeBytes [][]byte) ([][]byte, error)
// GetBlocksIntercept is called on every GetBlocks request if set to a non-nil callback.
// The returned response will be returned by TestClient to the caller.
GetBlocksIntercept func(blockReq message.BlockRequest, blocks types.Blocks) (types.Blocks, error)
// contains filtered or unexported fields
}
func NewTestClient ¶ added in v0.15.1
func NewTestClient( codec codec.Manager, leafHandler handlers.LeafRequestHandler, codesHandler *handlers.CodeRequestHandler, blocksHandler *handlers.BlockRequestHandler, ) *TestClient
func (*TestClient) BlocksReceived ¶ added in v0.15.1
func (ml *TestClient) BlocksReceived() int32
func (*TestClient) CodeReceived ¶ added in v0.15.1
func (ml *TestClient) CodeReceived() int32
func (*TestClient) GetLeafs ¶ added in v0.15.1
func (ml *TestClient) GetLeafs(ctx context.Context, request message.LeafsRequest) (message.LeafsResponse, error)
func (*TestClient) LeavesReceived ¶ added in v0.15.1
func (ml *TestClient) LeavesReceived() int32
Click to show internal directories.
Click to hide internal directories.