Documentation ¶
Index ¶
- Variables
- type Feer
- type Pool
- func (mp *Pool) Add(t *transaction.Transaction, fee Feer, data ...interface{}) error
- func (mp *Pool) ContainsKey(hash util.Uint256) bool
- func (mp *Pool) Count() int
- func (mp *Pool) GetVerifiedTransactions() []*transaction.Transaction
- func (mp *Pool) HasConflicts(t *transaction.Transaction, fee Feer) bool
- func (mp *Pool) Remove(hash util.Uint256, feer Feer)
- func (mp *Pool) RemoveStale(isOK func(*transaction.Transaction) bool, feer Feer)
- func (mp *Pool) RunSubscriptions()
- 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 util.Uint256) (interface{}, bool)
- func (mp *Pool) TryGetValue(hash util.Uint256) (*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 the Sender is not able to pay for // the transaction being added irrespective of the other contents of the // pool. ErrInsufficientFunds = errors.New("insufficient funds") // ErrConflict is returned when the 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 the transaction being added is already present // in the memory pool. ErrDup = errors.New("already in the memory pool") // ErrOOM is returned when the transaction just doesn't fit in the memory // pool because of its capacity constraints. ErrOOM = errors.New("out of memory") // ErrConflictsAttribute is returned when the transaction conflicts with other transactions // due to its (or theirs) Conflicts attributes. ErrConflictsAttribute = errors.New("conflicts with memory pool due to Conflicts attribute") // ErrOracleResponse is returned when the mempool already contains a transaction // with the same oracle response ID and higher network fee. ErrOracleResponse = errors.New("conflicts with memory pool due to OracleResponse attribute") )
Functions ¶
This section is empty.
Types ¶
type Feer ¶
type Feer interface { FeePerByte() int64 GetUtilityTokenBalance(util.Uint160) *big.Int BlockHeight() uint32 P2PSigExtensionsEnabled() bool }
Feer is an interface that abstracts the implementation of the fee calculation.
type Pool ¶
type Pool struct {
// contains filtered or unexported fields
}
Pool stores the unconfirmed transactions.
func (*Pool) Add ¶
func (mp *Pool) Add(t *transaction.Transaction, fee Feer, data ...interface{}) error
Add tries to add the given transaction to the Pool.
func (*Pool) ContainsKey ¶
ContainsKey checks if the transactions hash is in the Pool.
func (*Pool) GetVerifiedTransactions ¶
func (mp *Pool) GetVerifiedTransactions() []*transaction.Transaction
GetVerifiedTransactions returns a slice of transactions with their fees.
func (*Pool) HasConflicts ¶ added in v0.92.0
func (mp *Pool) HasConflicts(t *transaction.Transaction, fee Feer) bool
HasConflicts returns true if the transaction is already in the pool or in the Conflicts attributes of the pooled transactions or has Conflicts attributes against the pooled transactions.
func (*Pool) Remove ¶
Remove removes an item from the mempool if it exists there (and does nothing if it doesn't).
func (*Pool) RemoveStale ¶
func (mp *Pool) RemoveStale(isOK func(*transaction.Transaction) bool, feer Feer)
RemoveStale filters verified transactions through the given function keeping only the transactions for which it returns true result. It's used to quickly drop a part of the mempool that is now invalid after the block acceptance.
func (*Pool) RunSubscriptions ¶ added in v0.93.0
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) SetResendThreshold ¶ added in v0.78.2
func (mp *Pool) SetResendThreshold(h uint32, f func(*transaction.Transaction, interface{}))
SetResendThreshold sets a threshold after which the transaction will be considered stale and returned for retransmission by `GetStaleTransactions`.
func (*Pool) StopSubscriptions ¶ added in v0.93.0
func (mp *Pool) StopSubscriptions()
StopSubscriptions stops mempool events loop.
func (*Pool) SubscribeForTransactions ¶ added in v0.93.0
func (mp *Pool) SubscribeForTransactions(ch chan<- mempoolevent.Event)
SubscribeForTransactions adds the given channel to the new mempool event broadcasting, so when there is a new transactions added to the mempool or an existing transaction removed from the mempool, you'll receive it via this channel.
func (*Pool) TryGetData ¶ added in v0.92.0
TryGetData returns data associated with the specified transaction if it exists in the memory pool.
func (*Pool) TryGetValue ¶
func (mp *Pool) TryGetValue(hash util.Uint256) (*transaction.Transaction, bool)
TryGetValue returns a transaction and its fee if it exists in the memory pool.
func (*Pool) UnsubscribeFromTransactions ¶ added in v0.93.0
func (mp *Pool) UnsubscribeFromTransactions(ch chan<- mempoolevent.Event)
UnsubscribeFromTransactions unsubscribes the 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 the Sender of the 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.