Skip to content

Commit ad6e0a8

Browse files
committed
simulation: network-spec: added equivocation handling
1 parent 9ab07f3 commit ad6e0a8

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

simulation/docs/network-spec/miniprotocols.tex

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,6 @@ \subsection{Producer and Consumer Implementation}
255255
It replies with not more than the requested number of ids (possibly with an empty list).
256256
A blocking request on the other hand, waits until at least one datum is available.
257257

258-
259258
It must however observe several constraints that are necessary for a
260259
memory efficient implementation of the provider.
261260

@@ -286,6 +285,16 @@ \subsection{Producer and Consumer Implementation}
286285
intend on requesting any of the available datums.
287286

288287

288+
\paragraph{Equivocation handling} IB-relay, EB-relay, and Vote-relay must guard against the possibility of equivocations, i.e. the reuse of a generation opportunity for multiple different blocks.
289+
The \emph{message identifier} of an header is the pair of its
290+
generating node id and the slot it was generated for\footnote{for IBs/EBs also its subslot, in
291+
case generation frequency is greater than $1/\text{slot}$}. Two headers
292+
with the same message identifier constitute a \emph{proof of
293+
equivocation}, and the first header received with a given message
294+
identifier is the \emph{preferred header}. For headers with the same
295+
message identifier, only the first two should be relayed, furthermore
296+
only the body of the preferred header should be fetched.
297+
289298
\section{\fetch{} mini-protocol}
290299
\label{ptcl:fetch}
291300

@@ -299,12 +308,9 @@ \section{\fetch{} mini-protocol}
299308
\newcommand{\MsgBody}{\msg{MsgBody}}
300309
\newcommand{\MsgBatchDone}{\msg{MsgBatchDone}}
301310
\newcommand{\MsgConsumerDone}{\msg{MsgConsumerDone}}
302-
\newcommand{\point}{\text{point}}
303-
\newcommand{\slot}{\text{slot}}
304-
\newcommand{\body}{\text{body}}
305-
\newcommand{\request}{\text{request}}
306-
\newcommand{\hash}{\text{hash}}
307-
\newcommand{\rbrange}{\text{range}}
311+
\newcommand{\point}{\text{point}} \newcommand{\slot}{\text{slot}}
312+
\newcommand{\body}{\text{body}} \newcommand{\request}{\text{request}}
313+
\newcommand{\hash}{\text{hash}} \newcommand{\rbrange}{\text{range}}
308314
\subsection{Description}
309315

310316
The \fetch{} mini protocol enables a node to download block bodies.

0 commit comments

Comments
 (0)