Help us shape the future of Go! Take the 2026 Go Developer Survey

query

package
v0.32.9 Latest Latest
Warning

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

Go to latest
Published: Nov 15, 2023 License: AGPL-3.0 Imports: 18 Imported by: 1

Documentation

Index

Constants

View Source
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,
		error,
	)

	GetAccount(
		ctx context.Context,
		addr flow.Address,
		header *flow.Header,
		snapshot snapshot.StorageSnapshot,
	) (
		*flow.Account,
		error,
	)
}

type QueryConfig

type QueryConfig struct {
	LogTimeThreshold    time.Duration
	ExecutionTimeLimit  time.Duration
	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 (e *QueryExecutor) ExecuteScript(
	ctx context.Context,
	script []byte,
	arguments [][]byte,
	blockHeader *flow.Header,
	snapshot snapshot.StorageSnapshot,
) (
	encodedValue []byte,
	err error,
)

func (*QueryExecutor) GetAccount

func (e *QueryExecutor) GetAccount(
	ctx context.Context,
	address flow.Address,
	blockHeader *flow.Header,
	snapshot snapshot.StorageSnapshot,
) (
	*flow.Account,
	error,
)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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