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

minifront should implement a transaction queue, instead of simultaneously building transactions #1618

Open
turbocrime opened this issue Aug 2, 2024 · 0 comments
Labels
auction bug Something isn't working enhancement performance Related to speed improvements ui Related to user interface or ux design

Comments

@turbocrime
Copy link
Contributor

turbocrime commented Aug 2, 2024

Is your feature request related to a problem? Please describe.

nullifiers may only be used once.

in local state, consumption of nullifiers is handled by the block processor, when a transaction appears in a compact block.

but users may plan and build more than one transaction at a time.

when the first transaction using these inputs is broadcast to the chain, the nullifiers it consumes become unavailable to subsequent transactions. any simultaneous plan-witness-build-broadcast has no way to notice that its inputs have become invalid.

Screenshot 2024-08-01 at 17 11 20

so it is likely that a user attempting to rapidly conduct several transactions (as when claiming auctions) will see the first succeed, and then the rest rejected by the fullnode with an unfriendly error about nullifiers.

this failure doesn't destroy anything. the user can immediately re-attempt new transactions of the same effect and observe success.

but it is annoying, and it means that a user must understand this failure, and manually initiate each transaction in sequence as the prior transaction completes, instead of simply performing UI actions.

Describe the solution you'd like
Minifront should not begin building a transaction until any present plan-witness-build-broadcast sequence is resolved. This could be implemented as a global transaction fifo.

Describe alternatives you've considered
Alternatively, ibc could add a 'nullifiers pending use' table that is checked during plan-witness-build-broadcast. This is more complex from a state perspective, but would be a better solution overall. Benefits:

  • services could simultaneously build in parallel without fear of collision, accelerating perceived speed
  • block processor could take advantage of this table to accelerate nullifier searches when scanning incoming blocks
  • third-party consumers of services and block-processor would also gain this feature

Additional context
This is very relevant as long as GDA sub-auctions each require an independent close/withdraw transaction, of which there may be very many.

@turbocrime turbocrime added bug Something isn't working enhancement performance Related to speed improvements auction ui Related to user interface or ux design labels Aug 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
auction bug Something isn't working enhancement performance Related to speed improvements ui Related to user interface or ux design
Projects
Status: 🗄️ Backlog
Development

No branches or pull requests

1 participant