Split verification failures by match type and rejection expiry #2834
Labels
A-consensus
Area: Consensus rule updates
A-rust
Area: Updates to Rust code
C-enhancement
Category: This is an improvement
Motivation
When the mempool fails to verify transactions, it caches those verification failures.
Match Type
If the failure is due to the transaction's effects (for example, a double-spend), any transaction with the same TXID (
Hash
) is also invalid.If the failure is due to the authorizing data (for example, a bad signature), only that exact WTXID (
UnminedTxId
) is invalid.In #2819, we did an initial split of the non-
transaction::Verifier
errors.Rejection Expiry
Some failures persist until a rollback (for example,
Expired
).Others should only be cached until the next block is committed (for example,
SpendConflict
).We could split
transaction::Verifier
errors into these categories.In #2694, we did an initial split of the non-
transaction::Verifier
errors.Priority
This ticket is not required for a minimal mempool implementation.
zcashd
implements a similar solution, but some of their engineers say they could do better:Specifications
These mempool consensus rules are currently unspecified.
The text was updated successfully, but these errors were encountered: