zebra
zebra copied to clipboard
Send committed spent OutPoints & nullifiers to the mempool for rejection
Motivation
We need to get a list of recently committed spent outpoints & nullifiers from the state service, so we can evict any mempool transactions that also spend/reveal them.
This fixes some subtle bugs:
- Transaction
1
spendsB
andC
- it gets in the mempool - Transaction
2
only spendsB
- it gets mined into the chain, but transaction1
is not rejected from the mempool- this is an optional-priority bug, because we're accepting more transactions than
zcashd
- this is an optional-priority bug, because we're accepting more transactions than
- Transaction
3
only spendsC
- it is rejected from the mempool, but it should be accepted- this is a low-priority bug, because we're rejecting transactions that
zcashd
would accept
- this is a low-priority bug, because we're rejecting transactions that
Constraints
These rejections should persist until a chain reset, because:
- an outpoint can only be spent once in the chain, and
- a nullifier can only be revealed once in the chain.
Hey team! Please add your planning poker estimate with ZenHub @conradoplg @dconnolly @jvff @oxarbitrage @teor2345 @upbqdn
Should we close this one? #2694 seems to say that we're not going to follow this design
Should we close this one? #2694 seems to say that we're not going to follow this design
That ticket description is outdated - it was based on the initial mempool scope. Zebra currently rejects spend conflicts in the mempool.
So we should implement this ticket eventually, because it fixes some bugs in our mempool implementation.
I also think we should reset the estimate on this ticket, because a lot of the changes we need are already implemented.