badger

package
v0.29.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 19, 2023 License: AGPL-3.0 Imports: 22 Imported by: 2

Documentation

Index

Constants

View Source
const DefaultCacheSize = uint(1000)
View Source
const JobQueueChunksQueue = "JobQueueChunksQueue"

Variables

This section is empty.

Functions

func InitAll

func InitAll(metrics module.CacheMetrics, db *badger.DB) *storage.All

func InitPublic

func InitPublic(opts badger.Options) (*badger.DB, error)

InitPublic initializes a public database by checking and setting the database type marker. If an existing, inconsistent type marker is set, this method will return an error. Once a database type marker has been set using these methods, the type cannot be changed.

func InitSecret

func InitSecret(opts badger.Options) (*badger.DB, error)

InitSecret initializes a secrets database by checking and setting the database type marker. If an existing, inconsistent type marker is set, this method will return an error. Once a database type marker has been set using these methods, the type cannot be changed.

func KeyFromBlockID

func KeyFromBlockID(blockID flow.Identifier) string

func KeyFromBlockIDIndex

func KeyFromBlockIDIndex(blockID flow.Identifier, txIndex uint32) string

func KeyFromBlockIDTransactionID

func KeyFromBlockIDTransactionID(blockID flow.Identifier, txID flow.Identifier) string

func KeyToBlockID

func KeyToBlockID(key string) (flow.Identifier, error)

func KeyToBlockIDIndex

func KeyToBlockIDIndex(key string) (flow.Identifier, uint32, error)

func KeyToBlockIDTransactionID

func KeyToBlockIDTransactionID(key string) (flow.Identifier, flow.Identifier, error)

Types

type Batch

type Batch struct {
	// contains filtered or unexported fields
}

func NewBatch

func NewBatch(db *badger.DB) *Batch

func (*Batch) Flush

func (b *Batch) Flush() error

Flush will call the badger Batch's Flush method, in addition, it will call the callbacks added by OnSucceed

func (*Batch) GetWriter

func (b *Batch) GetWriter() *badger.WriteBatch

func (*Batch) OnSucceed

func (b *Batch) OnSucceed(callback func())

OnSucceed adds a callback to execute after the batch has been successfully flushed. useful for implementing the cache where we will only cache after the batch has been successfully flushed

type Blocks

type Blocks struct {
	// contains filtered or unexported fields
}

Blocks implements a simple block storage around a badger DB.

func NewBlocks

func NewBlocks(db *badger.DB, headers *Headers, payloads *Payloads) *Blocks

NewBlocks ...

func (*Blocks) ByCollectionID

func (b *Blocks) ByCollectionID(collID flow.Identifier) (*flow.Block, error)

ByCollectionID ...

func (*Blocks) ByHeight

func (b *Blocks) ByHeight(height uint64) (*flow.Block, error)

ByHeight ...

func (*Blocks) ByID

func (b *Blocks) ByID(blockID flow.Identifier) (*flow.Block, error)

ByID ...

func (*Blocks) GetLastFullBlockHeight

func (b *Blocks) GetLastFullBlockHeight() (uint64, error)

GetLastFullBlockHeight ...

func (*Blocks) IndexBlockForCollections

func (b *Blocks) IndexBlockForCollections(blockID flow.Identifier, collIDs []flow.Identifier) error

IndexBlockForCollections ...

func (*Blocks) InsertLastFullBlockHeightIfNotExists

func (b *Blocks) InsertLastFullBlockHeightIfNotExists(height uint64) error

InsertLastFullBlockHeightIfNotExists inserts the last full block height

func (*Blocks) Store

func (b *Blocks) Store(block *flow.Block) error

Store ...

func (*Blocks) StoreTx

func (b *Blocks) StoreTx(block *flow.Block) func(*transaction.Tx) error

func (*Blocks) UpdateLastFullBlockHeight

func (b *Blocks) UpdateLastFullBlockHeight(height uint64) error

UpdateLastFullBlockHeight upsert (update or insert) the last full block height

type Cache

type Cache struct {
	// contains filtered or unexported fields
}

func (*Cache) Get

func (c *Cache) Get(key interface{}) func(*badger.Txn) (interface{}, error)

Get will try to retrieve the resource from cache first, and then from the injected

func (*Cache) Insert

func (c *Cache) Insert(key interface{}, resource interface{})

Insert will add a resource directly to the cache with the given ID

func (*Cache) PutTx

func (c *Cache) PutTx(key interface{}, resource interface{}) func(*transaction.Tx) error

PutTx will return tx which adds a resource to the cache with the given ID.

func (*Cache) Remove

func (c *Cache) Remove(key interface{})

type ChunkDataPacks

type ChunkDataPacks struct {
	// contains filtered or unexported fields
}

func NewChunkDataPacks

func NewChunkDataPacks(collector module.CacheMetrics, db *badger.DB, collections storage.Collections, byChunkIDCacheSize uint) *ChunkDataPacks

func (*ChunkDataPacks) BatchRemove

func (ch *ChunkDataPacks) BatchRemove(chunkID flow.Identifier, batch storage.BatchStorage) error

BatchRemove removes ChunkDataPack c keyed by its ChunkID in provided batch No errors are expected during normal operation, even if no entries are matched. If Badger unexpectedly fails to process the request, the error is wrapped in a generic error and returned.

func (*ChunkDataPacks) BatchStore

func (ch *ChunkDataPacks) BatchStore(c *flow.ChunkDataPack, batch storage.BatchStorage) error

BatchStore stores ChunkDataPack c keyed by its ChunkID in provided batch. No errors are expected during normal operation, but it may return generic error if entity is not serializable or Badger unexpectedly fails to process request

func (*ChunkDataPacks) ByChunkID

func (ch *ChunkDataPacks) ByChunkID(chunkID flow.Identifier) (*flow.ChunkDataPack, error)

func (*ChunkDataPacks) Remove

func (ch *ChunkDataPacks) Remove(chunkID flow.Identifier) error

func (*ChunkDataPacks) Store

func (ch *ChunkDataPacks) Store(c *flow.ChunkDataPack) error

type ChunksQueue

type ChunksQueue struct {
	// contains filtered or unexported fields
}

ChunksQueue stores a queue of chunk locators that assigned to me to verify. Job consumers can read the locators as job from the queue by index. Chunk locators stored in this queue are unique.

func NewChunkQueue

func NewChunkQueue(db *badger.DB) *ChunksQueue

NewChunkQueue will initialize the underlying badger database of chunk locator queue.

func (*ChunksQueue) AtIndex

func (q *ChunksQueue) AtIndex(index uint64) (*chunks.Locator, error)

AtIndex returns the chunk locator stored at the given index in the queue.

func (*ChunksQueue) Init

func (q *ChunksQueue) Init(defaultIndex uint64) (bool, error)

Init initializes chunk queue's latest index with the given default index.

func (*ChunksQueue) LatestIndex

func (q *ChunksQueue) LatestIndex() (uint64, error)

LatestIndex returns the index of the latest chunk locator stored in the queue.

func (*ChunksQueue) StoreChunkLocator

func (q *ChunksQueue) StoreChunkLocator(locator *chunks.Locator) (bool, error)

StoreChunkLocator stores a new chunk locator that assigned to me to the job queue. A true will be returned, if the locator was new. A false will be returned, if the locator was duplicate.

type Cleaner

type Cleaner struct {
	// contains filtered or unexported fields
}

func NewCleaner

func NewCleaner(log zerolog.Logger, db *badger.DB, metrics module.CleanerMetrics, frequency int) *Cleaner

NewCleaner returns a cleaner that runs the badger value log garbage collection once every `frequency` calls if a frequency of zero is passed in, we will not run the GC at all

func (*Cleaner) RunGC

func (c *Cleaner) RunGC()

type ClusterBlocks

type ClusterBlocks struct {
	// contains filtered or unexported fields
}

ClusterBlocks implements a simple block storage around a badger DB.

func NewClusterBlocks

func NewClusterBlocks(db *badger.DB, chainID flow.ChainID, headers *Headers, payloads *ClusterPayloads) *ClusterBlocks

func (*ClusterBlocks) ByHeight

func (b *ClusterBlocks) ByHeight(height uint64) (*cluster.Block, error)

func (*ClusterBlocks) ByID

func (b *ClusterBlocks) ByID(blockID flow.Identifier) (*cluster.Block, error)

func (*ClusterBlocks) Store

func (b *ClusterBlocks) Store(block *cluster.Block) error

type ClusterPayloads

type ClusterPayloads struct {
	// contains filtered or unexported fields
}

ClusterPayloads implements storage of block payloads for collection node cluster consensus.

func NewClusterPayloads

func NewClusterPayloads(cacheMetrics module.CacheMetrics, db *badger.DB) *ClusterPayloads

func (*ClusterPayloads) ByBlockID

func (cp *ClusterPayloads) ByBlockID(blockID flow.Identifier) (*cluster.Payload, error)

func (*ClusterPayloads) Store

func (cp *ClusterPayloads) Store(blockID flow.Identifier, payload *cluster.Payload) error

type Collections

type Collections struct {
	// contains filtered or unexported fields
}

func NewCollections

func NewCollections(db *badger.DB, transactions *Transactions) *Collections

func (*Collections) ByID

func (c *Collections) ByID(colID flow.Identifier) (*flow.Collection, error)

func (*Collections) LightByID

func (c *Collections) LightByID(colID flow.Identifier) (*flow.LightCollection, error)

func (*Collections) LightByTransactionID

func (c *Collections) LightByTransactionID(txID flow.Identifier) (*flow.LightCollection, error)

func (*Collections) Remove

func (c *Collections) Remove(colID flow.Identifier) error

func (*Collections) Store

func (c *Collections) Store(collection *flow.Collection) error

func (*Collections) StoreLight

func (c *Collections) StoreLight(collection *flow.LightCollection) error

func (*Collections) StoreLightAndIndexByTransaction

func (c *Collections) StoreLightAndIndexByTransaction(collection *flow.LightCollection) error

type Commits

type Commits struct {
	// contains filtered or unexported fields
}

func NewCommits

func NewCommits(collector module.CacheMetrics, db *badger.DB) *Commits

func (*Commits) BatchRemoveByBlockID

func (c *Commits) BatchRemoveByBlockID(blockID flow.Identifier, batch storage.BatchStorage) error

BatchRemoveByBlockID removes Commit keyed by blockID in provided batch No errors are expected during normal operation, even if no entries are matched. If Badger unexpectedly fails to process the request, the error is wrapped in a generic error and returned.

func (*Commits) BatchStore

func (c *Commits) BatchStore(blockID flow.Identifier, commit flow.StateCommitment, batch storage.BatchStorage) error

BatchStore stores Commit keyed by blockID in provided batch No errors are expected during normal operation, even if no entries are matched. If Badger unexpectedly fails to process the request, the error is wrapped in a generic error and returned.

func (*Commits) ByBlockID

func (c *Commits) ByBlockID(blockID flow.Identifier) (flow.StateCommitment, error)

func (*Commits) RemoveByBlockID

func (c *Commits) RemoveByBlockID(blockID flow.Identifier) error

func (*Commits) Store

func (c *Commits) Store(blockID flow.Identifier, commit flow.StateCommitment) error

type ComputationResultUploadStatus

type ComputationResultUploadStatus struct {
	// contains filtered or unexported fields
}

func NewComputationResultUploadStatus

func NewComputationResultUploadStatus(db *badger.DB) *ComputationResultUploadStatus

func (*ComputationResultUploadStatus) ByID

func (c *ComputationResultUploadStatus) ByID(computationResultID flow.Identifier) (bool, error)

func (*ComputationResultUploadStatus) GetIDsByUploadStatus

func (c *ComputationResultUploadStatus) GetIDsByUploadStatus(targetUploadStatus bool) ([]flow.Identifier, error)

func (*ComputationResultUploadStatus) Remove

func (c *ComputationResultUploadStatus) Remove(computationResultID flow.Identifier) error

func (*ComputationResultUploadStatus) Upsert

func (c *ComputationResultUploadStatus) Upsert(blockID flow.Identifier,
	wasUploadCompleted bool) error

type ConsumerProgress

type ConsumerProgress struct {
	// contains filtered or unexported fields
}

func NewConsumerProgress

func NewConsumerProgress(db *badger.DB, consumer string) *ConsumerProgress

func (*ConsumerProgress) InitProcessedIndex

func (cp *ConsumerProgress) InitProcessedIndex(defaultIndex uint64) error

InitProcessedIndex insert the default processed index to the storage layer, can only be done once. initialize for the second time will return storage.ErrAlreadyExists

func (*ConsumerProgress) ProcessedIndex

func (cp *ConsumerProgress) ProcessedIndex() (uint64, error)

func (*ConsumerProgress) SetProcessedIndex

func (cp *ConsumerProgress) SetProcessedIndex(processed uint64) error

type DKGState

type DKGState struct {
	// contains filtered or unexported fields
}

DKGState stores state information about in-progress and completed DKGs, including computed keys. Must be instantiated using secrets database.

func NewDKGState

func NewDKGState(collector module.CacheMetrics, db *badger.DB) (*DKGState, error)

NewDKGState returns the DKGState implementation backed by Badger DB.

func (*DKGState) GetDKGEndState

func (ds *DKGState) GetDKGEndState(epochCounter uint64) (flow.DKGEndState, error)

GetDKGEndState retrieves the DKG end state for the epoch.

func (*DKGState) GetDKGStarted

func (ds *DKGState) GetDKGStarted(epochCounter uint64) (bool, error)

GetDKGStarted checks whether the DKG has been started for the given epoch.

func (*DKGState) InsertMyBeaconPrivateKey

func (ds *DKGState) InsertMyBeaconPrivateKey(epochCounter uint64, key crypto.PrivateKey) error

InsertMyBeaconPrivateKey stores the random beacon private key for an epoch.

CAUTION: these keys are stored before they are validated against the canonical key vector and may not be valid for use in signing. Use SafeBeaconKeys to guarantee only keys safe for signing are returned

func (*DKGState) RetrieveMyBeaconPrivateKey

func (ds *DKGState) RetrieveMyBeaconPrivateKey(epochCounter uint64) (crypto.PrivateKey, error)

RetrieveMyBeaconPrivateKey retrieves the random beacon private key for an epoch.

CAUTION: these keys are stored before they are validated against the canonical key vector and may not be valid for use in signing. Use SafeBeaconKeys to guarantee only keys safe for signing are returned

func (*DKGState) SetDKGEndState

func (ds *DKGState) SetDKGEndState(epochCounter uint64, endState flow.DKGEndState) error

SetDKGEndState stores that the DKG has ended, and its end state.

func (*DKGState) SetDKGStarted

func (ds *DKGState) SetDKGStarted(epochCounter uint64) error

SetDKGStarted sets the flag indicating the DKG has started for the given epoch.

type EpochCommits

type EpochCommits struct {
	// contains filtered or unexported fields
}

func NewEpochCommits

func NewEpochCommits(collector module.CacheMetrics, db *badger.DB) *EpochCommits

func (*EpochCommits) ByID

func (ec *EpochCommits) ByID(commitID flow.Identifier) (*flow.EpochCommit, error)

ByID will return the EpochCommit event by its ID. Error returns: * storage.ErrNotFound if no EpochCommit with the ID exists

func (*EpochCommits) Store

func (ec *EpochCommits) Store(commit *flow.EpochCommit) error

TODO: can we remove this method? Its not contained in the interface.

func (*EpochCommits) StoreTx

func (ec *EpochCommits) StoreTx(commit *flow.EpochCommit) func(*transaction.Tx) error

type EpochSetups

type EpochSetups struct {
	// contains filtered or unexported fields
}

func NewEpochSetups

func NewEpochSetups(collector module.CacheMetrics, db *badger.DB) *EpochSetups

NewEpochSetups instantiates a new EpochSetups storage.

func (*EpochSetups) ByID

func (es *EpochSetups) ByID(setupID flow.Identifier) (*flow.EpochSetup, error)

ByID will return the EpochSetup event by its ID. Error returns: * storage.ErrNotFound if no EpochSetup with the ID exists

func (*EpochSetups) StoreTx

func (es *EpochSetups) StoreTx(setup *flow.EpochSetup) func(tx *transaction.Tx) error

type EpochStatuses

type EpochStatuses struct {
	// contains filtered or unexported fields
}

func NewEpochStatuses

func NewEpochStatuses(collector module.CacheMetrics, db *badger.DB) *EpochStatuses

NewEpochStatuses ...

func (*EpochStatuses) ByBlockID

func (es *EpochStatuses) ByBlockID(blockID flow.Identifier) (*flow.EpochStatus, error)

ByBlockID will return the epoch status for the given block Error returns: * storage.ErrNotFound if EpochStatus for the block does not exist

func (*EpochStatuses) StoreTx

func (es *EpochStatuses) StoreTx(blockID flow.Identifier, status *flow.EpochStatus) func(tx *transaction.Tx) error

type Events

type Events struct {
	// contains filtered or unexported fields
}

func NewEvents

func NewEvents(collector module.CacheMetrics, db *badger.DB) *Events

func (*Events) BatchRemoveByBlockID

func (e *Events) BatchRemoveByBlockID(blockID flow.Identifier, batch storage.BatchStorage) error

