[release-v2.0] multi: Main module backports.#3392
Merged
davecgh merged 3 commits intodecred:release-v2.0from Jun 19, 2024
Merged
[release-v2.0] multi: Main module backports.#3392davecgh merged 3 commits intodecred:release-v2.0from
davecgh merged 3 commits intodecred:release-v2.0from
Conversation
This adds a cache to house transactions that have recently been advertised to other peers. It makes use of the new container/lru module to handle automatic expiration of entries and maximum entry limiting. The rationale for this change is that it is considered misbehavior to advertise a transaction and then claim it is not found when the corresponding request arrives. Maintaining a separate cache of advertised transactions for a short period of time after they were advertised significantly increases the probability they are available to serve when a request for the advertisement arrives independent of the current status of the unconfirmed transaction mempool.
Now that recently removed mix messages are independently cached for a short period, this reverts the change that only removed spent pair requests from previous block transactions to make it track the current best tip again. For reference, the change was originally made to avoid immediately removing mixpool messages that are still propagating the network when a block was quickly mined which includes transactions created from those very same mix messages. However, as noted when the change was made, while it was a quick way to address the stated scenario, it doesn't deal with large reorgs nicely. The new method is much more robust and works under all scenarios, so it is preferable for the mixpool to track the current tip.
The current logic attempts to maintain at least one mix capable outbound peer to ensure better connectivity among the mix capable peers. It works as intended, however, only having a single mix capable peer means there will be delays if that peer goes offline until a replacement is found. A possible consequence is that any mix clients might potentially get interrupted if that peer goes offline and a replacement isn't found quickly enough. Attempting to maintain a minimum of three mix capable outbound peers will significantly reduce the likelihood of having periods without any mix capable peers. This updates the logic accordingly.
jrick
approved these changes
Jun 19, 2024
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is a backport of the following PRs to the 2.0 release branch: