goshimmer
goshimmer copied to clipboard
Rewrite ConflictDAG
Description of change
This PR merges several different components into a singular streamlined framework for creating, tracking and managing conflicts (and votes on these conflicts).
In the current code base, we have a lot of different components that interact with Conflicts, and synchronizing these components in the context of multi-threading has proven to be a bit hard to achieve, simply because these components do not share access to a common mutex.
This PR aims to change this by merging all components that currently handle Conflicts into a singular streamlined API. This will not only allow us to de-duplicate a lot of code but we can also use the same caches and data structures for all involved parts.
Type of change
- Enhancement (a non-breaking change which adds functionality)
Change checklist
- [x] My code follows the contribution guidelines for this project
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [x] I have made corresponding changes to the documentation
- [x] I have added tests that prove my fix is effective or that my feature works
- [x] New and existing unit tests pass locally with my changes