BatchRemoveByBlockID removes events keyed by a blockID in provided batch No errors are expected during normal operation, even if no entries are matched. If Badger unexpectedly fails to process the request, the error is wrapped in a generic error and returned.

func (*Events) BatchStore

func (e *Events) BatchStore(blockID flow.Identifier, blockEvents []flow.EventsList, batch storage.BatchStorage) error

BatchStore stores events keyed by a blockID in provided batch No errors are expected during normal operation, but it may return generic error if badger fails to process request

func (*Events) ByBlockID

func (e *Events) ByBlockID(blockID flow.Identifier) ([]flow.Event, error)

ByBlockID returns the events for the given block ID

func (*Events) ByBlockIDEventType

func (e *Events) ByBlockIDEventType(blockID flow.Identifier, eventType flow.EventType) ([]flow.Event, error)

ByBlockIDEventType returns the events for the given block ID and event type

func (*Events) ByBlockIDTransactionID

func (e *Events) ByBlockIDTransactionID(blockID flow.Identifier, txID flow.Identifier) ([]flow.Event, error)

ByBlockIDTransactionID returns the events for the given block ID and transaction ID

func (*Events) ByBlockIDTransactionIndex

func (e *Events) ByBlockIDTransactionIndex(blockID flow.Identifier, txIndex uint32) ([]flow.Event, error)

func (*Events) RemoveByBlockID

func (e *Events) RemoveByBlockID(blockID flow.Identifier) error

RemoveByBlockID removes events by block ID

type ExecutionReceipts

type ExecutionReceipts struct {
	// contains filtered or unexported fields
}

ExecutionReceipts implements storage for execution receipts.

func NewExecutionReceipts

func NewExecutionReceipts(collector module.CacheMetrics, db *badger.DB, results *ExecutionResults, cacheSize uint) *ExecutionReceipts

NewExecutionReceipts Creates ExecutionReceipts instance which is a database of receipts which supports storing and indexing receipts by receipt ID and block ID.

func (*ExecutionReceipts) BatchStore

func (r *ExecutionReceipts) BatchStore(receipt *flow.ExecutionReceipt, batch storage.BatchStorage) error

func (*ExecutionReceipts) ByBlockID

func (*ExecutionReceipts) ByID

func (*ExecutionReceipts) Store

func (r *ExecutionReceipts) Store(receipt *flow.ExecutionReceipt) error

type ExecutionResults

type ExecutionResults struct {
	// contains filtered or unexported fields
}

ExecutionResults implements persistent storage for execution results.

func NewExecutionResults

func NewExecutionResults(collector module.CacheMetrics, db *badger.DB) *ExecutionResults

func (*ExecutionResults) BatchIndex

func (r *ExecutionResults) BatchIndex(blockID flow.Identifier, resultID flow.Identifier, batch storage.BatchStorage) error

func (*ExecutionResults) BatchRemoveIndexByBlockID

func (r *ExecutionResults) BatchRemoveIndexByBlockID(blockID flow.Identifier, batch storage.BatchStorage) error

BatchRemoveIndexByBlockID removes blockID-to-executionResultID index entries keyed by blockID in a provided batch. No errors are expected during normal operation, even if no entries are matched. If Badger unexpectedly fails to process the request, the error is wrapped in a generic error and returned.

func (*ExecutionResults) BatchStore

func (r *ExecutionResults) BatchStore(result *flow.ExecutionResult, batch storage.BatchStorage) error

func (*ExecutionResults) ByBlockID

func (r *ExecutionResults) ByBlockID(blockID flow.Identifier) (*flow.ExecutionResult, error)

func (*ExecutionResults) ByID

func (r *ExecutionResults) ByID(resultID flow.Identifier) (*flow.ExecutionResult, error)

func (*ExecutionResults) ByIDTx

func (r *ExecutionResults) ByIDTx(resultID flow.Identifier) func(*transaction.Tx) (*flow.ExecutionResult, error)

func (*ExecutionResults) ForceIndex

func (r *ExecutionResults) ForceIndex(blockID flow.Identifier, resultID flow.Identifier) error

func (*ExecutionResults) Index

func (r *ExecutionResults) Index(blockID flow.Identifier, resultID flow.Identifier) error

func (*ExecutionResults) RemoveIndexByBlockID

func (r *ExecutionResults) RemoveIndexByBlockID(blockID flow.Identifier) error

