Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Send committed spent OutPoints & nullifiers to the mempool for rejection #2631

Closed
Tracked by #2309 ...
mpguerra opened this issue Aug 13, 2021 · 4 comments · Fixed by #5434
Closed
Tracked by #2309 ...

Send committed spent OutPoints & nullifiers to the mempool for rejection #2631

mpguerra opened this issue Aug 13, 2021 · 4 comments · Fixed by #5434
Assignees
Labels
C-bug Category: This is a bug I-usability Zebra is hard to understand or use

Comments

@mpguerra
Copy link
Contributor

mpguerra commented Aug 13, 2021

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:

  1. Transaction 1 spends B and C - it gets in the mempool
  2. Transaction 2 only spends B - it gets mined into the chain, but transaction 1 is not rejected from the mempool
    • this is an optional-priority bug, because we're accepting more transactions than zcashd
  3. Transaction 3 only spends C - 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

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.
@mpguerra mpguerra mentioned this issue Aug 13, 2021
59 tasks
@teor2345 teor2345 changed the title Send mined transaction IDs to the mempool for rejection Send committed spends & nullifiers to the mempool for rejection Aug 19, 2021
@mpguerra mpguerra added this to the 2021 Sprint 18 milestone Aug 23, 2021
@mpguerra
Copy link
Contributor Author

@jvff jvff assigned jvff and unassigned jvff Sep 7, 2021
@teor2345 teor2345 changed the title Send committed spends & nullifiers to the mempool for rejection Send committed spent OutPoints & nullifiers to the mempool for rejection Sep 23, 2021
@mpguerra mpguerra removed this from the 2021 Sprint 20 milestone Oct 4, 2021
@mpguerra
Copy link
Contributor Author

mpguerra commented Nov 3, 2021

Should we close this one? #2694 seems to say that we're not going to follow this design

@teor2345 teor2345 added P-Low C-bug Category: This is a bug I-usability Zebra is hard to understand or use labels Nov 4, 2021
@teor2345
Copy link
Contributor

teor2345 commented Nov 4, 2021

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.

@teor2345
Copy link
Contributor

teor2345 commented Nov 4, 2021

I also think we should reset the estimate on this ticket, because a lot of the changes we need are already implemented.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-bug Category: This is a bug I-usability Zebra is hard to understand or use
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

4 participants