Documentation ¶
Index ¶
- Variables
- type Feer
- type Pool
- func (mp *Pool) Add(t *transaction.Transaction, fee Feer, data ...interface{}) error
- func (mp *Pool) CheckNonceContinue(tx *transaction.Transaction) bool
- func (mp *Pool) ContainsKey(hash common.Hash) bool
- func (mp *Pool) Count() int
- func (mp *Pool) GetDBNonce(addr common.Address) uint64
- func (mp *Pool) GetVerifiedTransactions() []*transaction.Transaction
- func (mp *Pool) HasConflicts(t *transaction.Transaction, fee Feer) bool
- func (mp *Pool) PendingNonce(addr common.Address) uint64
- func (mp *Pool) RefreshNonce(sender common.Address, dbNonce uint64)
- func (mp *Pool) RemoveStale(isOK func(*transaction.Transaction) bool, feer Feer) map[common.Address]struct{}
- func (mp *Pool) RunSubscriptions()
- func (mp *Pool) SetDBNonce(addr common.Address, dbNonce uint64)
- func (mp *Pool) SetResendThreshold(h uint32, f func(*transaction.Transaction, interface{}))
- func (mp *Pool) StopSubscriptions()
- func (mp *Pool) SubscribeForTransactions(ch chan<- mempoolevent.Event)
- func (mp *Pool) TryGetData(hash common.Hash) (interface{}, bool)
- func (mp *Pool) TryGetValue(hash common.Hash) (*transaction.Transaction, bool)
- func (mp *Pool) UnsubscribeFromTransactions(ch chan<- mempoolevent.Event)
- func (mp *Pool) Verify(tx *transaction.Transaction, feer Feer) bool
Constants ¶
This section is empty.
Variables ¶
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 (*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 ¶
ContainsKey checks if a transactions hash is in the Pool.
func (*Pool) GetDBNonce ¶
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 ¶
get pending nonce of from
func (*Pool) RefreshNonce ¶
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 ¶
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 ¶
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.