34 lines
2.4 KiB
TeX
34 lines
2.4 KiB
TeX
\subsection{Reliable Broadcast (RB)}
|
|
|
|
\RB provides the following properties in the model.
|
|
\begin{itemize}[leftmargin=*]
|
|
\item \textbf{Integrity}: Every message received was previously sent. $\forall p_i:\ m = \RBreceived_i() \Rightarrow \exists p_j:\ \RBcast_j(m)$.
|
|
\item \textbf{No-duplicates}: No message is received more than once at any process.
|
|
\item \textbf{Validity}: If a correct process broadcasts $m$, every correct process eventually receives $m$.
|
|
\end{itemize}
|
|
|
|
\subsection{DenyList Object}
|
|
|
|
We assume a linearizable DenyList (\DL) object as in~\cite{frey:disc23} with the following properties.
|
|
|
|
The DenyList object type supports three operations: $\APPEND$, $\PROVE$, and $\READ$. These operations appear as if executed in a sequence $\Seq$ such that:
|
|
\begin{itemize}
|
|
\item \textbf{Termination.} A $\PROVE$, an $\APPEND$, or a $\READ$ operation invoked by a correct process always returns.
|
|
\item \textbf{APPEND Validity.} The invocation of $\APPEND(x)$ by a process $p$ is valid if:
|
|
\begin{itemize}
|
|
\item $p \in \Pi_M \subseteq \Pi$; \textbf{and}
|
|
\item $x \in S$, where $S$ denote the universe of valid entries to be appended to the DenyList.
|
|
\end{itemize}
|
|
Otherwise, the operation is invalid.
|
|
\item \textbf{PROVE Validity.} Let $op$ the invocation of $\PROVE(x)$ by a process $p_i$. We said $op$ to be invalid, if and only if:
|
|
\begin{itemize}
|
|
\item $p \not\in \Pi_V \subseteq \Pi$; \textbf{or}
|
|
\item A valid $\APPEND(x)$ appears before $op$ in $\Seq$.
|
|
\end{itemize}
|
|
Otherwise, the operation is said to be valid.
|
|
\item \textbf{PROVE Anti-Flickering.} If the invocation of a operation $op = \PROVE(x)$ by a correct process $p \in \Pi_V$ is invalid, then any $\PROVE(x)$ operation that appears after $op$ in $\Seq$ is invalid.
|
|
\item \textbf{READ Validity.} The invocation of $op = \READ()$ by a process $p \in \pi_V$ returns the list of valid invocations of $\PROVE$ that appears before $op$ in $\Seq$ along with the names of the processes that invoked each operation.
|
|
% \item \textbf{Anonymity.} Let us assume the process $p$ invokes a $\PROVE(v)$ operation. If the process $p'$ invokes a $\READ()$ operation, then $p'$ cannot learn the value $v$ unless $p$ leaks additional information.
|
|
\end{itemize}
|
|
|
|
We assume that $\Pi_M = \Pi_V = \Pi$ (all processes can invoke $\APPEND$ and $\PROVE$). |