Documentation ¶
Index ¶
- Constants
- type EntropyProviderPerBlock
- type Executor
- type QueryConfig
- type QueryExecutor
- func (e *QueryExecutor) ExecuteScript(ctx context.Context, script []byte, arguments [][]byte, ...) (encodedValue []byte, computationUsed uint64, err error)
- func (e *QueryExecutor) GetAccount(ctx context.Context, address flow.Address, blockHeader *flow.Header, ...) (*flow.Account, error)
- func (e *QueryExecutor) GetAccountBalance(ctx context.Context, address flow.Address, blockHeader *flow.Header, ...) (uint64, error)
- func (e *QueryExecutor) GetAccountKeys(ctx context.Context, address flow.Address, blockHeader *flow.Header, ...) ([]flow.AccountPublicKey, error)
Constants ¶
const ( DefaultLogTimeThreshold = 1 * time.Second DefaultExecutionTimeLimit = 10 * time.Second DefaultMaxErrorMessageSize = 1000 // 1000 chars )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type EntropyProviderPerBlock ¶ added in v0.32.0
type EntropyProviderPerBlock interface { // AtBlockID returns an entropy provider at the given block ID. AtBlockID(blockID flow.Identifier) environment.EntropyProvider }
EntropyProviderPerBlock is an abstraction for entropy providers that can be used in `QueryExecutor`.
`EntropyProvider` is defined in `fvm/environment` and abstracts the distributed random source used by the protocol.
For a full-protocol node implementation , `EntropyProvider` is implemented by the protocol `Snapshot`, while `EntropyProviderPerBlock` is implemented by the protocol `State`. For nodes answering script queries that do not participate in the protocol, `EntropyProvider` and `EntropyProviderPerBlock` can be implemented by other components that provide the source of randomness for each block.
func NewProtocolStateWrapper ¶ added in v0.32.0
func NewProtocolStateWrapper(s protocol.State) EntropyProviderPerBlock
NewProtocolStateWrapper wraps a protocol.State input as an `EntropyProviderPerBlock`
type Executor ¶
type Executor interface { ExecuteScript( ctx context.Context, script []byte, arguments [][]byte, blockHeader *flow.Header, snapshot snapshot.StorageSnapshot, ) ( []byte, uint64, error, ) GetAccount( ctx context.Context, addr flow.Address, header *flow.Header, snapshot snapshot.StorageSnapshot, ) ( *flow.Account, error, ) GetAccountBalance( ctx context.Context, addr flow.Address, header *flow.Header, snapshot snapshot.StorageSnapshot, ) ( uint64, error, ) GetAccountKeys( ctx context.Context, addr flow.Address, header *flow.Header, snapshot snapshot.StorageSnapshot, ) ( []flow.AccountPublicKey, error, ) }
type QueryConfig ¶
type QueryConfig struct { LogTimeThreshold time.Duration ExecutionTimeLimit time.Duration ComputationLimit uint64 MaxErrorMessageSize int }
func NewDefaultConfig ¶
func NewDefaultConfig() QueryConfig
type QueryExecutor ¶
type QueryExecutor struct {
// contains filtered or unexported fields
}
func NewQueryExecutor ¶
func NewQueryExecutor( config QueryConfig, logger zerolog.Logger, metrics module.ExecutionMetrics, vm fvm.VM, vmCtx fvm.Context, derivedChainData *derived.DerivedChainData, entropyPerBlock EntropyProviderPerBlock, ) *QueryExecutor
func (*QueryExecutor) ExecuteScript ¶
func (*QueryExecutor) GetAccount ¶
func (*QueryExecutor) GetAccountBalance ¶ added in v0.35.17
func (*QueryExecutor) GetAccountKeys ¶ added in v0.35.17
func (e *QueryExecutor) GetAccountKeys(ctx context.Context, address flow.Address, blockHeader *flow.Header, snapshot snapshot.StorageSnapshot) ([]flow.AccountPublicKey, error)