Documentation
¶
Index ¶
- type BlockAttestationResult
- func (ar *BlockAttestationResult) AllChunkDataPacks() ([]*flow.ChunkDataPack, error)
- func (ar *BlockAttestationResult) AllChunks() ([]*flow.Chunk, error)
- func (ar *BlockAttestationResult) AllEventCommitments() []flow.Identifier
- func (ar *BlockAttestationResult) AppendCollectionAttestationResult(startStateCommit flow.StateCommitment, endStateCommit flow.StateCommitment, ...)
- func (ar *BlockAttestationResult) ChunkAt(index int) (*flow.Chunk, error)
- func (ar *BlockAttestationResult) ChunkDataPackAt(index int) (*flow.ChunkDataPack, error)
- func (ar *BlockAttestationResult) CollectionAttestationResultAt(colIndex int) *CollectionAttestationResult
- func (ar *BlockAttestationResult) Size() int
- type BlockExecutionResult
- func (er *BlockExecutionResult) AllConvertedServiceEvents() flow.ServiceEventList
- func (er *BlockExecutionResult) AllEvents() flow.EventsList
- func (er *BlockExecutionResult) AllExecutionSnapshots() []*snapshot.ExecutionSnapshot
- func (er *BlockExecutionResult) AllServiceEvents() flow.EventsList
- func (er *BlockExecutionResult) AllTransactionResults() flow.TransactionResults
- func (er *BlockExecutionResult) AllUpdatedRegisters() []flow.RegisterEntry
- func (er *BlockExecutionResult) CollectionExecutionResultAt(colIndex int) *CollectionExecutionResult
- func (er *BlockExecutionResult) ServiceEventCountForChunk(chunkIndex int) uint16
- func (er *BlockExecutionResult) Size() int
- func (er *BlockExecutionResult) TransactionResultAt(txIdx int) *flow.TransactionResult
- type CollectionAttestationResult
- func (a *CollectionAttestationResult) EndStateCommitment() flow.StateCommitment
- func (a *CollectionAttestationResult) EventCommitment() flow.Identifier
- func (a *CollectionAttestationResult) StartStateCommitment() flow.StateCommitment
- func (a *CollectionAttestationResult) StateProof() flow.StorageProof
- func (a *CollectionAttestationResult) UpdateEndStateCommitment(endState flow.StateCommitment)
- type CollectionExecutionResult
- func (c *CollectionExecutionResult) AppendTransactionResults(events flow.EventsList, serviceEvents flow.EventsList, ...)
- func (c *CollectionExecutionResult) ConvertedServiceEvents() flow.ServiceEventList
- func (c *CollectionExecutionResult) Events() flow.EventsList
- func (c *CollectionExecutionResult) ExecutionSnapshot() *snapshot.ExecutionSnapshot
- func (c *CollectionExecutionResult) ServiceEventList() flow.EventsList
- func (c *CollectionExecutionResult) TransactionResults() flow.TransactionResults
- func (c *CollectionExecutionResult) UpdateExecutionSnapshot(executionSnapshot *snapshot.ExecutionSnapshot)
- type ComputationResult
- type ExecutedFinalizedWAL
- type ExtendableStorageSnapshot
- type FinalizedReader
- type InMemoryRegisterStore
- type OnDiskRegisterStore
- type RegisterStore
- type RegisterStoreNotifier
- type ScriptExecutor
- type WALReader
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BlockAttestationResult ¶ added in v0.31.0
type BlockAttestationResult struct {
*BlockExecutionResult
// TODO(ramtin): move this to the outside, everything needed for create this
// should be available as part of computation result and most likely trieUpdate
// was the reason this is kept here, long term we don't need this data and should
// act based on register deltas
*execution_data.BlockExecutionData
// contains filtered or unexported fields
}
BlockAttestationResult holds collection attestation results
func NewEmptyBlockAttestationResult ¶ added in v0.31.0
func NewEmptyBlockAttestationResult( blockExecutionResult *BlockExecutionResult, ) *BlockAttestationResult
func (*BlockAttestationResult) AllChunkDataPacks ¶ added in v0.31.0
func (ar *BlockAttestationResult) AllChunkDataPacks() ([]*flow.ChunkDataPack, error)
func (*BlockAttestationResult) AllChunks ¶ added in v0.31.0
func (ar *BlockAttestationResult) AllChunks() ([]*flow.Chunk, error)
func (*BlockAttestationResult) AllEventCommitments ¶ added in v0.31.0
func (ar *BlockAttestationResult) AllEventCommitments() []flow.Identifier
func (*BlockAttestationResult) AppendCollectionAttestationResult ¶ added in v0.31.0
func (ar *BlockAttestationResult) AppendCollectionAttestationResult( startStateCommit flow.StateCommitment, endStateCommit flow.StateCommitment, stateProof flow.StorageProof, eventCommit flow.Identifier, chunkExecutionDatas *execution_data.ChunkExecutionData, )
func (*BlockAttestationResult) ChunkAt ¶ added in v0.31.0
func (ar *BlockAttestationResult) ChunkAt(index int) (*flow.Chunk, error)
ChunkAt returns the Chunk for the collection at the given index. Receiver BlockAttestationResult is expected to be well-formed; callers must use an index that exists. No errors are expected during normal operation.
func (*BlockAttestationResult) ChunkDataPackAt ¶ added in v0.31.0
func (ar *BlockAttestationResult) ChunkDataPackAt(index int) (*flow.ChunkDataPack, error)
ChunkDataPackAt returns the ChunkDataPack for the collection at the given index. Receiver BlockAttestationResult is expected to be well-formed; callers must use an index that exists. No errors are expected during normal operation.
func (*BlockAttestationResult) CollectionAttestationResultAt ¶ added in v0.31.0
func (ar *BlockAttestationResult) CollectionAttestationResultAt(colIndex int) *CollectionAttestationResult
CollectionAttestationResultAt returns CollectionAttestationResult at collection index
func (*BlockAttestationResult) Size ¶ added in v0.31.0
func (ar *BlockAttestationResult) Size() int
Size returns the size of collection attestation results
type BlockExecutionResult ¶ added in v0.31.0
type BlockExecutionResult struct {
*entity.ExecutableBlock
ExecutionDataRoot *flow.BlockExecutionDataRoot // full root data structure produced from block
// contains filtered or unexported fields
}
BlockExecutionResult captures artifacts of execution of block collections
func NewPopulatedBlockExecutionResult ¶ added in v0.31.0
func NewPopulatedBlockExecutionResult(eb *entity.ExecutableBlock) *BlockExecutionResult
NewPopulatedBlockExecutionResult constructs a new BlockExecutionResult, pre-populated with `chunkCounts` number of collection results
func (*BlockExecutionResult) AllConvertedServiceEvents ¶ added in v0.31.0
func (er *BlockExecutionResult) AllConvertedServiceEvents() flow.ServiceEventList
func (*BlockExecutionResult) AllEvents ¶ added in v0.31.0
func (er *BlockExecutionResult) AllEvents() flow.EventsList
func (*BlockExecutionResult) AllExecutionSnapshots ¶ added in v0.31.0
func (er *BlockExecutionResult) AllExecutionSnapshots() []*snapshot.ExecutionSnapshot
func (*BlockExecutionResult) AllServiceEvents ¶ added in v0.31.0
func (er *BlockExecutionResult) AllServiceEvents() flow.EventsList
func (*BlockExecutionResult) AllTransactionResults ¶ added in v0.31.0
func (er *BlockExecutionResult) AllTransactionResults() flow.TransactionResults
func (*BlockExecutionResult) AllUpdatedRegisters ¶ added in v0.33.1
func (er *BlockExecutionResult) AllUpdatedRegisters() []flow.RegisterEntry
AllUpdatedRegisters returns all updated unique register entries Note: order is not determinstic
func (*BlockExecutionResult) CollectionExecutionResultAt ¶ added in v0.31.0
func (er *BlockExecutionResult) CollectionExecutionResultAt(colIndex int) *CollectionExecutionResult
func (*BlockExecutionResult) ServiceEventCountForChunk ¶ added in v0.39.0
func (er *BlockExecutionResult) ServiceEventCountForChunk(chunkIndex int) uint16
ServiceEventCountForChunk returns the number of service events emitted in the given chunk.
func (*BlockExecutionResult) Size ¶ added in v0.31.0
func (er *BlockExecutionResult) Size() int
Size returns the size of collection execution results
func (*BlockExecutionResult) TransactionResultAt ¶ added in v0.31.0
func (er *BlockExecutionResult) TransactionResultAt(txIdx int) *flow.TransactionResult
type CollectionAttestationResult ¶ added in v0.31.0
type CollectionAttestationResult struct {
// contains filtered or unexported fields
}
CollectionAttestationResult holds attestations generated during post-processing phase of collect execution.
func NewCollectionAttestationResult ¶ added in v0.31.0
func NewCollectionAttestationResult( startStateCommit flow.StateCommitment, endStateCommit flow.StateCommitment, stateProof flow.StorageProof, eventCommit flow.Identifier, ) *CollectionAttestationResult
func (*CollectionAttestationResult) EndStateCommitment ¶ added in v0.31.0
func (a *CollectionAttestationResult) EndStateCommitment() flow.StateCommitment
func (*CollectionAttestationResult) EventCommitment ¶ added in v0.31.0
func (a *CollectionAttestationResult) EventCommitment() flow.Identifier
func (*CollectionAttestationResult) StartStateCommitment ¶ added in v0.31.0
func (a *CollectionAttestationResult) StartStateCommitment() flow.StateCommitment
func (*CollectionAttestationResult) StateProof ¶ added in v0.31.0
func (a *CollectionAttestationResult) StateProof() flow.StorageProof
func (*CollectionAttestationResult) UpdateEndStateCommitment ¶ added in v0.31.0
func (a *CollectionAttestationResult) UpdateEndStateCommitment(endState flow.StateCommitment)
TODO(ramtin): depricate in the future, temp method, needed for uploader for now
type CollectionExecutionResult ¶ added in v0.31.0
type CollectionExecutionResult struct {
// contains filtered or unexported fields
}
CollectionExecutionResult holds aggregated artifacts (events, tx resutls, ...) generated during collection execution
func NewEmptyCollectionExecutionResult ¶ added in v0.31.0
func NewEmptyCollectionExecutionResult() *CollectionExecutionResult
NewEmptyCollectionExecutionResult constructs a new CollectionExecutionResult
func (*CollectionExecutionResult) AppendTransactionResults ¶ added in v0.31.0
func (c *CollectionExecutionResult) AppendTransactionResults( events flow.EventsList, serviceEvents flow.EventsList, convertedServiceEvents flow.ServiceEventList, transactionResult flow.TransactionResult, )
func (*CollectionExecutionResult) ConvertedServiceEvents ¶ added in v0.31.0
func (c *CollectionExecutionResult) ConvertedServiceEvents() flow.ServiceEventList
func (*CollectionExecutionResult) Events ¶ added in v0.31.0
func (c *CollectionExecutionResult) Events() flow.EventsList
func (*CollectionExecutionResult) ExecutionSnapshot ¶ added in v0.31.0
func (c *CollectionExecutionResult) ExecutionSnapshot() *snapshot.ExecutionSnapshot
func (*CollectionExecutionResult) ServiceEventList ¶ added in v0.31.0
func (c *CollectionExecutionResult) ServiceEventList() flow.EventsList
func (*CollectionExecutionResult) TransactionResults ¶ added in v0.31.0
func (c *CollectionExecutionResult) TransactionResults() flow.TransactionResults
func (*CollectionExecutionResult) UpdateExecutionSnapshot ¶ added in v0.31.0
func (c *CollectionExecutionResult) UpdateExecutionSnapshot( executionSnapshot *snapshot.ExecutionSnapshot, )
type ComputationResult ¶
type ComputationResult struct {
*BlockExecutionResult
*BlockAttestationResult
ExecutionReceipt *flow.ExecutionReceipt
}
ComputationResult captures artifacts of execution of block collections, collection attestation results and the full execution receipt, as sent by the Execution Node. CAUTION: This type is used to represent both a complete ComputationResult and a partially constructed ComputationResult. TODO: Consider using a Builder type to represent the partially constructed model.
func NewEmptyComputationResult ¶ added in v0.28.7
func NewEmptyComputationResult( block *entity.ExecutableBlock, ) *ComputationResult
NewEmptyComputationResult creates an empty ComputationResult. Construction ComputationResult allowed only within the constructor.
func (*ComputationResult) CurrentEndState ¶ added in v0.31.0
func (cr *ComputationResult) CurrentEndState() flow.StateCommitment
CurrentEndState returns the most recent end state if no attestation appended yet, it returns start state of block TODO(ramtin): we probably don't need this long term as part of this method
type ExecutedFinalizedWAL ¶ added in v0.33.1
type ExtendableStorageSnapshot ¶ added in v0.33.1
type ExtendableStorageSnapshot interface {
snapshot.StorageSnapshot
Extend(newCommit flow.StateCommitment, updatedRegisters map[flow.RegisterID]flow.RegisterValue) ExtendableStorageSnapshot
Commitment() flow.StateCommitment
}
type FinalizedReader ¶ added in v0.33.1
type FinalizedReader interface {
// FinalizedBlockIDAtHeight returns the block ID of the finalized block at the given height.
// It return storage.NotFound if the given height has not been finalized yet
// any other error returned are exceptions
FinalizedBlockIDAtHeight(height uint64) (flow.Identifier, error)
}
type InMemoryRegisterStore ¶ added in v0.33.1
type InMemoryRegisterStore interface {
Prune(finalizedHeight uint64, finalizedBlockID flow.Identifier) error
PrunedHeight() uint64
// GetRegister will return the latest updated value of the given register since the pruned height.
// It returns ErrPruned if the register is unknown or not updated since the pruned height
// It returns exception if internal index is inconsistent
GetRegister(height uint64, blockID flow.Identifier, register flow.RegisterID) (flow.RegisterValue, error)
GetUpdatedRegisters(height uint64, blockID flow.Identifier) (flow.RegisterEntries, error)
SaveRegisters(
height uint64,
blockID flow.Identifier,
parentID flow.Identifier,
registers flow.RegisterEntries,
) error
// IsBlockExecuted returns wheather the given block is executed.
// It returns:
// - (true, nil) if the block is above the pruned height and is executed
// - (true, nil) if the block is the pruned block, since the prunded block are finalized and executed
// - (false, nil) if the block is above the pruned height and is not executed
// - (false, nil) if the block's height is the pruned height, but is different from the pruned block
// - (false, exception) if the block is below the pruned height
IsBlockExecuted(height uint64, blockID flow.Identifier) (bool, error)
}
see implementation in engine/execution/storehouse/in_memory_register_store.go
type OnDiskRegisterStore ¶ added in v0.33.1
type OnDiskRegisterStore = storage.RegisterIndex
type RegisterStore ¶ added in v0.33.1
type RegisterStore interface {
// GetRegister first try to get the register from InMemoryRegisterStore, then OnDiskRegisterStore
// It returns:
// - (value, nil) if the register value is found at the given block
// - (nil, nil) if the register is not found
// - (nil, storage.ErrHeightNotIndexed) if the height is below the first height that is indexed.
// - (nil, storehouse.ErrNotExecuted) if the block is not executed yet
// - (nil, storehouse.ErrNotExecuted) if the block is conflicting iwth finalized block
// - (nil, err) for any other exceptions
GetRegister(height uint64, blockID flow.Identifier, register flow.RegisterID) (flow.RegisterValue, error)
// SaveRegisters saves to InMemoryRegisterStore first, then trigger the same check as OnBlockFinalized
// Depend on InMemoryRegisterStore.SaveRegisters
// It returns:
// - nil if the registers are saved successfully
// - exception is the block is above the pruned height but does not connect to the pruned height (conflicting block).
// - exception if the block is below the pruned height
// - exception if the save block is saved again
// - exception for any other exception
SaveRegisters(header *flow.Header, registers flow.RegisterEntries) error
// Depend on FinalizedReader's FinalizedBlockIDAtHeight
// Depend on ExecutedFinalizedWAL.Append
// Depend on OnDiskRegisterStore.SaveRegisters
// OnBlockFinalized trigger the check of whether a block at the next height becomes finalized and executed.
// Note: This is a blocking call
// the next height is the existing finalized and executed block's height + 1.
// If a block at next height becomes finalized and executed, then:
// 1. write the registers to write ahead logs
// 2. save the registers of the block to OnDiskRegisterStore
// 3. prune the height in InMemoryRegisterStore
// any error returned are exception
OnBlockFinalized() error
// LastFinalizedAndExecutedHeight returns the height of the last finalized and executed block,
// which has been saved in OnDiskRegisterStore
LastFinalizedAndExecutedHeight() uint64
// IsBlockExecuted returns whether the given block is executed.
// If a block is not executed, it does not distinguish whether the block exists or not.
// It returns:
// - (true, nil) if the block is executed, regardless of whether the registers of the block is pruned on disk or not
// - (false, nil) if the block is not executed
// - (false, exception) if running into any exception
IsBlockExecuted(height uint64, blockID flow.Identifier) (bool, error)
}
RegisterStore is the interface for register store see implementation in engine/execution/storehouse/register_store.go
type RegisterStoreNotifier ¶ added in v0.33.1
type RegisterStoreNotifier interface {
OnFinalizedAndExecutedHeightUpdated(height uint64)
}
RegisterStoreNotifier is the interface for register store to notify when a block is finalized and executed
type ScriptExecutor ¶ added in v0.32.0
type ScriptExecutor interface {
// ExecuteScriptAtBlockID executes a script at the given Block id
// it returns the value, the computation used and the error (if any)
ExecuteScriptAtBlockID(ctx context.Context, script []byte, arguments [][]byte, blockID flow.Identifier) ([]byte, uint64, error)
// GetAccount returns the Account details at the given Block id
GetAccount(ctx context.Context, address flow.Address, blockID flow.Identifier) (*flow.Account, error)
// GetRegisterAtBlockID returns the value of a register at the given Block id (if available)
GetRegisterAtBlockID(ctx context.Context, owner, key []byte, blockID flow.Identifier) ([]byte, error)
}
ScriptExecutor represents the RPC calls that the execution script engine exposes to support the Access Node API calls