txcache

package
v1.0.5 Latest Latest
Warning

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

Go to latest
Published: Dec 9, 2022 License: GPL-3.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ConfigDestinationMe

type ConfigDestinationMe struct {
	Name                        string
	NumChunks                   uint32
	MaxNumItems                 uint32
	MaxNumBytes                 uint32
	NumItemsToPreemptivelyEvict uint32
}

ConfigDestinationMe holds cache configuration

func (*ConfigDestinationMe) String

func (config *ConfigDestinationMe) String() string

String returns a readable representation of the object

type ConfigSourceMe

type ConfigSourceMe struct {
	Name                          string
	NumChunks                     uint32
	EvictionEnabled               bool
	NumBytesThreshold             uint32
	NumBytesPerSenderThreshold    uint32
	CountThreshold                uint32
	CountPerSenderThreshold       uint32
	NumSendersToPreemptivelyEvict uint32
}

ConfigSourceMe holds cache configuration

func (*ConfigSourceMe) String

func (config *ConfigSourceMe) String() string

String returns a readable representation of the object

type CrossTxCache

type CrossTxCache struct {
	*immunitycache.ImmunityCache
	// contains filtered or unexported fields
}

CrossTxCache holds cross-shard transactions (where destination == me)

func NewCrossTxCache

func NewCrossTxCache(config ConfigDestinationMe) (*CrossTxCache, error)

NewCrossTxCache creates a new transactions cache

func (*CrossTxCache) AddTx

func (cache *CrossTxCache) AddTx(tx *WrappedTransaction) (has, added bool)

AddTx adds a transaction in the cache

func (*CrossTxCache) ForEachTransaction

func (cache *CrossTxCache) ForEachTransaction(function ForEachTransaction)

ForEachTransaction iterates over the transactions in the cache

func (*CrossTxCache) Get

func (cache *CrossTxCache) Get(key []byte) (value interface{}, ok bool)

Get returns the unwrapped payload of a TransactionWrapper Implemented for compatibility reasons (see txPoolsCleaner.go).

func (*CrossTxCache) GetByTxHash

func (cache *CrossTxCache) GetByTxHash(txHash []byte) (*WrappedTransaction, bool)

GetByTxHash gets the transaction by hash

func (*CrossTxCache) GetTransactionsPoolForSender

func (cache *CrossTxCache) GetTransactionsPoolForSender(_ string) []*WrappedTransaction

GetTransactionsPoolForSender returns an empty slice, only to respect the interface CrossTxCache does not support transaction selection (not applicable, since transactions are already half-executed), thus does not handle nonces, nonce gaps etc.

func (*CrossTxCache) ImmunizeTxsAgainstEviction

func (cache *CrossTxCache) ImmunizeTxsAgainstEviction(keys [][]byte)

ImmunizeTxsAgainstEviction marks items as non-evictable

func (*CrossTxCache) IsInterfaceNil

func (cache *CrossTxCache) IsInterfaceNil() bool

IsInterfaceNil returns true if there is no value under the interface

func (*CrossTxCache) Peek

func (cache *CrossTxCache) Peek(key []byte) (value interface{}, ok bool)

Peek returns the unwrapped payload of a TransactionWrapper Implemented for compatibility reasons (see transactions.go, common.go).

func (*CrossTxCache) RemoveTxByHash

func (cache *CrossTxCache) RemoveTxByHash(txHash []byte) bool

RemoveTxByHash removes tx by hash

type DisabledCache

type DisabledCache struct {
}

DisabledCache represents a disabled cache

func NewDisabledCache

func NewDisabledCache() *DisabledCache

NewDisabledCache creates a new disabled cache

func (*DisabledCache) AddTx

func (cache *DisabledCache) AddTx(_ *WrappedTransaction) (ok bool, added bool)

AddTx does nothing

func (*DisabledCache) Clear

func (cache *DisabledCache) Clear()

Clear does nothing

func (*DisabledCache) Close

func (cache *DisabledCache) Close() error

Close does nothing

func (*DisabledCache) Diagnose

func (cache *DisabledCache) Diagnose(_ bool)

Diagnose does nothing

func (*DisabledCache) ForEachTransaction

func (cache *DisabledCache) ForEachTransaction(_ ForEachTransaction)

ForEachTransaction does nothing

func (*DisabledCache) Get

func (cache *DisabledCache) Get(_ []byte) (value interface{}, ok bool)

Get returns no transaction

