mempool

package
v0.4.2 Latest Latest
Warning

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

Go to latest
Published: Mar 25, 2021 License: MIT Imports: 24 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrCoinbaseTxNotAllowed coinbase tx must be built by block generator only.
	ErrCoinbaseTxNotAllowed = errors.New("coinbase tx not allowed")
	// ErrAlreadyExists transaction with same txid already exists in.
	ErrAlreadyExists = errors.New("already exists")
	// ErrDoubleSpending transaction uses outputs spent in other mempool txs.
	ErrDoubleSpending = errors.New("double-spending in mempool")
)

Functions

This section is empty.

Types

type HashMap

type HashMap struct {

	// spent key images from the transactions in the pool
	// spentkeyImages map[keyImage]bool.
	Capacity uint32
	// contains filtered or unexported fields
}

HashMap represents a pool implementation based on golang map. The generic solution to bench against.

func (HashMap) Clone

func (m HashMap) Clone() []transactions.ContractCall

Clone the entire pool.

func (*HashMap) Contains

func (m *HashMap) Contains(txID []byte) bool

Contains returns true if the given key is in the pool.

func (HashMap) FilterByType added in v0.3.0

func (m HashMap) FilterByType(filterType transactions.TxType) []transactions.ContractCall

FilterByType returns all transactions for a specific type that are currently in the HashMap.

func (*HashMap) Get added in v0.3.0

func (m *HashMap) Get(txID []byte) transactions.ContractCall

Get returns a tx for a given txID if it exists.

func (*HashMap) Len

func (m *HashMap) Len() int

Len returns the number of tx entries.

func (*HashMap) Put

func (m *HashMap) Put(t TxDesc) error

Put sets the value for the given key. It overwrites any previous value for that key.

func (*HashMap) Range

func (m *HashMap) Range(fn func(k txHash, t TxDesc) error) error

Range iterates through all tx entries.

func (*HashMap) RangeSort added in v0.2.0

func (m *HashMap) RangeSort(fn func(k txHash, t TxDesc) (bool, error)) error

RangeSort iterates through all tx entries sorted by Fee in a descending order.

func (*HashMap) Size

func (m *HashMap) Size() uint32

Size of the txs.

type Mempool

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

Mempool is a storage for the chain transactions that are valid according to the current chain state and can be included in the next block.

func NewMempool

func NewMempool(eventBus *eventbus.EventBus, rpcBus *rpcbus.RPCBus, verifier transactions.UnconfirmedTxProber, srv *grpc.Server) *Mempool

NewMempool instantiates and initializes node mempool.

func (Mempool) GetUnconfirmedBalance added in v0.4.0

func (m Mempool) GetUnconfirmedBalance(ctx context.Context, req *node.GetUnconfirmedBalanceRequest) (*node.BalanceResponse, error)

GetUnconfirmedBalance will return the amount of DUSK that is in the mempool for a given key.

func (*Mempool) ProcessTx added in v0.4.0

func (m *Mempool) ProcessTx(srcPeerID string, msg message.Message) ([]bytes.Buffer, error)

ProcessTx handles a submitted tx from any source (rpcBus or eventBus).

func (*Mempool) Run

func (m *Mempool) Run(ctx context.Context)

Run spawns the mempool lifecycle routine. The whole mempool cycle is around getting input from the outside world (from input channels) and provide the actual list of the verified txs (onto output channel).

All operations are always executed in a single go-routine so no protection-by-mutex needed.

func (Mempool) SelectTx added in v0.4.0

func (m Mempool) SelectTx(ctx context.Context, req *node.SelectRequest) (*node.SelectResponse, error)

SelectTx will return a view of the mempool, with optional filters applied.

type Pool

type Pool interface {
	// Put sets the value for the given key. It overwrites any previous value
	// for that key.
	Put(t TxDesc) error
	// Get retrieves a transaction for a given txID, if it exists.
	Get(txID []byte) transactions.ContractCall
	// Contains returns true if the given key is in the pool.
	Contains(key []byte) bool
	// Clone the entire pool.
	Clone() []transactions.ContractCall

	// FilterByType returns all verified transactions for a specific type.
	FilterByType(transactions.TxType) []transactions.ContractCall

	// Size is total number of bytes of all txs marshaling size.
	Size() uint32
	// Len returns the number of tx entries.
	Len() int

	// Range iterates through all tx entries.
	Range(fn func(k txHash, t TxDesc) error) error

	// RangeSort iterates through all tx entries sorted by Fee
	// in a descending order.
	RangeSort(fn func(k txHash, t TxDesc) (bool, error)) error
}

Pool represents a transaction pool of the verified txs only.

type TxDesc

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

TxDesc encapsulates both tx raw and meta data.

Jump to

Keyboard shortcuts

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