Documentation
¶
Index ¶
- type BlockRecord
- type Chunk
- type NoNodesAvailableForRangeError
- type OpenOptions
- type RPCServer
- func (server *RPCServer) Block(_ *rpctypes.Context, heightPtr *int64) (*coretypes.ResultBlock, error)
- func (server *RPCServer) BlockResults(_ *rpctypes.Context, heightPtr *int64) (*coretypes.ResultBlockResults, error)
- func (server *RPCServer) BlockchainInfo(_ *rpctypes.Context, minHeight, maxHeight int64) (*coretypes.ResultBlockchainInfo, error)
- func (server *RPCServer) GetRoutes() rpccore.RoutesMap
- func (server *RPCServer) Header(_ *rpctypes.Context, heightPtr *int64) (*coretypes.ResultHeader, error)
- type Store
- func (s *Store) BlockAt(height int64) (*BlockRecord, error)
- func (s *Store) Blocks(args ...int64) iter.Seq2[*BlockRecord, error]
- func (s *Store) Chunks() []Chunk
- func (s *Store) Normalize(chunkSize int64) error
- func (s *Store) Sync(ctx context.Context, opts SyncOptions) error
- func (s *Store) VerifyIntegrity(checksumFile string) error
- type SyncOptions
- func (opts SyncOptions) WithBaseHeight(height int64) SyncOptions
- func (opts SyncOptions) WithChunkSize(size int) SyncOptions
- func (opts SyncOptions) WithExpandRemotes(expand bool) SyncOptions
- func (opts SyncOptions) WithFetchSize(size int) SyncOptions
- func (opts SyncOptions) WithLogger(logger *slog.Logger) SyncOptions
- func (opts SyncOptions) WithNumWorkers(num int) SyncOptions
- func (opts SyncOptions) WithOutputChan(outputChan chan<- *BlockRecord) SyncOptions
- func (opts SyncOptions) WithProgressBar(pBar *mpb.Progress) SyncOptions
- func (opts SyncOptions) WithTargetHeight(height int64) SyncOptions
- func (opts SyncOptions) WithUseLatestVersion(useLatest bool) SyncOptions
- func (opts SyncOptions) WithVersionConstraint(constraint string) SyncOptions
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BlockRecord ¶
type BlockRecord struct {
BlockID cmtypes.BlockID
Block *cmtypes.Block
TxResults []*abcitypes.ExecTxResult
FinalizeBlockEvents []abcitypes.Event
ValidatorUpdates []abcitypes.ValidatorUpdate
ConsensusParamUpdates *cmtproto.ConsensusParams
BlockResultsAppHash []byte
}
BlockRecord is a structure that holds the details of a block, including its ID, transactions, events, and other related data. It is used to encode and decode block data in a msgpack format.
func BlockRecordFromRPCResults ¶
func BlockRecordFromRPCResults(block *coretypes.ResultBlock, blockResults *coretypes.ResultBlockResults) *BlockRecord
BlockRecordFromRPCResults creates a BlockRecord from the given ResultBlock and ResultBlockResults.
func (*BlockRecord) DecodeMsgpack ¶
func (b *BlockRecord) DecodeMsgpack(dec *msgpack.Decoder) error
DecodeMsgpack decodes the Block from a msgpack format.
func (*BlockRecord) EncodeMsgpack ¶
func (b *BlockRecord) EncodeMsgpack(enc *msgpack.Encoder) error
EncodeMsgpack encodes the Block into a msgpack format.
func (*BlockRecord) ToResultBlock ¶
func (b *BlockRecord) ToResultBlock() *coretypes.ResultBlock
ToResultBlock converts the resultBlockProto back to a ResultBlock.
func (*BlockRecord) ToResultBlockResults ¶
func (b *BlockRecord) ToResultBlockResults() *coretypes.ResultBlockResults
ToResultBlockResults converts the Block to a ResultBlockResults.
type Chunk ¶ added in v0.2.2
Chunk represents a range of block heights stored in a single chunk file.
type NoNodesAvailableForRangeError ¶
type NoNodesAvailableForRangeError struct {
// contains filtered or unexported fields
}
NoNodesAvailableForRangeError is returned when no nodes are available for the given height range.
func (*NoNodesAvailableForRangeError) Error ¶
func (e *NoNodesAvailableForRangeError) Error() string
func (*NoNodesAvailableForRangeError) Range ¶
func (e *NoNodesAvailableForRangeError) Range() (int64, int64)
Range returns the height range for which no nodes are available.
type OpenOptions ¶
type OpenOptions struct {
// Path to the store directory.
Path string
// Logger is the logger to use for logging during store operations.
Logger *slog.Logger
}
OpenOptions defines options for opening a store.
func DefaultOpenOptions ¶
func DefaultOpenOptions(path string) OpenOptions
DefaultOpenOptions provides default options for opening a store.
func (OpenOptions) WithLogger ¶
func (o OpenOptions) WithLogger(logger *slog.Logger) OpenOptions
WithLogger sets the logger for the store operations.
type RPCServer ¶
type RPCServer struct {
// contains filtered or unexported fields
}
RPCServer is a struct that provides methods to handle RPC requests for the cometdump store. It contains a reference to the Store, which is used to access blockchain data.
func NewRPCServer ¶
NewRPCServer creates a new RPC server for the cometdump store.
func (*RPCServer) Block ¶
func (server *RPCServer) Block(_ *rpctypes.Context, heightPtr *int64) (*coretypes.ResultBlock, error)
Block gets block at a given height. If no height is provided, it will fetch the latest block. More: https://docs.cometbft.com/main/rpc/#/Info/block
func (*RPCServer) BlockResults ¶
func (server *RPCServer) BlockResults(_ *rpctypes.Context, heightPtr *int64) (*coretypes.ResultBlockResults, error)
BlockResults gets ABCIResults at a given height. If no height is provided, it will fetch results for the latest block.
Results are for the height of the block containing the txs. Thus response.results.deliver_tx[5] is the results of executing getBlock(h).Txs[5] More: https://docs.cometbft.com/main/rpc/#/Info/block_results
func (*RPCServer) BlockchainInfo ¶
func (server *RPCServer) BlockchainInfo(_ *rpctypes.Context, minHeight, maxHeight int64) (*coretypes.ResultBlockchainInfo, error)
BlockchainInfo gets block headers for minHeight <= height <= maxHeight. More: https://docs.cometbft.com/main/rpc/#/Info/blockchain
func (*RPCServer) GetRoutes ¶
GetRoutes returns a map of RPC function names to their corresponding RPC functions. Each function is registered with its expected parameters and caching behavior. The functions handle requests for block data, block results, blockchain information, and headers.
func (*RPCServer) Header ¶
func (server *RPCServer) Header(_ *rpctypes.Context, heightPtr *int64) (*coretypes.ResultHeader, error)
Header gets block header at a given height. If no height is provided, it will fetch the latest header. More: https://docs.cometbft.com/main/rpc/#/Info/header
type Store ¶
type Store struct {
// contains filtered or unexported fields
}
Store represents a directory where blocks are stored as chunks of data.
func Open ¶
func Open(opts OpenOptions) (*Store, error)
Open initializes a new Store at the specified path or returns an existing one. If the directory does not exist, it will be created. It also acquires a lock on the directory to prevent concurrent access.
func (*Store) BlockAt ¶
func (s *Store) BlockAt(height int64) (*BlockRecord, error)
BlockAt retrieves a block record by its height from the store.
func (*Store) Blocks ¶
Blocks returns an iterator over block records in the store. It accepts optional start and end heights to limit the range of blocks returned. If no heights are provided, it defaults to the entire range of stored blocks. The iterator yields BlockRecord objects and any errors encountered during iteration.
func (*Store) Sync ¶
func (s *Store) Sync(ctx context.Context, opts SyncOptions) error
Sync fetches blocks up until the latest block height (or a specific height if provided) and stores them in the store directory.
func (*Store) VerifyIntegrity ¶
VerifyIntegrity checks the integrity of the chunks in the store by verifying their sha256 checksums.
type SyncOptions ¶
type SyncOptions struct {
// Remotes is a list of node RPC endpoints to connect to.
Remotes []string
// ExpandRemotes indicates whether to expand the remotes by querying the chain network info.
ExpandRemotes bool
// VersionConstraint is a semantic version constraint for app versions of the nodes.
VersionConstraint *semver.Constraints
// UseLatestVersion indicates whether to use the nodes with the latest application version.
UseLatestVersion bool
// ChunkSize is the number of blocks to put in each file/chunk.
ChunkSize int
// BaseHeight is the height from which to start syncing.
// If 0, it will start from the last stored height.
// Or if the store is empty, it will start from earliest available height.
BaseHeight int64
// TargetHeight is the height up to which store should be synced.
// If 0, it will fetch up to the latest block height.
TargetHeight int64
// FetchSize is the number of blocks to fetch in each RPC call.
FetchSize int
// NumWorkers is the number of concurrent workers to fetch blocks.
NumWorkers int
// OutputChan is a channel that can be optionally used to receive the BlockRecords as they are stored.
OutputChan chan<- *BlockRecord
// ProgressBar is the progress bar to use for displaying sync progress.
ProgressBar *mpb.Progress
// Logger is the logger to use for logging during the sync process.
Logger *slog.Logger
}
SyncOptions defines options for the Sync method.
func DefaultSyncOptions ¶
func DefaultSyncOptions(remotes ...string) SyncOptions
DefaultSyncOptions provides default options for the Sync method.
func (SyncOptions) WithBaseHeight ¶
func (opts SyncOptions) WithBaseHeight(height int64) SyncOptions
WithBaseHeight sets the height from which to start syncing.
func (SyncOptions) WithChunkSize ¶
func (opts SyncOptions) WithChunkSize(size int) SyncOptions
WithChunkSize sets the number of blocks to put in each file/chunk.
func (SyncOptions) WithExpandRemotes ¶
func (opts SyncOptions) WithExpandRemotes(expand bool) SyncOptions
WithExpandRemotes sets whether to expand the remotes by querying the chain network info.
func (SyncOptions) WithFetchSize ¶
func (opts SyncOptions) WithFetchSize(size int) SyncOptions
WithFetchSize sets the number of blocks to fetch in each RPC call.
func (SyncOptions) WithLogger ¶
func (opts SyncOptions) WithLogger(logger *slog.Logger) SyncOptions
WithLogger sets the logger for the sync operation.
func (SyncOptions) WithNumWorkers ¶
func (opts SyncOptions) WithNumWorkers(num int) SyncOptions
WithNumWorkers sets the number of concurrent workers to fetch blocks.
func (SyncOptions) WithOutputChan ¶
func (opts SyncOptions) WithOutputChan(outputChan chan<- *BlockRecord) SyncOptions
WithOutputChan sets the channel to which BlockRecords will be sent as they are stored. If nil, no records will be sent to a channel. The channel will be closed automatically after the sync operation is complete.
func (SyncOptions) WithProgressBar ¶
func (opts SyncOptions) WithProgressBar(pBar *mpb.Progress) SyncOptions
WithProgressBar sets the progress bar to use for displaying sync progress.
func (SyncOptions) WithTargetHeight ¶
func (opts SyncOptions) WithTargetHeight(height int64) SyncOptions
WithTargetHeight sets the height up to which blocks should be fetched.
func (SyncOptions) WithUseLatestVersion ¶
func (opts SyncOptions) WithUseLatestVersion(useLatest bool) SyncOptions
WithUseLatestVersion indicates whether to use the latest version of the remote.
func (SyncOptions) WithVersionConstraint ¶
func (opts SyncOptions) WithVersionConstraint(constraint string) SyncOptions
WithVersionConstraint sets a version constraint for the remotes.