predicates

package
v0.5.0-rc1 Latest Latest
Warning

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

Go to latest
Published: Oct 15, 2024 License: AGPL-3.0 Imports: 7 Imported by: 2

Documentation

Index

Constants

View Source
const MaxPredicateBinSize = 65536

Variables

This section is empty.

Functions

func ExtractPredicate

func ExtractPredicate(predicateBytes []byte) (*predicates.Predicate, error)

func ExtractPubKey

func ExtractPubKey(ownerProof []byte) ([]byte, error)

Types

type GasMeter

type GasMeter interface {
	GasAvailable() uint64
	SpendGas(gas uint64) error
	CalculateCost() uint64
}

type PredicateEngine added in v0.4.0

type PredicateEngine interface {
	// ID unique ID of the engine, this is used to dispatch predicates (predicate.Tag == engine.ID)
	// to the engine which is supposed to evaluate it.
	ID() uint64

	// Execute executes given predicate
	Execute(ctx context.Context, predicate *predicates.Predicate, args []byte, sigBytesFn func() ([]byte, error), env TxContext) (bool, error)
}

type PredicateEngines added in v0.4.0

type PredicateEngines map[uint64]func(ctx context.Context, predicate *predicates.Predicate, args []byte, sigBytesFn func() ([]byte, error), env TxContext) (bool, error)

func Dispatcher added in v0.4.0

func Dispatcher(engines ...PredicateEngine) (PredicateEngines, error)

Dispatcher creates collection of predicate engines

func (PredicateEngines) Add added in v0.4.0

func (pe PredicateEngines) Add(engine PredicateEngine) error

func (PredicateEngines) Execute added in v0.4.0

func (pe PredicateEngines) Execute(ctx context.Context, predicate types.PredicateBytes, args []byte, sigBytesFn func() ([]byte, error), env TxContext) (bool, error)

Execute decodes predicate from binary representation and dispatches it to appropriate predicate executor.

type PredicateExecutor

type PredicateExecutor func(ctx context.Context, predicate types.PredicateBytes, args []byte, sigBytesFn func() ([]byte, error), env TxContext) (bool, error)

type PredicateRunner

type PredicateRunner func(predicate types.PredicateBytes, args []byte, sigBytesFn func() ([]byte, error), env TxContext) error

func NewPredicateRunner

func NewPredicateRunner(

	executor PredicateExecutor,
) PredicateRunner

NewPredicateRunner is a helper to refactor predicate support - provide implementation which is common for most tx systems and "translates" between two interfaces:

  • currently tx handlers do not have context.Context to pass to the predicate engine so wrapper returned doesn't require it and passes context.Background() to the predicate engine;
  • currently tx systems do not differentiate between predicate evaluating to "false" vs returning error (ie invalid predicate or arguments) so wrapper returns error in case the predicate evaluates to "false".

type TxContext added in v0.4.0

type TxContext interface {
	GasMeter
	GetUnit(id types.UnitID, committed bool) (*state.Unit, error)
	CurrentRound() uint64
	TrustBase(epoch uint64) (types.RootTrustBase, error)
	TransactionOrder() (*types.TransactionOrder, error)
}

TxContext environment where predicate runs (AKA transaction execution context) This is meant to provide the predicate engine with access to the tx system which processes the transaction.

Directories

Path Synopsis
wvm

Jump to

Keyboard shortcuts

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