func (*ExecutionResults) Store

func (r *ExecutionResults) Store(result *flow.ExecutionResult) error

type Guarantees

type Guarantees struct {
	// contains filtered or unexported fields
}

Guarantees implements persistent storage for collection guarantees.

func NewGuarantees

func NewGuarantees(collector module.CacheMetrics, db *badger.DB, cacheSize uint) *Guarantees

func (*Guarantees) ByCollectionID

func (g *Guarantees) ByCollectionID(collID flow.Identifier) (*flow.CollectionGuarantee, error)

func (*Guarantees) Store

func (g *Guarantees) Store(guarantee *flow.CollectionGuarantee) error

type Headers

type Headers struct {
	// contains filtered or unexported fields
}

Headers implements a simple read-only header storage around a badger DB.

func NewHeaders

func NewHeaders(collector module.CacheMetrics, db *badger.DB) *Headers

func (*Headers) BatchIndexByChunkID

func (h *Headers) BatchIndexByChunkID(headerID, chunkID flow.Identifier, batch storage.BatchStorage) error

func (*Headers) BatchRemoveChunkBlockIndexByChunkID

func (h *Headers) BatchRemoveChunkBlockIndexByChunkID(chunkID flow.Identifier, batch storage.BatchStorage) error

BatchRemoveChunkBlockIndexByChunkID removes block to chunk index entry keyed by a blockID in a provided batch No errors are expected during normal operation, even if no entries are matched. If Badger unexpectedly fails to process the request, the error is wrapped in a generic error and returned.

func (*Headers) BlockIDByHeight

func (h *Headers) BlockIDByHeight(height uint64) (flow.Identifier, error)

func (*Headers) ByBlockID

func (h *Headers) ByBlockID(blockID flow.Identifier) (*flow.Header, error)

func (*Headers) ByHeight

func (h *Headers) ByHeight(height uint64) (*flow.Header, error)

func (*Headers) ByParentID

func (h *Headers) ByParentID(parentID flow.Identifier) ([]*flow.Header, error)

func (*Headers) FindHeaders

func (h *Headers) FindHeaders(filter func(header *flow.Header) bool) ([]flow.Header, error)

func (*Headers) IDByChunkID

func (h *Headers) IDByChunkID(chunkID flow.Identifier) (flow.Identifier, error)

func (*Headers) IndexByChunkID

func (h *Headers) IndexByChunkID(headerID, chunkID flow.Identifier) error

func (*Headers) RemoveChunkBlockIndexByChunkID

func (h *Headers) RemoveChunkBlockIndexByChunkID(chunkID flow.Identifier) error

func (*Headers) RollbackExecutedBlock

func (h *Headers) RollbackExecutedBlock(header *flow.Header) error

RollbackExecutedBlock update the executed block header to the given header. only useful for execution node to roll back executed block height

func (*Headers) Store

func (h *Headers) Store(header *flow.Header) error

type Index

type Index struct {
	// contains filtered or unexported fields
}

Index implements a simple read-only payload storage around a badger DB.

func NewIndex

func NewIndex(collector module.CacheMetrics, db *badger.DB) *Index

func (*Index) ByBlockID

func (i *Index) ByBlockID(blockID flow.Identifier) (*flow.Index, error)

func (*Index) Store

func (i *Index) Store(blockID flow.Identifier, index *flow.Index) error

type MyExecutionReceipts

type MyExecutionReceipts struct {
	// contains filtered or unexported fields
}

MyExecutionReceipts holds and indexes Execution Receipts. MyExecutionReceipts is implemented as a wrapper around badger.ExecutionReceipts The wrapper adds the ability to "MY execution receipt", from the viewpoint of an individual Execution Node.

func NewMyExecutionReceipts

func NewMyExecutionReceipts(collector module.CacheMetrics, db *badger.DB, receipts *ExecutionReceipts) *MyExecutionReceipts

NewMyExecutionReceipts creates instance of MyExecutionReceipts which is a wrapper wrapper around badger.ExecutionReceipts It's useful for execution nodes to keep track of produced execution receipts.

func (*MyExecutionReceipts) BatchRemoveIndexByBlockID

func (m *MyExecutionReceipts) BatchRemoveIndexByBlockID(blockID flow.Identifier, batch storage.BatchStorage) error

BatchRemoveIndexByBlockID removes blockID-to-my-execution-receipt index entry keyed by a blockID in a provided batch No errors are expected during normal operation, even if no entries are matched. If Badger unexpectedly fails to process the request, the error is wrapped in a generic error and returned.

