Documentation ¶
Index ¶
- Variables
- type HashMap
- func (m HashMap) Clone() []transactions.Transaction
- func (m *HashMap) Contains(txID []byte) bool
- func (m *HashMap) ContainsKeyImage(txInputKeyImage []byte) bool
- func (m HashMap) FilterByType(filterType transactions.TxType) []transactions.Transaction
- func (m *HashMap) Get(txID []byte) transactions.Transaction
- func (m *HashMap) Len() int
- func (m *HashMap) Put(t TxDesc) error
- func (m *HashMap) Range(fn func(k txHash, t TxDesc) error) error
- func (m *HashMap) RangeSort(fn func(k txHash, t TxDesc) (bool, error)) error
- func (m *HashMap) Size() uint32
- type Mempool
- type Pool
- type TxDesc
Constants ¶
This section is empty.
Variables ¶
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 { Capacity uint32 // contains filtered or unexported fields }
HashMap represents a pool implementation based on golang map. The generic solution to bench against.
func (*HashMap) ContainsKeyImage ¶
ContainsKeyImage returns true if txpool includes a input that contains this keyImage
func (HashMap) FilterByType ¶ added in v0.3.0
func (m HashMap) FilterByType(filterType transactions.TxType) []transactions.Transaction
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.Transaction
Get returns a tx for a given txID if it exists.
func (*HashMap) Put ¶
Put sets the value for the given key. It overwrites any previous value for that key;
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, verifyTx func(tx transactions.Transaction) error) *Mempool
NewMempool instantiates and initializes node mempool
func (*Mempool) CollectPending ¶ added in v0.3.0
CollectPending process the emitted transactions. Fast-processing and simple impl to avoid locking here. NB This is always run in a different than main mempool routine
func (*Mempool) Run ¶
func (m *Mempool) Run()
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
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.Transaction // Contains returns true if the given key is in the pool. Contains(key []byte) bool // ContainsKeyImage returns true if txpool includes a input that contains // this keyImage ContainsKeyImage(keyImage []byte) bool // Clone the entire pool Clone() []transactions.Transaction // FilterByType returns all verified transactions for a specific type. FilterByType(transactions.TxType) []transactions.Transaction // 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.