-
Notifications
You must be signed in to change notification settings - Fork 23
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
InvalidRollForward exception should be unreachable #763
Comments
On commit 73b5ce40 from PR 773 plus some extra debugging/tracing messages, I see the following scenario play out, given this
From the perspective of the c0 ChainSync client communicating with the c2 ChainSync server:
Note that the inclusion of At this point, I'm suspecting that |
There is an issue with low-density chains, potentially. As you say, anything below a 50% density threshold will not give a ledger view, even if it's within k blocks. The solution to this might be to track the lower bound in the ledger state, but this would entail keeping the slot numbers for the last |
As part of the work on IntersectMBO/ouroboros-network#1942, we now maintain an explicit intersection point between the two chains (our own and the candidate one), and moreover verify that this intersection point is indeed the intersection between the two fragments. Since we in addition also know that our fragment is always at most -- | We were unable to get a ledger view for the intersection point
-- between the candidate's chain and our chain.
--
-- This can only happen in the case of very low density chains, where
-- the @k@ blocks on our chain span more than @2k@ slots. Note that
-- producing a block on top of a chain while the distance from the tip
-- of that chain to the current slot (in terms of wallblock) is very
-- large will also result in such a low density chain. This does arise in the current consensus tests for Byron, which (very) occasionally result in such low density chains. Semi-related: #668. So this ticket would only be an improvement to the testing infrastructure. |
While reviewing PR IntersectMBO/ouroboros-network#773 for Issue IntersectMBO/ouroboros-network#231, @nc6 observed and I agreed that a
ForkTooDeep
exception should be raised prior to the mini protocol reaching a state whereInvalidRollForward
could be raised. PR IntersectMBO/ouroboros-network#773 introducesInvalidRollForward
, because otherwise theRealPBFT
tests fail. We're merging with this Issue as a follow-up obligation.The text was updated successfully, but these errors were encountered: