refacto algo crash (todo preuve)
This commit is contained in:
@@ -177,65 +177,72 @@ For each $U \in \mathcal{U}$, we instantiate one DenyList object $DL_U$ whose au
|
||||
|
||||
\SetKwBlock{LocalVars}{Local Variables:}{}
|
||||
\LocalVars{
|
||||
$\texttt{unordered} \gets \emptyset$,
|
||||
$\texttt{ordered} \gets \emptyset$,
|
||||
$\texttt{delivered} \gets \emptyset$\;
|
||||
$\prop[r][j] \gets \bot, \forall r, j \in \pi \times \mathbb{N}$\;
|
||||
$\texttt{done}[r] \gets \emptyset,$
|
||||
$\texttt{validate}[r] \gets \emptyset, \forall r \in \mathbb{N}$\;
|
||||
% $\texttt{winners}[r] \gets \emptyset, \forall r$\;
|
||||
$\mathit{unordered} \gets \emptyset$,
|
||||
$\mathit{ordered} \gets \epsilon$,
|
||||
$\mathit{delivered} \gets \epsilon$\;
|
||||
$\mathit{prop}[r][j] \gets \bot, \forall j, r \in \Pi \times \mathbb{N}$\;
|
||||
$\mathit{done}[r] \gets \emptyset, \forall r \in \mathbb{N}$\;
|
||||
}
|
||||
|
||||
\vspace{1em}
|
||||
\vspace{0.3em}
|
||||
|
||||
\For{$r = 1, 2, \ldots$}{
|
||||
\textbf{wait until} $\texttt{unordered} \setminus \texttt{ordered} \neq \emptyset$\;
|
||||
$S \gets \texttt{unordered} \setminus \texttt{ordered}$\;
|
||||
\textbf{wait until} $\mathit{unordered} \setminus \mathit{ordered} \neq \emptyset$\;
|
||||
$S \gets \mathit{unordered} \setminus \mathit{ordered}$;
|
||||
$\RBcast(i, \texttt{PROP}, S, r)$\;
|
||||
|
||||
\textbf{wait until} $|\texttt{validate}(r)| > n - t$\;
|
||||
$\texttt{validate}[r] \gets \texttt{validate}(r)$\;
|
||||
\textbf{wait until} $|\textsf{validated}(r)| \geq n - t$\;
|
||||
|
||||
\ForEach{$j \in \Pi$}{
|
||||
$\BFTAPPEND(\langle j, r\rangle)$\;
|
||||
}
|
||||
|
||||
\ForEach{$j \in \Pi$}{
|
||||
$\texttt{send}(j, \texttt{DONE}, r)$\;
|
||||
$\textsf{send}(j, \texttt{DONE}, r)$\;
|
||||
}
|
||||
\textbf{wait until} $|\texttt{done}[r]| > n - t$\;
|
||||
\textbf{wait until} $|\mathit{done}[r]| \geq n - t$\;
|
||||
|
||||
$\texttt{winners}[r] \gets \texttt{validate}(r)$\;
|
||||
$\mathit{winners}[r] \gets \textsf{validated}(r)$\;
|
||||
|
||||
\textbf{wait until} $\forall j \in \texttt{winners}[r],\ \prop[r][j] \neq \bot$\;
|
||||
$M \gets \bigcup_{j \in \texttt{winners}[r]} \prop[r][j]$\;\nllabel{code:Mcompute}
|
||||
$\texttt{ordered} \gets \texttt{ordered} \cup \ordered(M)$\;
|
||||
\textbf{wait until} $\forall j \in \mathit{winners}[r],\ \mathit{prop}[r][j] \neq \bot$\;
|
||||
$M \gets \bigcup_{j \in \mathit{winners}[r]} \mathit{prop}[r][j]$\;\nllabel{code:Mcompute}
|
||||
$\mathit{ordered} \gets \mathit{ordered} \cdot \ordered(M)$\;
|
||||
}
|
||||
|
||||
\Fn{\texttt{validate}($r$)}{
|
||||
\Return{$\{j: |\{k: (k, \PROVEtrace(r)) \in \BFTREAD()\}| \geq t+1\}$}\;
|
||||
\vspace{0.3em}
|
||||
|
||||
\Fn{\textsf{validated}($r$)}{
|
||||
\Return{$\{j: |\{k: (k, r) \in \BFTREAD()\}| \geq t+1\}$}\;
|
||||
}
|
||||
|
||||
\Upon{$\textbf{ABCAST}(m)$}{
|
||||
$\texttt{unordered} \gets \texttt{unordered} \cup \{m\}$\;
|
||||
\vspace{0.3em}
|
||||
|
||||
\Upon{$\ABbroadcast(m)$}{
|
||||
$\mathit{unordered} \gets \mathit{unordered} \cup \{m\}$\;
|
||||
}
|
||||
|
||||
\Upon{$\texttt{rdeliver}(\texttt{PROP}, S, \langle j, r \rangle)$ from process $p_j$}{
|
||||
$\texttt{unordered} \gets \texttt{unordered} \cup S$\;
|
||||
$\prop[r][j] \gets S$\;
|
||||
$\BFTPROVE(r)$\;
|
||||
\vspace{0.3em}
|
||||
|
||||
\Upon{$\textsf{rdeliver}(\texttt{PROP}, S, \langle j, r \rangle)$ from process $p_j$}{
|
||||
$\mathit{unordered} \gets \mathit{unordered} \cup S$;
|
||||
$\mathit{prop}[r][j] \gets S$\;
|
||||
$\BFTPROVE(\langle j, r\rangle)$\;
|
||||
}
|
||||
|
||||
\Upon{$\texttt{receive}(\texttt{DONE}, r)$ from process $p_j$}{
|
||||
$\texttt{done}[r] \gets \texttt{done}[r] \cup \{j\}$\;
|
||||
\vspace{0.3em}
|
||||
|
||||
\Upon{$\textsf{receive}(\texttt{DONE}, r)$ from process $p_j$}{
|
||||
$\mathit{done}[r] \gets \mathit{done}[r] \cup \{j\}$\;
|
||||
}
|
||||
|
||||
\Upon{$\textbf{ADELIVER}()$}{
|
||||
\If{$\texttt{ordered} \setminus \texttt{delivered} = \emptyset$}{
|
||||
\vspace{0.3em}
|
||||
|
||||
\Upon{$\ABdeliver()$}{
|
||||
\If{$\mathit{ordered} \setminus \mathit{delivered} = \emptyset$}{
|
||||
\Return{$\bot$}
|
||||
}
|
||||
$m \gets \ordered(\texttt{ordered} \setminus \texttt{delivered})[0]$\;
|
||||
$\texttt{delivered} \gets \texttt{delivered} \cup \{m\}$\;
|
||||
let $m$ be the first message in $\mathit{ordered} \setminus \mathit{delivered}$\;
|
||||
$\mathit{delivered} \gets \mathit{delivered} \cdot \{m\}$\;
|
||||
\Return{$m$}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user