Documentation
¶
Index ¶
- Variables
- type Blocks
- type ChunkDataPacks
- type Cleaner
- type ClusterBlocks
- type ClusterPayloads
- type Collections
- type Commits
- type EpochCommits
- type EpochSetups
- type EpochStatuses
- type Events
- type ExecutionReceipts
- type ExecutionResults
- type Guarantees
- type Headers
- type Identities
- type Index
- type Ledger
- type LedgerVerifier
- type Payloads
- type Seals
- type TransactionResults
- type Transactions
Constants ¶
This section is empty.
Variables ¶
Functions ¶
This section is empty.
Types ¶
type Blocks ¶
type Blocks interface {
// Store will atomically store a block with all its dependencies.
Store(block *flow.Block) error
// StoreTx allows us to store a new block, including its payload & header, as part of a DB transaction, while
// still going through the caching layer.
StoreTx(block *flow.Block) func(*badger.Txn) error
// ByID returns the block with the given hash. It is available for
// finalized and ambiguous blocks.
ByID(blockID flow.Identifier) (*flow.Block, error)
// ByHeight returns the block at the given height. It is only available
// for finalized blocks.
ByHeight(height uint64) (*flow.Block, error)
// ByCollectionID returns the block for the given collection ID.
ByCollectionID(collID flow.Identifier) (*flow.Block, error)
// IndexBlockForCollections indexes the block each collection was
// included in.
IndexBlockForCollections(blockID flow.Identifier, collIDs []flow.Identifier) error
// UpdateLastFullBlockHeight updates the FullBlockHeight index
// The FullBlockHeight index indicates that block for which all collections have been received
UpdateLastFullBlockHeight(height uint64) error
// GetLastFullBlockHeight retrieves the FullBlockHeight
GetLastFullBlockHeight() (height uint64, err error)
}
Blocks represents persistent storage for blocks.
type ChunkDataPacks ¶
type ChunkDataPacks interface {
// Store inserts the chunk header, keyed by chunk ID.
Store(c *flow.ChunkDataPack) error
// Remove removes the chunk data for the given chunk ID, if it exists.
Remove(chunkID flow.Identifier) error
// ByChunkID returns the chunk data for the given a chunk ID.
ByChunkID(chunkID flow.Identifier) (*flow.ChunkDataPack, error)
}
ChunkDataPacks represents persistent storage for chunk data packs.
type ClusterBlocks ¶
type ClusterBlocks interface {
// Store stores the cluster block.
Store(block *cluster.Block) error
// ByID returns the block with the given ID.
ByID(blockID flow.Identifier) (*cluster.Block, error)
// ByHeight returns the block with the given height. Only available for
// finalized blocks.
ByHeight(height uint64) (*cluster.Block, error)
}
type ClusterPayloads ¶
type ClusterPayloads interface {
// Store stores and indexes the given cluster payload.
Store(blockID flow.Identifier, payload *cluster.Payload) error
// ByBlockID returns the cluster payload for the given block ID.
ByBlockID(blockID flow.Identifier) (*cluster.Payload, error)
}
ClusterPayloads handles storing and retrieving payloads for collection node cluster consensus.
type Collections ¶
type Collections interface {
// StoreLight inserts the collection. It does not insert, nor check
// existence of, the constituent transactions.
StoreLight(collection *flow.LightCollection) error
// Store inserts the collection keyed by ID and all constituent
// transactions.
Store(collection *flow.Collection) error
// Remove removes the collection and all constituent transactions.
Remove(collID flow.Identifier) error
// LightByID returns collection with the given ID. Only retrieves
// transaction hashes.
LightByID(collID flow.Identifier) (*flow.LightCollection, error)
// ByID returns the collection with the given ID, including all
// transactions within the collection.
ByID(collID flow.Identifier) (*flow.Collection, error)
// StoreLightAndIndexByTransaction inserts the collection (only transactions hashes) and adds a transaction id index
// for each of the transactions within the collection
StoreLightAndIndexByTransaction(collection *flow.LightCollection) error
// LightByTransactionID returns the collection for the given transaction ID. Only retrieves
// transaction hashes.
LightByTransactionID(txID flow.Identifier) (*flow.LightCollection, error)
}
Collections represents persistent storage for collections.
type Commits ¶
type Commits interface {
// Store will store a commit in the persistent storage.
Store(blockID flow.Identifier, commit flow.StateCommitment) error
// ByBlockID will retrieve a commit by its ID from persistent storage.
ByBlockID(blockID flow.Identifier) (flow.StateCommitment, error)
}
Commits represents persistent storage for state commitments.
type EpochCommits ¶
type EpochCommits interface {
// StoreTx allows us to store a new epoch commit in a DB transaction while updating the cache.
StoreTx(commit *flow.EpochCommit) func(*badger.Txn) error
// ByCommitID will return the EpochCommit event by its ID.
ByID(flow.Identifier) (*flow.EpochCommit, error)
}
type EpochSetups ¶
type EpochSetups interface {
// StoreTx allows us to store a new epoch setup in a DB transaction while going through the cache.
StoreTx(*flow.EpochSetup) func(*badger.Txn) error
// ByID will return the EpochSetup event by its ID.
ByID(flow.Identifier) (*flow.EpochSetup, error)
}
type EpochStatuses ¶
type EpochStatuses interface {
// StoreTx stores a new epoch state in a DB transaction while going through the cache.
StoreTx(blockID flow.Identifier, state *flow.EpochStatus) func(*badger.Txn) error
// ByBlockID will return the epoch status for the given block
ByBlockID(flow.Identifier) (*flow.EpochStatus, error)
}
type Events ¶
type Events interface {
// Store will store events for the given block ID
Store(blockID flow.Identifier, events []flow.Event) error
// ByBlockID returns the events for the given block ID
ByBlockID(blockID flow.Identifier) ([]flow.Event, error)
// ByBlockIDTransactionID returns the events for the given block ID and transaction ID
ByBlockIDTransactionID(blockID flow.Identifier, transactionID flow.Identifier) ([]flow.Event, error)
// ByBlockIDEventType returns the events for the given block ID and event type
ByBlockIDEventType(blockID flow.Identifier, eventType flow.EventType) ([]flow.Event, error)
}
Events represents persistent storage for events.
type ExecutionReceipts ¶
type ExecutionReceipts interface {
// Store stores an execution receipt.
Store(result *flow.ExecutionReceipt) error
// ByID retrieves an execution receipt by its ID.
ByID(resultID flow.Identifier) (*flow.ExecutionReceipt, error)
// Index indexes an execution receipt by block ID.
Index(blockID flow.Identifier, resultID flow.Identifier) error
// ByBlockID retrieves an execution receipt by block ID.
ByBlockID(blockID flow.Identifier) (*flow.ExecutionReceipt, error)
}
type ExecutionResults ¶
type ExecutionResults interface {
// Store stores an execution result.
Store(result *flow.ExecutionResult) error
// ByID retrieves an execution result by its ID.
ByID(resultID flow.Identifier) (*flow.ExecutionResult, error)
// Index indexes an execution result by block ID.
Index(blockID flow.Identifier, resultID flow.Identifier) error
// ByBlockID retrieves an execution result by block ID.
ByBlockID(blockID flow.Identifier) (*flow.ExecutionResult, error)
}
type Guarantees ¶
type Guarantees interface {
// Store inserts the collection guarantee.
Store(guarantee *flow.CollectionGuarantee) error
// ByCollectionID retrieves the collection guarantee by collection ID.
ByCollectionID(collID flow.Identifier) (*flow.CollectionGuarantee, error)
}
Guarantees represents persistent storage for collection guarantees.
type Headers ¶
type Headers interface {
// Store will store a header.
Store(header *flow.Header) error
// ByBlockID returns the header with the given ID. It is available for
// finalized and ambiguous blocks.
ByBlockID(blockID flow.Identifier) (*flow.Header, error)
// ByHeight returns the block with the given number. It is only available
// for finalized blocks.
ByHeight(height uint64) (*flow.Header, error)
// Find all children for the given parent block. The returned headers might
// be unfinalized; if there is more than one, at least one of them has to
// be unfinalized.
ByParentID(parentID flow.Identifier) ([]*flow.Header, error)
}
Headers represents persistent storage for blocks.
type Identities ¶
type Identities interface {
// Store will store the given identity.
Store(identity *flow.Identity) error
// ByNodeID will retrieve the identity for a node.
ByNodeID(nodeID flow.Identifier) (*flow.Identity, error)
}
Identities represents the simple storage for identities.
type Index ¶
type Index interface {
// Store stores the index for a block payload.
Store(blockID flow.Identifier, index *flow.Index) error
// ByBlockID retrieves the index for a block payload.
ByBlockID(blockID flow.Identifier) (*flow.Index, error)
}
type Ledger ¶
type Ledger interface {
module.ReadyDoneAware
EmptyStateCommitment() flow.StateCommitment
// Trusted methods (without proof)
// Get registers at specific StateCommitment by a list of register ids
GetRegisters(registerIDs []flow.RegisterID, stateCommitment flow.StateCommitment) (values []flow.RegisterValue, err error)
// Batched atomic updates of a subset of registers at specific state
UpdateRegisters(registerIDs []flow.RegisterID, values []flow.RegisterValue, stateCommitment flow.StateCommitment) (newStateCommitment flow.StateCommitment, err error)
// Untrusted methods (providing proofs)
// Get registers at specific StateCommitment by a list of register ids with proofs
GetRegistersWithProof(registerIDs []flow.RegisterID, stateCommitment flow.StateCommitment) (values []flow.RegisterValue, proofs []flow.StorageProof, err error)
// Batched atomic updates of a subset of registers at specific state with proofs
UpdateRegistersWithProof(registerIDs []flow.RegisterID, values []flow.RegisterValue, stateCommitment flow.StateCommitment) (newStateCommitment flow.StateCommitment, proofs []flow.StorageProof, err error)
DiskSize() (int64, error)
}
Ledger takes care of storing registers (key, value pairs) providing proof of correctness we aim to store a state of the order of 10^10 registers with up to 1M historic state versions
type LedgerVerifier ¶
type LedgerVerifier interface {
// verify if a provided proof for getRegisters is accurate
VerifyRegistersProof(registerIDs []flow.RegisterID, stateCommitment flow.StateCommitment, values []flow.RegisterValue, proof []flow.StorageProof) (verified bool, err error)
}
LedgerVerifier should be designed as an standalone package to verify proofs of storage
type Payloads ¶
type Payloads interface {
// Store will store a payload and index its contents.
Store(blockID flow.Identifier, payload *flow.Payload) error
// ByBlockID returns the payload with the given hash. It is available for
// finalized and ambiguous blocks.
ByBlockID(blockID flow.Identifier) (*flow.Payload, error)
}
Payloads represents persistent storage for payloads.
type Seals ¶
type Seals interface {
// Store inserts the seal.
Store(guarantee *flow.Seal) error
// ByID retrieves the seal by the collection
// fingerprint.
ByID(sealID flow.Identifier) (*flow.Seal, error)
// ByBlockID retrieves the last seal in the chain of seals for the block.
ByBlockID(sealedID flow.Identifier) (*flow.Seal, error)
}
Seals represents persistent storage for seals.
type TransactionResults ¶
type TransactionResults interface {
// Store inserts the transaction result
Store(blockID flow.Identifier, transactionResult *flow.TransactionResult) error
// BatchStore inserts a batch of transaction result
BatchStore(blockID flow.Identifier, transactionResults []flow.TransactionResult) error
// ByBlockIDTransactionID returns the transaction result for the given block ID and transaction ID
ByBlockIDTransactionID(blockID flow.Identifier, transactionID flow.Identifier) (*flow.TransactionResult, error)
}
TransactionResults represents persistent storage for transaction result
type Transactions ¶
type Transactions interface {
// Store inserts the transaction, keyed by fingerprint. Duplicate transaction insertion is ignored
Store(tx *flow.TransactionBody) error
// ByID returns the transaction for the given fingerprint.
ByID(txID flow.Identifier) (*flow.TransactionBody, error)
}
Transactions represents persistent storage for transactions.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
Package mocks is a generated GoMock package.
|
Package mocks is a generated GoMock package. |