func (*DisabledCache) GetByTxHash

func (cache *DisabledCache) GetByTxHash(_ []byte) (*WrappedTransaction, bool)

GetByTxHash returns no transaction

func (*DisabledCache) GetTransactionsPoolForSender

func (cache *DisabledCache) GetTransactionsPoolForSender(_ string) []*WrappedTransaction

GetTransactionsPoolForSender returns an empty slice

func (*DisabledCache) Has

func (cache *DisabledCache) Has(_ []byte) bool

Has returns false

func (*DisabledCache) HasOrAdd

func (cache *DisabledCache) HasOrAdd(_ []byte, _ interface{}, _ int) (has, added bool)

HasOrAdd returns false, does nothing

func (*DisabledCache) ImmunizeTxsAgainstEviction

func (cache *DisabledCache) ImmunizeTxsAgainstEviction(_ [][]byte)

ImmunizeTxsAgainstEviction does nothing

func (*DisabledCache) IsInterfaceNil

func (cache *DisabledCache) IsInterfaceNil() bool

IsInterfaceNil returns true if there is no value under the interface

func (*DisabledCache) Keys

func (cache *DisabledCache) Keys() [][]byte

Keys returns an empty slice

func (*DisabledCache) Len

func (cache *DisabledCache) Len() int

Len returns zero

func (*DisabledCache) MaxSize

func (cache *DisabledCache) MaxSize() int

MaxSize returns zero

func (*DisabledCache) NotifyAccountNonce

func (cache *DisabledCache) NotifyAccountNonce(_ []byte, _ uint64)

NotifyAccountNonce does nothing

func (*DisabledCache) NumBytes

func (cache *DisabledCache) NumBytes() int

NumBytes returns zero

func (*DisabledCache) Peek

func (cache *DisabledCache) Peek(_ []byte) (value interface{}, ok bool)

Peek returns no transaction

func (*DisabledCache) Put

func (cache *DisabledCache) Put(_ []byte, _ interface{}, _ int) (evicted bool)

Put does nothing

func (*DisabledCache) RegisterHandler

func (cache *DisabledCache) RegisterHandler(func(key []byte, value interface{}), string)

RegisterHandler does nothing

func (*DisabledCache) Remove

func (cache *DisabledCache) Remove(_ []byte)

Remove does nothing

func (*DisabledCache) RemoveTxByHash

func (cache *DisabledCache) RemoveTxByHash(_ []byte) bool

RemoveTxByHash does nothing

func (*DisabledCache) SelectTransactionsWithBandwidth

func (cache *DisabledCache) SelectTransactionsWithBandwidth(_ int, _ int, _ uint64) []*WrappedTransaction

SelectTransactionsWithBandwidth returns an empty slice

func (*DisabledCache) SizeInBytesContained

func (cache *DisabledCache) SizeInBytesContained() uint64

SizeInBytesContained returns 0

func (*DisabledCache) UnRegisterHandler

func (cache *DisabledCache) UnRegisterHandler(string)

UnRegisterHandler does nothing

type ForEachTransaction

type ForEachTransaction func(txHash []byte, value *WrappedTransaction)

ForEachTransaction is an iterator callback

type TxCache

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

TxCache represents a cache-like structure (it has a fixed capacity and implements an eviction mechanism) for holding transactions

func NewTxCache

func NewTxCache(config ConfigSourceMe, txGasHandler TxGasHandler) (*TxCache, error)

NewTxCache creates a new transaction cache

func (*TxCache) AddTx

func (cache *TxCache) AddTx(tx *WrappedTransaction) (ok bool, added bool)

AddTx adds a transaction in the cache Eviction happens if maximum capacity is reached

func (*TxCache) Clear

func (cache *TxCache) Clear()

Clear clears the cache

func (*TxCache) Close

func (cache *TxCache) Close() error

Close does nothing for this cacher implementation

func (*TxCache) CountSenders

func (cache *TxCache) CountSenders() uint64

CountSenders gets the number of senders in the cache

func (*TxCache) CountTx

func (cache *TxCache) CountTx() uint64

CountTx gets the number of transactions in the cache

func (*TxCache) Diagnose

func (cache *TxCache) Diagnose(deep bool)

Diagnose checks the state of the cache for inconsistencies and displays a summary

func (*TxCache) ForEachTransaction

func (cache *TxCache) ForEachTransaction(function ForEachTransaction)

ForEachTransaction iterates over the transactions in the cache

func (*TxCache) Get

func (cache *TxCache) Get(key []byte) (value interface{}, ok bool)

Get gets a transaction (unwrapped) by hash Implemented for compatibility reasons (see txPoolsCleaner.go).

func (*TxCache) GetByTxHash

func (cache *TxCache) GetByTxHash(txHash []byte) (*WrappedTransaction, bool)

GetByTxHash gets the transaction by hash

func (*TxCache) GetTransactionsPoolForSender

func (cache *TxCache) GetTransactionsPoolForSender(sender string) []*WrappedTransaction

GetTransactionsPoolForSender returns the list of transaction hashes for the sender

func (*TxCache) Has

func (cache *TxCache) Has(key []byte) bool

Has checks if a transaction exists

func (*TxCache) HasOrAdd

func (cache *TxCache) HasOrAdd(_ []byte, _ interface{}, _ int) (has, added bool)

HasOrAdd is not implemented

func (*TxCache) ImmunizeTxsAgainstEviction

func (cache *TxCache) ImmunizeTxsAgainstEviction(_ [][]byte)

ImmunizeTxsAgainstEviction does nothing for this type of cache

func (*TxCache) IsInterfaceNil

func (cache *TxCache) IsInterfaceNil() bool

IsInterfaceNil returns true if there is no value under the interface

func (*TxCache) Keys

func (cache *TxCache) Keys() [][]byte

Keys returns the tx hashes in the cache

func (*TxCache) Len

func (cache *TxCache) Len() int

Len is an alias for CountTx

func (*TxCache) MaxSize

func (cache *TxCache) MaxSize() int

MaxSize is not implemented

func (*TxCache) NotifyAccountNonce

func (cache *TxCache) NotifyAccountNonce(accountKey []byte, nonce uint64)

NotifyAccountNonce should be called by external components (such as interceptors and transactions processor) in order to inform the cache about initial nonce gap phenomena

func (*TxCache) NumBytes

func (cache *TxCache) NumBytes() int

NumBytes gets the approximate number of bytes stored in the cache

func (*TxCache) Peek

func (cache *TxCache) Peek(key []byte) (value interface{}, ok bool)

Peek gets a transaction (unwrapped) by hash Implemented for compatibility reasons (see transactions.go, common.go).

func (*TxCache) Put

func (cache *TxCache) Put(_ []byte, _ interface{}, _ int) (evicted bool)

Put is not implemented

func (*TxCache) RegisterHandler

func (cache *TxCache) RegisterHandler(func(key []byte, value interface{}), string)

RegisterHandler is not implemented

func (*TxCache) Remove

func (cache *TxCache) Remove(key []byte)

Remove removes tx by hash

func (*TxCache) RemoveTxByHash

func (cache *TxCache) RemoveTxByHash(txHash []byte) bool

RemoveTxByHash removes tx by hash

func (*TxCache) SelectTransactionsWithBandwidth

func (cache *TxCache) SelectTransactionsWithBandwidth(numRequested int, batchSizePerSender int, bandwidthPerSender uint64) []*WrappedTransaction

SelectTransactionsWithBandwidth selects a reasonably fair list of transactions to be included in the next miniblock It returns at most "numRequested" transactions Each sender gets the chance to give at least bandwidthPerSender gas worth of transactions, unless "numRequested" limit is reached before iterating over all senders

func (*TxCache) SizeInBytesContained

func (cache *TxCache) SizeInBytesContained() uint64

SizeInBytesContained returns 0

func (*TxCache) UnRegisterHandler

func (cache *TxCache) UnRegisterHandler(string)

UnRegisterHandler is not implemented

type TxGasHandler

type TxGasHandler interface {
	SplitTxGasInCategories(tx data.TransactionWithFeeHandler) (uint64, uint64)
	GasPriceForProcessing(tx data.TransactionWithFeeHandler) uint64
	GasPriceForMove(tx data.TransactionWithFeeHandler) uint64
	MinGasPrice() uint64
	MinGasLimit() uint64
	MinGasPriceForProcessing() uint64
	IsInterfaceNil() bool
}

TxGasHandler handles a transaction gas and gas cost

type WrappedTransaction

type WrappedTransaction struct {
	Tx                   data.TransactionHandler
	TxHash               []byte
	SenderShardID        uint32
	ReceiverShardID      uint32
	Size                 int64
	TxFeeScoreNormalized uint64
}

WrappedTransaction contains a transaction, its hash and extra information

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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