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

fix: prune and restore mempool transactions with equal nonces for the same sender #2091

Merged
merged 3 commits into from
Sep 26, 2024

Conversation

rafaelcr
Copy link
Collaborator

@rafaelcr rafaelcr commented Sep 25, 2024

This PR alters how transactions for the same sender with the same nonce are pruned from and restored to the mempool.

  • If transaction A with nonce 1 exists in the mempool and a new block comes which confirms transaction B with nonce 1 as well, transaction A is pruned.
  • If there is a future re-org that restores transaction B to the mempool, transaction A gets restored as well so they can both compete in the mempool similar to an RBF situation.

Fixes #2041

Copy link

Vercel deployment URL: https://stacks-blockchain-1sn65m5z4-hirosystems.vercel.app 🚀

Copy link

codecov bot commented Sep 25, 2024

Codecov Report

Attention: Patch coverage is 82.05128% with 7 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/datastore/pg-write-store.ts 82.05% 7 Missing ⚠️

📢 Thoughts on this report? Let us know!

@rafaelcr rafaelcr changed the title fix: prune and restore transactions with equal nonces for the same sender fix: prune and restore mempool transactions with equal nonces for the same sender Sep 26, 2024
Copy link
Member

@zone117x zone117x left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice fix 💯

@rafaelcr rafaelcr merged commit 1ce75de into develop Sep 26, 2024
28 checks passed
@rafaelcr rafaelcr deleted the fix/nonce-mempool branch September 26, 2024 13:19
blockstack-devops pushed a commit that referenced this pull request Oct 7, 2024
## [8.1.0-beta.1](v8.0.3...v8.1.0-beta.1) (2024-10-07)

### Features

* add block etag ([#2103](#2103)) ([66e6800](66e6800))
* add cache handler for principal activity including mempool transactions ([#2100](#2100)) ([2370c21](2370c21))
* add principal cache etag to account endpoints ([#2097](#2097)) ([28e9864](28e9864))
* return estimated balance in account balance endpoints ([#2104](#2104)) ([e217cea](e217cea))

### Bug Fixes

* prune and restore mempool transactions with equal nonces for the same sender ([#2091](#2091)) ([1ce75de](1ce75de))
* use total_count CTE and return it with the parsed results ([#2073](#2073)) ([bb30911](bb30911))
@blockstack-devops
Copy link

🎉 This PR is included in version 8.1.0-beta.1 🎉

The release is available on:

Your semantic-release bot 📦🚀

blockstack-devops pushed a commit that referenced this pull request Oct 16, 2024
## [8.1.0](v8.0.4...v8.1.0) (2024-10-16)

### Features

* add block etag ([#2103](#2103)) ([66e6800](66e6800))
* add cache handler for principal activity including mempool transactions ([#2100](#2100)) ([2370c21](2370c21))
* add principal cache etag to account endpoints ([#2097](#2097)) ([28e9864](28e9864))
* return estimated balance in account balance endpoints ([#2104](#2104)) ([e217cea](e217cea))

### Bug Fixes

* add declaration copy step in build ([#2110](#2110)) ([2b6aa6a](2b6aa6a))
* prune and restore mempool transactions with equal nonces for the same sender ([#2091](#2091)) ([1ce75de](1ce75de))
* randomize key order for testnet stx faucet transactions ([#2120](#2120)) ([f7265f9](f7265f9))
* update mempool garbage collection logic for 3.0 ([#2117](#2117)) ([8b10b69](8b10b69))
* use total_count CTE and return it with the parsed results ([#2073](#2073)) ([bb30911](bb30911))
@blockstack-devops
Copy link

🎉 This PR is included in version 8.1.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

automatically mark mempool transactions with conflicting nonces as failed
3 participants