@@ -94,7 +94,7 @@ data CsjClientState p = CsjClientState {
94
94
-- | the greatest point the peer has accepted as part of a jump
95
95
--
96
96
-- If 'latestJump' is 'Origin', then this is the immutable tip as of when
97
- -- the peer connected (and so is the Dynamo's, which means the Dynamo'S
97
+ -- the peer connected (and so is the Dynamo's, which means the Dynamo's
98
98
-- 'comm' cannot be any younger than this peer's 'comm').
99
99
comm :: ! (WithOrigin p )
100
100
}
@@ -183,8 +183,8 @@ trimCandidate y =
183
183
184
184
-- | A 'MsgFindIntersect' for 'comm'
185
185
--
186
- -- minor optimization opportunity: if the Jumpers latest response was
187
- -- @MsgIntersectionFound@ then this could be 'NoReset' .
186
+ -- Minor optimization opportunity: if the Jumper's latest response was
187
+ -- @MsgIntersectionFound@ then this could be skipped .
188
188
promotionMessage :: CsjClientState p -> CsjReaction p
189
189
promotionMessage = MsgFindIntersect . comm
190
190
@@ -269,12 +269,12 @@ nextMsgFindIntersect2 bi =
269
269
-- Dynamo, and so by offering the whole jump in the first message,
270
270
-- load on honest Jumpers is minimized: one message per jump.
271
271
Just {} -> neMid nyd
272
- -- TODO At least for the reference Haskell Cardano node, each
273
- -- additional point in the 'MsgFindIntersect' message is most
274
- -- negligible unless they're in different ImmDB chunk files. So
275
- -- this logic here could include more points (perhaps once all of
276
- -- @nyd@ is in the same chunk file) in order to ensure the
277
- -- bisection requires fewer round trips while only increasing the
272
+ -- TODO At least for the reference Haskell Cardano node, the cost
273
+ -- of each additional point in the 'MsgFindIntersect' message is
274
+ -- mostly negligible unless they're in different ImmDB chunk files.
275
+ -- So this logic here could include more points (perhaps once all
276
+ -- of @nyd@ is in the same chunk file) in order to ensure the
277
+ -- bisection requires fewer round trips while increasing the
278
278
-- upstream per-message cost only negligibly.
279
279
where
280
280
nyd = notYetDetermined bi
@@ -971,7 +971,7 @@ csjReactions env x pid = fmap (issueNextJump env . backfill) . \case
971
971
--
972
972
-- Beyond those invariants, it doesn't matter which Jumper or Objector
973
973
-- backfills as the Dynamo nor which Jumper backfills as the Objector for the
974
- -- oldest 'comm ', as long as ties are broken in a way that ensures a peer that
974
+ -- oldest 'Class ', as long as ties are broken in a way that ensures a peer that
975
975
-- satisifes the Honest Availability Assumption will eventually become Dynamo.
976
976
-- The 'queue' mechanism achieves that without overreacting to 'Starvation'
977
977
-- events (which are inevitable due to the imperfection of the public Internet
@@ -983,10 +983,10 @@ csjReactions env x pid = fmap (issueNextJump env . backfill) . \case
983
983
-- is if the Dynamo starves ChainSel. It is excusable to demote that Dynamo
984
984
-- since it will only happen at most once to each honest peer until a peer that
985
985
-- satisfies the Honest Availability Assumption becomes the Dynamo, which will
986
- -- remain the Dynamo until the end of the sync.
986
+ -- remain the Dynamo until the end of the sync (or the next networking hiccup) .
987
987
--
988
- -- The prohibition on demoting Objectors prevents the CSJ design from doing
989
- -- both of the following.
988
+ -- The prohibition on demoting Objectors is incompatible with a specification
989
+ -- that does both of the following simultaneously .
990
990
--
991
991
-- - Promoting a Jumper to Objector before all Jumpers have finished bisecting.
992
992
--
0 commit comments