func (*MyExecutionReceipts) BatchStoreMyReceipt

func (m *MyExecutionReceipts) BatchStoreMyReceipt(receipt *flow.ExecutionReceipt, batch storage.BatchStorage) error

BatchStoreMyReceipt stores blockID-to-my-receipt index entry keyed by blockID in a provided batch. No errors are expected during normal operation If entity fails marshalling, the error is wrapped in a generic error and returned. If Badger unexpectedly fails to process the request, the error is wrapped in a generic error and returned.

func (*MyExecutionReceipts) MyReceipt

func (m *MyExecutionReceipts) MyReceipt(blockID flow.Identifier) (*flow.ExecutionReceipt, error)

MyReceipt retrieves my receipt for the given block. Returns storage.ErrNotFound if no receipt was persisted for the block.

func (*MyExecutionReceipts) RemoveIndexByBlockID

func (m *MyExecutionReceipts) RemoveIndexByBlockID(blockID flow.Identifier) error

func (*MyExecutionReceipts) StoreMyReceipt

func (m *MyExecutionReceipts) StoreMyReceipt(receipt *flow.ExecutionReceipt) error

StoreMyReceipt stores the receipt and marks it as mine (trusted). My receipts are indexed by the block whose result they compute. Currently, we only support indexing a _single_ receipt per block. Attempting to store conflicting receipts for the same block will error.

type Payloads

type Payloads struct {
	// contains filtered or unexported fields
}

func NewPayloads

func NewPayloads(db *badger.DB, index *Index, guarantees *Guarantees, seals *Seals, receipts *ExecutionReceipts,
	results *ExecutionResults) *Payloads

func (*Payloads) ByBlockID

func (p *Payloads) ByBlockID(blockID flow.Identifier) (*flow.Payload, error)

func (*Payloads) Store

func (p *Payloads) Store(blockID flow.Identifier, payload *flow.Payload) error

type ResultApprovals

type ResultApprovals struct {
	// contains filtered or unexported fields
}

ResultApprovals implements persistent storage for result approvals.

func NewResultApprovals

func NewResultApprovals(collector module.CacheMetrics, db *badger.DB) *ResultApprovals

func (*ResultApprovals) ByChunk

func (r *ResultApprovals) ByChunk(resultID flow.Identifier, chunkIndex uint64) (*flow.ResultApproval, error)

ByChunk retrieves a ResultApproval by result ID and chunk index. The ResultApprovals store is only used within a verification node, where it is assumed that there is never more than one approval per chunk.

func (*ResultApprovals) ByID

func (r *ResultApprovals) ByID(approvalID flow.Identifier) (*flow.ResultApproval, error)

ByID retrieves a ResultApproval by its ID

func (*ResultApprovals) Index

func (r *ResultApprovals) Index(resultID flow.Identifier, chunkIndex uint64, approvalID flow.Identifier) error

Index indexes a ResultApproval by chunk (ResultID + chunk index). operation is idempotent (repeated calls with the same value are equivalent to just calling the method once; still the method succeeds on each call).

func (*ResultApprovals) Store

func (r *ResultApprovals) Store(approval *flow.ResultApproval) error

Store stores a ResultApproval

type SafeBeaconPrivateKeys

type SafeBeaconPrivateKeys struct {
	// contains filtered or unexported fields
}

SafeBeaconPrivateKeys is the safe beacon key storage backed by Badger DB.

func NewSafeBeaconPrivateKeys

func NewSafeBeaconPrivateKeys(state *DKGState) *SafeBeaconPrivateKeys

NewSafeBeaconPrivateKeys returns a safe beacon key storage backed by Badger DB.

func (*SafeBeaconPrivateKeys) RetrieveMyBeaconPrivateKey

func (keys *SafeBeaconPrivateKeys) RetrieveMyBeaconPrivateKey(epochCounter uint64) (key crypto.PrivateKey, safe bool, err error)

RetrieveMyBeaconPrivateKey retrieves my beacon private key for the given epoch, only if my key has been confirmed valid and safe for use.

Returns: * (key, true, nil) if the key is present and confirmed valid * (nil, false, nil) if the key has been marked invalid (by SetDKGEnded) * (nil, false, error) for any other condition, or exception

type Seals

type Seals struct {
	// contains filtered or unexported fields
}

func NewSeals

