Module zebrad::components::mempool
source · Expand description
Zebra mempool.
A zebrad application component that manages the active collection, reception, gossip, verification, in-memory storage, eviction, and rejection of unmined Zcash transactions (those that have not been confirmed in a mined block on the blockchain).
Major parts of the mempool include:
- Mempool Service
- activates when the syncer is near the chain tip
- spawns download and verify tasks for each crawled or gossiped transaction
- handles in-memory storage of unmined transactions
- Crawler
- runs in the background to periodically poll peers for fresh unmined transactions
- Queue Checker
- runs in the background, polling the mempool to store newly verified transactions
- Transaction Gossip Task
- runs in the background and gossips newly added mempool transactions to peers
Re-exports
pub use crate::BoxError;
pub use config::Config;
pub use gossip::gossip_mempool_transaction_id;
Modules
- User-configurable mempool parameters.
- Transaction downloader and verifier.
- A task that gossips any
zebra_chain::transaction::UnminedTxId
that enters the mempool to peers.
Structs
- The mempool transaction crawler.
- Mempool async management and query service.
- The mempool queue checker.
- Hold mempool verified and rejected mempool transactions.
Enums
- Transactions rejected based on transaction authorizing data (scripts, proofs, signatures), or lock times. These rejections are only valid for the current tip.
- Mempool errors.
- Transactions rejected based only on their effects (spends, outputs, transaction header). These rejections are valid while the current chain continues to grow.
- Transactions rejected based only on their effects (spends, outputs, transaction header). These rejections are only valid for the current tip.