iotaledger / iri

IOTA Reference Implementation
Other
1.15k stars 370 forks source link

Add transaction solidifier #1805

Closed DyrellC closed 4 years ago

DyrellC commented 4 years ago

Description

This contains the bulk of changes from #1646 and relies on #1804. Transaction solidification should not be contained within the TransactionValidator and depending on the number of transactions required for a walk, using the checkSolidity call within the TransactionValidator, as is done in the MilestoneSolidifier, can take a significant portion of time. In order to mitigate this, the solidification and propagation logic has been placed into its own class running in its own thread independent of the validation logic. Instead of making direct calls to checkConsistency a queue is formed so as to not lock up any other threads, and the solidity of a transaction will first be checked via the view model before it is placed into the queue.

This is a step towards introducing the milestone pipeline refactoring.

Type of change

How Has This Been Tested?

Checklist:

kwek20 commented 4 years ago

@DyrellC added 9 more commits since @GalRogozinski requested review. I will wait for @DyrellC to request review again though a comment