gas

package
v0.0.0-...-fda440d Latest Latest
Warning

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

Go to latest
Published: May 31, 2024 License: Apache-2.0 Imports: 3 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DescIterNextCostFlat = "IterNextFlat"
	DescValuePerByte     = "ValuePerByte"
	DescWritePerByte     = "WritePerByte"
	DescReadPerByte      = "ReadPerByte"
	DescWriteCostFlat    = "WriteFlat"
	DescReadCostFlat     = "ReadFlat"
	DescHas              = "Has"
	DescDelete           = "Delete"
)

Gas consumption descriptors.

Variables

View Source
var DefaultConfig = StoreConfig{
	HasCost:          1000,
	DeleteCostFlat:   1000,
	ReadCostFlat:     1000,
	ReadCostPerByte:  3,
	WriteCostFlat:    2000,
	WriteCostPerByte: 30,
	IterNextCostFlat: 30,
}

Functions

func DefaultGasMeter

func DefaultGasMeter(gasLimit uint64) coregas.Meter

DefaultGasMeter returns the default gas meter. In case it is coregas.NoGasLimit a NoOpMeter is returned.

func DefaultWrapWithGasMeter

func DefaultWrapWithGasMeter(meter coregas.Meter, state store.WriterMap) store.WriterMap

DefaultWrapWithGasMeter defines the default wrap with gas meter function in stf. In case the meter sets as limit stf.NoGasLimit, then a fast path is taken and the store.WriterMap is returned.

func NewMeter

func NewMeter(gasLimit uint64) gas.Meter

NewMeter creates a new gas meter with the given gas limit. The gas meter keeps track of the gas consumed during execution.

Types

type Meter

type Meter struct {
	// contains filtered or unexported fields
}

func (*Meter) Consume

func (m *Meter) Consume(requested gas.Gas, _ string) error

Consume consumes the specified amount of gas from the meter. It returns an error if the requested gas exceeds the remaining gas limit.

func (*Meter) Consumed

func (m *Meter) Consumed() gas.Gas

Consumed returns the amount of gas consumed by the meter.

func (*Meter) Limit

func (m *Meter) Limit() gas.Gas

Limit returns the maximum gas limit allowed for the meter.

func (*Meter) Refund

func (m *Meter) Refund(amount gas.Gas, _ string) error

Refund refunds the specified amount of gas. If the amount is less than the consumed gas, it subtracts the amount from the consumed gas. It returns nil error.

func (*Meter) Remaining

func (m *Meter) Remaining() gas.Gas

Remaining returns the remaining gas limit.

type MeteredWriterMap

type MeteredWriterMap struct {
	// contains filtered or unexported fields
}

MeteredWriterMap wraps store.Writer and returns a gas metered version of it. Since the gas meter is shared across different writers, the metered writers are memoized.

func NewMeteredWriterMap

func NewMeteredWriterMap(conf StoreConfig, meter gas.Meter, state store.WriterMap) MeteredWriterMap

func (MeteredWriterMap) ApplyStateChanges

func (m MeteredWriterMap) ApplyStateChanges(stateChanges []store.StateChanges) error

func (MeteredWriterMap) GetReader

func (m MeteredWriterMap) GetReader(actor []byte) (store.Reader, error)

func (MeteredWriterMap) GetStateChanges

func (m MeteredWriterMap) GetStateChanges() ([]store.StateChanges, error)

func (MeteredWriterMap) GetWriter

func (m MeteredWriterMap) GetWriter(actor []byte) (store.Writer, error)

type NoOpMeter

type NoOpMeter struct{}

func (NoOpMeter) Consume

func (n NoOpMeter) Consume(_ coregas.Gas, _ string) error

func (NoOpMeter) Consumed

func (n NoOpMeter) Consumed() coregas.Gas

func (NoOpMeter) Limit

func (n NoOpMeter) Limit() coregas.Gas

func (NoOpMeter) Refund

func (n NoOpMeter) Refund(_ coregas.Gas, _ string) error

func (NoOpMeter) Remaining

func (n NoOpMeter) Remaining() coregas.Gas

type Store

type Store struct {
	// contains filtered or unexported fields
}

func NewStore

func NewStore(gc StoreConfig, meter gas.Meter, parent store.Writer) *Store

func (*Store) ApplyChangeSets

func (s *Store) ApplyChangeSets(changes []store.KVPair) error

func (*Store) ChangeSets

func (s *Store) ChangeSets() ([]store.KVPair, error)

func (*Store) Delete

func (s *Store) Delete(key []byte) error

func (*Store) Get

func (s *Store) Get(key []byte) ([]byte, error)

func (*Store) Has

func (s *Store) Has(key []byte) (bool, error)

func (*Store) Iterator

func (s *Store) Iterator(start, end []byte) (store.Iterator, error)

func (*Store) ReverseIterator

func (s *Store) ReverseIterator(start, end []byte) (store.Iterator, error)

func (*Store) Set

func (s *Store) Set(key, value []byte) error

type StoreConfig

type StoreConfig struct {
	ReadCostFlat, ReadCostPerByte, HasCost          gas.Gas
	WriteCostFlat, WriteCostPerByte, DeleteCostFlat gas.Gas
	IterNextCostFlat                                gas.Gas
}

Jump to

Keyboard shortcuts

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