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
The \fetch{} mini protocol enables a node to download block bodies identified by a pair of slot and block id (i.e. hash). It is intended for on-the-fly block diffusion, complementing the \relay{} mini protocol.
311
-
312
-
It is a minor variation of the Block Fetch mini protocol used for
313
-
Praos blocks: IBs and EBs do not have a notion of range, so they are
310
+
The \fetch{} mini protocol enables a node to download block bodies.
311
+
It is a generalization of the BlockFetch mini protocol used for
312
+
base blocks: IBs and EBs do not have a notion of range, so they are
314
313
requested by individual identifiers.
314
+
\todo{Generalizing from BlockFetch means we deliver bodies in a streaming fashion, is that appropriate for IBs and EBs?}
315
315
316
316
\paragraph{Parameters} A \fetch{} instance is specified by these parameters
317
317
\begin{description}
318
-
\item [\id{}] Identifier for a body to fetch.
318
+
\item [\request{}] request format for a sequence of blocks.
319
319
\item [\body{}] Block body itself.
320
320
\end{description}
321
321
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.
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. A \point{} is a pair of \slot{} and \hash{}, the \slot{} allows for better indexing. A \rbrange{} is a pair of two of $\point{} \mid\text{origin}$.
323
+
The IB-fetch and EB-fetch instances are intended for on-the-fly block diffusion, complementing the corresponding \relay{} mini protocols.
The consumer requests a sequence of bodies from the producer.
370
-
\todo{If we keep the streaming setup, we could abstract from $[\point{}]$ to a \emph{sequence} parameter, allowing the original Block Fetch as an instance.}
371
371
\item [\MsgNoBlocks]
372
372
The producer tells the consumer that it does not have all of the blocks in the requested sequence.
373
373
\item [\MsgStartBatch]
374
374
The producer starts body streaming.
375
-
\todo{Does a streaming setup still makes sense, or should we drop it in favor of pipelining?}
\item[EBs by RB range] given an RB range from its chain, the producer
461
+
\item[EBs by RB \rbrange{}] given an RB \rbrange{} from its chain, the producer
463
462
should reply with all EBs which are (i) transitively referenced by RBs in that
464
463
range, (ii) not referenced by earlier RBs.
465
-
\item[Recent certified EBs by slot range] given a slot range, the
464
+
\item[Recent certified EBs by \slot{} range] given a slot range, the
466
465
producer should reply with all certified EBs which are (i) generated
467
466
in the slot range, (ii) not referenced by RBs\footnote{Restriction
468
467
(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
468
slot range should be no earlier than the oldest slot an EB could be
470
469
generated in and still referenced in a future RB.
471
-
\item[IBs by EB \point{} and slot range] given a \point{} for a
470
+
\item[IBs by EB \point{}, and \slot{} range] given a \point{} for a
472
471
certified EB, the producer should reply with all the IBs which are (i)
473
472
generated in the given slot range, (ii) directly referenced by
474
473
the EB. The slot range allows for partitioning request about the
475
474
same EB across different peers.
476
475
\end{description}
477
476
\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.}
477
+
478
+
\paragraph{Definition} The \catchup{} protocol is defined as a new instance of the \fetch{} protocol. We give the parameters as a grammar
0 commit comments