func NewSeals(collector module.CacheMetrics, db *badger.DB) *Seals

func (*Seals) ByID

func (s *Seals) ByID(sealID flow.Identifier) (*flow.Seal, error)

func (*Seals) FinalizedSealForBlock

func (s *Seals) FinalizedSealForBlock(blockID flow.Identifier) (*flow.Seal, error)

FinalizedSealForBlock returns the seal for the given block, only if that seal has been included in a finalized block. Returns storage.ErrNotFound if the block is unknown or unsealed.

func (*Seals) HighestInFork

func (s *Seals) HighestInFork(blockID flow.Identifier) (*flow.Seal, error)

HighestInFork retrieves the highest seal that was included in the fork up to (and including) blockID. This method should return a seal for any block known to the node. Returns storage.ErrNotFound if blockID is unknown.

func (*Seals) Store

func (s *Seals) Store(seal *flow.Seal) error

type ServiceEvents

type ServiceEvents struct {
	// contains filtered or unexported fields
}

func NewServiceEvents

func NewServiceEvents(collector module.CacheMetrics, db *badger.DB) *ServiceEvents

func (*ServiceEvents) BatchRemoveByBlockID

func (e *ServiceEvents) BatchRemoveByBlockID(blockID flow.Identifier, batch storage.BatchStorage) error

BatchRemoveByBlockID removes service events keyed by a blockID in provided batch No errors are expected during normal operation, even if no entries are matched. If Badger unexpectedly fails to process the request, the error is wrapped in a generic error and returned.

func (*ServiceEvents) BatchStore

func (e *ServiceEvents) BatchStore(blockID flow.Identifier, events []flow.Event, batch storage.BatchStorage) error

BatchStore stores service events keyed by a blockID in provided batch No errors are expected during normal operation, even if no entries are matched. If Badger unexpectedly fails to process the request, the error is wrapped in a generic error and returned.

func (*ServiceEvents) ByBlockID

func (e *ServiceEvents) ByBlockID(blockID flow.Identifier) ([]flow.Event, error)

ByBlockID returns the events for the given block ID

func (*ServiceEvents) RemoveByBlockID

func (e *ServiceEvents) RemoveByBlockID(blockID flow.Identifier) error

RemoveByBlockID removes service events by block ID

type TransactionResults

type TransactionResults struct {
	// contains filtered or unexported fields
}

func NewTransactionResults

func NewTransactionResults(collector module.CacheMetrics, db *badger.DB, transactionResultsCacheSize uint) *TransactionResults

func (*TransactionResults) BatchRemoveByBlockID

func (tr *TransactionResults) BatchRemoveByBlockID(blockID flow.Identifier, batch storage.BatchStorage) error

BatchRemoveByBlockID batch removes transaction results by block ID

func (*TransactionResults) BatchStore

func (tr *TransactionResults) BatchStore(blockID flow.Identifier, transactionResults []flow.TransactionResult, batch storage.BatchStorage) error

BatchStore will store the transaction results for the given block ID in a batch

func (*TransactionResults) ByBlockID

func (tr *TransactionResults) ByBlockID(blockID flow.Identifier) ([]flow.TransactionResult, error)

ByBlockID gets all transaction results for a block, ordered by transaction index

func (*TransactionResults) ByBlockIDTransactionID

func (tr *TransactionResults) ByBlockIDTransactionID(blockID flow.Identifier, txID flow.Identifier) (*flow.TransactionResult, error)

ByBlockIDTransactionID returns the runtime transaction result for the given block ID and transaction ID

func (*TransactionResults) ByBlockIDTransactionIndex

func (tr *TransactionResults) ByBlockIDTransactionIndex(blockID flow.Identifier, txIndex uint32) (*flow.TransactionResult, error)

ByBlockIDTransactionIndex returns the runtime transaction result for the given block ID and transaction index

func (*TransactionResults) RemoveByBlockID

func (tr *TransactionResults) RemoveByBlockID(blockID flow.Identifier) error

RemoveByBlockID removes transaction results by block ID

type Transactions

type Transactions struct {
	// contains filtered or unexported fields
}

Transactions ...

func NewTransactions

func NewTransactions(cacheMetrics module.CacheMetrics, db *badger.DB) *Transactions

NewTransactions ...

func (*Transactions) ByID

ByID ...

func (*Transactions) Store

func (t *Transactions) Store(flowTx *flow.TransactionBody) error

Store ...

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL