-
Notifications
You must be signed in to change notification settings - Fork 370
Epic: Update Milestone Solidification #1674
Comments
Relates to #1448 |
How do you handle out of order milestones?
This can be resolved by implementing the STING protocol that the Hornet people use. Since we need to make the nodes compatible, it should be the solution... |
Updated diagram describing transaction flow In this new flow the |
Another thing to consider doing is to have milestone transactions fail to solidify in the event that a milestone object is not created for the transaction. This will allow the milestone transaction to be re-processed if re-received over time during a sync. |
Description
The current milestone solidification logic relies on a 3 step process that is rather disjointed. Milestones are found in the
LatestMilestoneTracker
(LMT) through an address search and then processed through milestone/bundle validity checks before being placed into theMilestoneSolidifier
(MS) where it will then go through a separate process of transaction requesting and solidity checking to fetch missing reference transactions for milestone candidates. When a milestone is solidified through this process a milestone object is created in the DB. Lastly theLatestSolidMilestoneTracker
(LSMT) searches sequentially for the next milestone object by index and updates the nodes solidity index by index. This strikes me as an unnecessarily disconnected process. With the newTransactionProcessingPipeline
(TPP) following the last network rewrite, we can utilise the processing stages to more directly handle milestones and milestone reference requests to streamline milestone solidification and process them in a more connected order that carries the hash references straight through to the LSMT checks. Currently the LMS checks rely on transaction addresses and hash references to pass to the MS, whereas the LSMT is reliant on the milestone index, which is only created when the MS successfully solidifies the transaction. The MS does not rely on index while solidifying and may produce the occasional falseINVALID
orINCOMPLETE
which then stops a specific Milestone from solidifying correctly.Motivation
To process milestone objects more efficiently and improve solidification and request logic.
Requirements
Open Questions (optional)
Am I planning to do it myself with a PR?
Yes
The text was updated successfully, but these errors were encountered: