You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
\paragraph{Instances} are listed in Table~\ref{table:relay-instances}.
82
+
\paragraph{Instances} \relay{} protocol instances are listed in Table~\ref{table:relay-instances}.
83
83
Tx-submission is further parameterized by the maximum window size
84
84
allowed. IB-relay, EB-relay, and Vote-relay are each parametrized by
85
85
the maximum age beyond which a datum is no longer
@@ -319,7 +319,7 @@ \subsection{Description}
319
319
\item [\body{}] Block body itself.
320
320
\end{description}
321
321
322
-
\paragraph{Instances} are listed in Table~{table:fetch-instances}. The \body{} descriptions included here are for illustration, in particular to clarify what we mean by \body{} of an Endorse block.
322
+
\paragraph{Instances} \fetch{} instances are listed in Table~{table:fetch-instances}. The \body{} descriptions included here are for illustration, in particular to clarify what we mean by \body{} of an Endorse block.
@@ -438,4 +438,41 @@ \subsection{Timeouts per state}
438
438
439
439
\section{\catchup{} mini-protocol}
440
440
\label{ptcl:catch-up}
441
-
TBD
441
+
442
+
\subsection{Description}
443
+
The \catchup{} mini protocol allows for nodes to obtain IB and EB
444
+
blocks referenced by the chain. These will typically be too old to be
445
+
diffused by the \relay{} and \fetch{} mini protocols, but are still
446
+
relevant to reconstruct the ledger state. Additionally it covers
447
+
certified EBs which are still recent enough for inclusion in a future
448
+
ranking block, and any blocks they reference. This data, together with
449
+
the base chain, is what is needed for a node to participate in future
450
+
pipelines.
451
+
452
+
The protocol should allow the consumer to divide the requests between
453
+
different producers, and for the producer to have an efficient way to
454
+
retrieve the requested blocks.
455
+
456
+
The consumer should be able to retrieve the base chain through the
457
+
other mini protocols, and so the EB references within. However, the
458
+
slots of those EBs are unknown, as well as any indirect references.
459
+
460
+
\paragraph{Requests}
461
+
\begin{description}
462
+
\item[EBs by RB range] given an RB range from its chain, the producer
463
+
should reply with all EBs which are (i) transitively referenced by RBs in that
464
+
range, (ii) not referenced by earlier RBs.
465
+
\item[Recent certified EBs by slot range] given a slot range, the
466
+
producer should reply with all certified EBs which are (i) generated
467
+
in the slot range, (ii) not referenced by RBs\footnote{Restriction
468
+
(ii) is to avoid overlap with an RB range query, but could be dropped to save on complexity if not worth the saved bandwidth}. The start of the
469
+
slot range should be no earlier than the oldest slot an EB could be
470
+
generated in and still referenced in a future RB.
471
+
\item[IBs by EB \point{} and slot range] given a \point{} for a
472
+
certified EB, the producer should reply with all the IBs which are (i)
473
+
generated in the given slot range, (ii) directly referenced by
474
+
the EB. The slot range allows for partitioning request about the
475
+
same EB across different peers.
476
+
\end{description}
477
+
\todo{Another option for IBs could be a list of refs and a slot range. The refs come from EB bodies, and the slot range can be calculated from the slot of the EB.}
478
+
\todo{The protocol itself could be another variation of \fetch{} where requests are one of the above, and replies contain full blocks rather than just bodies.}
0 commit comments