mempool

package
v0.0.0-...-f94ef0f Latest Latest
Warning

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

Go to latest
Published: Aug 16, 2023 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrInsufficientFunds is returned when Sender is not able to pay for
	// transaction being added irrespective of the other contents of the
	// pool.
	ErrInsufficientFunds = errors.New("insufficient funds")
	// ErrConflict is returned when transaction being added is incompatible
	// with the contents of the memory pool (Sender doesn't have enough GAS
	// to pay for all transactions in the pool).
	ErrConflict = errors.New("conflicts: insufficient funds for all pooled tx")
	// ErrDup is returned when transaction being added is already present
	// in the memory pool.
	ErrDup = errors.New("already in the memory pool")
	// ErrOOM is returned when transaction just doesn't fit in the memory
	// pool because of its capacity constraints.
	ErrOOM = errors.New("out of memory")
	// ErrConflictsAttribute is returned when transaction conflicts with other transactions
	// due to its (or theirs) nonce.
	ErrConflictsNonce = errors.New("conflicts with memory pool due to nonce")
)

Functions

This section is empty.

Types

type Feer

type Feer interface {
	FeePerByte() uint64
	GetGasPrice() *big.Int
	GetUtilityTokenBalance(common.Address) *big.Int
	BlockHeight() uint32
}

Feer is an interface that abstract the implementation of the fee calculation.

type Pool

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

Pool stores the unconfirms transactions.

func New

func New(capacity int, payerIndex int, enableSubscriptions bool) *Pool

New returns a new Pool struct.

func (*Pool) Add

func (mp *Pool) Add(t *transaction.Transaction, fee Feer, data ...interface{}) error

Add tries to add given transaction to the Pool.

func (*Pool) CheckNonceContinue

func (mp *Pool) CheckNonceContinue(tx *transaction.Transaction) bool

check the current tx is continue in memory pool

func (*Pool) ContainsKey

func (mp *Pool) ContainsKey(hash common.Hash) bool

ContainsKey checks if a transactions hash is in the Pool.

func (*Pool) Count

func (mp *Pool) Count() int

Count returns the total number of uncofirm transactions.

func (*Pool) GetDBNonce

func (mp *Pool) GetDBNonce(addr common.Address) uint64

set db nonce of from

func (*Pool) GetVerifiedTransactions

func (mp *Pool) GetVerifiedTransactions() []*transaction.Transaction

GetVerifiedTransactions returns a slice of transactions with their fees.

func (*Pool) HasConflicts

func (mp *Pool) HasConflicts(t *transaction.Transaction, fee Feer) bool

func (*Pool) PendingNonce

func (mp *Pool) PendingNonce(addr common.Address) uint64

get pending nonce of from

func (*Pool) RefreshNonce

func (mp *Pool) RefreshNonce(sender common.Address, dbNonce uint64)

refresh Nonce for sender, just use after batch remove items remove transactions not continue

func (*Pool) RemoveStale

func (mp *Pool) RemoveStale(isOK func(*transaction.Transaction) bool, feer Feer) map[common.Address]struct{}

RemoveStale filters verified transactions through the given function keeping only the transactions for which it returns a true result. It's used to quickly drop part of the mempool that is now invalid after the block acceptance.

func (*Pool) RunSubscriptions

func (mp *Pool) RunSubscriptions()

RunSubscriptions runs subscriptions goroutine if mempool subscriptions are enabled. You should manually free the resources by calling StopSubscriptions on mempool shutdown.

func (*Pool) SetDBNonce

func (mp *Pool) SetDBNonce(addr common.Address, dbNonce uint64)

set db nonce of from

func (*Pool) SetResendThreshold

func (mp *Pool) SetResendThreshold(h uint32, f func(*transaction.Transaction, interface{}))

SetResendThreshold sets threshold after which transaction will be considered stale and returned for retransmission by `GetStaleTransactions`.

func (*Pool) StopSubscriptions

func (mp *Pool) StopSubscriptions()

StopSubscriptions stops mempool events loop.

func (*Pool) SubscribeForTransactions

func (mp *Pool) SubscribeForTransactions(ch chan<- mempoolevent.Event)

SubscribeForTransactions adds given channel to new mempool event broadcasting, so when there is a new transactions added to mempool or an existing transaction removed from mempool you'll receive it via this channel.

func (*Pool) TryGetData

func (mp *Pool) TryGetData(hash common.Hash) (interface{}, bool)

TryGetData returns data associated with the specified transaction if it exists in the memory pool.

func (*Pool) TryGetValue

func (mp *Pool) TryGetValue(hash common.Hash) (*transaction.Transaction, bool)

TryGetValue returns a transaction and its fee if it exists in the memory pool.

func (*Pool) UnsubscribeFromTransactions

func (mp *Pool) UnsubscribeFromTransactions(ch chan<- mempoolevent.Event)

UnsubscribeFromTransactions unsubscribes given channel from new mempool notifications, you can close it afterwards. Passing non-subscribed channel is a no-op.

func (*Pool) Verify

func (mp *Pool) Verify(tx *transaction.Transaction, feer Feer) bool

Verify checks if a Sender of tx is able to pay for it (and all the other transactions in the pool). If yes, the transaction tx is a valid transaction and the function returns true. If no, the transaction tx is considered to be invalid the function returns false.

Jump to

Keyboard shortcuts

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