Appendix
Plaintext symbols, formulas, graphs, and graphics
The following definitions are provided in plaintext (LaTeX-compatible) for text-only and tooling use. Rendered math on the main CRPC pages uses KaTeX where helpful; this appendix keeps source forms explicit.
Global symbols
These symbols are used consistently across the document.
- δ (delta) — absolute difference between two nodes’ results; shorthand for a pairwise comparison such as from toward .
- ε (epsilon) — acceptable error threshold: comparisons are valid when satisfies the agreed rule (e.g. for “similar enough,” or when requiring separation).
- Φ (Phi) — result of work by a node using the agreed function f.
Subscripts
In LaTeX source, subscripts use underscores: S_1, S_2, r_{ij}, \Phi_i, \delta_{ij}, and salts \text{S1}_i, \text{S2}_i (round 1 or 2 for the commit–reveal phase, node index i).
In the main docs, the same symbols are written with inline KaTeX (e.g. $S_1$, $\delta_{ij}$, $\text{S1}_i$) so subscripts render reliably in the browser.
Quantitative pairwise comparisons — Example 1 (STS) literals
S_1= “Senior Hezbollah Leader is Killed in Beirut in Israeli Airstrike” (actual)S_2= “Senior Hezbollah Leader Killed by Israeli Airstrike in Lebanon” (0.95)S_3= “Israel Targets Senior Hezbollah Leader in Beirut Airstrike” (0.87)
Formulas (LaTeX source, by section)
Quantitative pairwise comparisons / Example 1 (STS)
\text{CosineSimilarity}(A, B) = \frac{A \cdot B}{\|A\| \|B\|}
\frac{S_1 \cdot S_2}{\|S_1\| \|S_2\|} = 0.95
\frac{S_1 \cdot S_3}{\|S_1\| \|S_3\|} = 0.87Quantitative pairwise comparisons / Example 2 (image similarity)
\text{SSIM}(A, B) = [L(A, B)]^\alpha \cdot [C(A, B)]^\beta \cdot [S(A, B)]^\gammaQuantitative pairwise comparisons / General form in a network
\delta_{ij} = |\Phi_i - \Phi_j|
\delta_{ij} < \epsilon
e_{ij} = \delta_{ij} = |\Phi_i - \Phi_j|
r_{ij} = \begin{cases}
e_{ij}, & \text{if } e_{ij} = e_{ji} \\
\text{undefined}, & \text{if } e_{ij} \neq e_{ji}
\end{cases}Minimal viable protocol / protocol steps
\text{Step 1: Work distribution:}\quad M \xrightarrow{W} N_i \quad \forall i \in \{1, 2, \dots, n\}
\text{Step 2: Independent work:}\quad \Phi_i = f(W) \quad \forall i \in \{1, 2, \dots, n\}
\text{Step 3: Work commitments:}\quad C(\Phi_i) = \text{Hash}(\Phi_i \parallel S1_i) \quad \forall i
\text{Step 4: Publish work commitments:}\quad M \xrightarrow{\langle C(\Phi_i) \rangle} \text{ (broadcast)}
\text{Step 5: Reveal work:}\quad M \xrightarrow{(\Phi_i, S1_i)} \text{ (broadcast)}
\text{Step 6: Pairwise distances:}\quad \delta_{ij} = \text{distance}(\Phi_i, \Phi_j)
\text{Step 7: Comparison commitments:}\quad C(\delta_{ij}) = \text{Hash}(\delta_{ij} \parallel S2_i)
\text{Step 8: Publish comparison commitments:}\quad M \xrightarrow{\langle C(\delta_{ij}) \rangle} \text{ (broadcast)}
\text{Step 9: Reveal comparisons:}\quad M \xrightarrow{(\delta_{ij}, S2_i)} \text{ (broadcast)}
\text{Step 10: Verification:}\quad r_{ij} = e_{ij} = e_{ji},\; r_{ij} < \epsilon \quad \text{(similarity regime)}(Step 10 uses strict inequality when “lower is better”; other regimes, e.g. randomness, invert the inequality. Some summaries use non-strict bounds.)
Complexity and optimization / complete graphs
|E| = \frac{n(n - 1)}{2}Graphics (TikZ source)
Compile with pdflatex and tikz (e.g. wrap each tikzpicture in a minimal article or standalone document locally). Snippets omit \documentclass for brevity.
Pairwise comparisons under decentralized conditions — case 1
\begin{tikzpicture}
\node[circle, draw, fill=blue!20, minimum size=1cm] (N1) at (0,2) {$N_1$};
\node[circle, draw, fill=blue!20, minimum size=1cm] (N2) at (0,0) {$N_2$};
\draw[thick, blue] (N1) -- (N2);
\node[right] at (0.5,2) {$\Phi_1 = 100$};
\node[right] at (0.5,0) {$\Phi_2 = 99$};
\node[right, blue] at (0.5,1.5) {$\delta_{12} = 1$};
\node[left, blue] at (-0.5,0.5) {$\delta_{21} = 1$};
\end{tikzpicture}Case 2: one node faulty but honest
\begin{tikzpicture}
\node[circle, draw, fill=blue!20, minimum size=1cm] (N1) at (0,2) {$N_1$};
\node[circle, draw, fill=red!40, minimum size=1cm] (N2) at (0,0) {$N_2$};
\draw[thick, blue] (N1) -- (N2);
\node[right] at (0.5,2) {$\Phi_1 = 100$};
\node[right, red] at (0.5,0) {$\Phi_2 = 97$};
\node[right, blue] at (0.5,1.5) {$\delta_{12} = 3$};
\node[left, blue] at (-0.5,0.5) {$\delta_{21} = 3$};
\end{tikzpicture}Case 3: one node faulty and dishonest
\begin{tikzpicture}
\node[circle, draw, fill=blue!20, minimum size=1cm] (N1) at (0,2) {$N_1$};
\node[circle, draw, fill=red!40, minimum size=1cm] (N2) at (0,0) {$N_2$};
\draw[thick, blue!60] (N1) -- (N2);
\draw[thin, red!60] (N2) -- (N1);
\node[right] at (0.5,2) {$\Phi_1 = 100$};
\node[right, red] at (0.5,0) {$\Phi_2 = 97$};
\node[right, blue] at (0.5,1.5) {$\delta_{12} = 3$};
\node[left, red] at (-0.5,0.5) {$\delta_{21} = 0$};
\end{tikzpicture}graph
\begin{tikzpicture}
\node[circle, draw, fill=blue!20, minimum size=1cm] (N1) at (0,0) {$N_1$};
\node[circle, draw, fill=blue!20, minimum size=1cm] (N2) at (4,0) {$N_2$};
\draw[thick, blue] (N1) -- (N2);
\node[below, blue] at (2,0) {$r_{12}$};
\node[above] at (2,2) {$K_2\ \text{graph}$};
\end{tikzpicture}graph
\begin{tikzpicture}
\node[circle, draw, fill=blue!20, minimum size=1cm] (N1) at (0,2) {$N_1$};
\node[circle, draw, fill=blue!20, minimum size=1cm] (N2) at (-2,0) {$N_2$};
\node[circle, draw, fill=blue!20, minimum size=1cm] (N3) at (2,0) {$N_3$};
\draw[thick, blue] (N1) -- (N2);
\draw[thick, blue] (N2) -- (N3);
\draw[thick, blue] (N1) -- (N3);
\node[above] at (0,3) {$K_3\ \text{graph}$};
\node[left, blue] at (-1,1) {$r_{12}$};
\node[below, blue] at (0,-0.5) {$r_{23}$};
\node[right, blue] at (1,1) {$r_{31}$};
\end{tikzpicture}graph
\begin{tikzpicture}
\node[circle, draw, fill=blue!20, minimum size=1cm] (N1) at (0,2) {$N_1$};
\node[circle, draw, fill=blue!20, minimum size=1cm] (N2) at (-2,0) {$N_2$};
\node[circle, draw, fill=blue!20, minimum size=1cm] (N3) at (2,0) {$N_3$};
\node[circle, draw, fill=blue!20, minimum size=1cm] (N4) at (0,-2) {$N_4$};
\draw[thick, blue] (N1) -- (N2);
\draw[thick, blue] (N1) -- (N3);
\draw[thick, blue] (N1) -- (N4);
\draw[thick, blue] (N2) -- (N3);
\draw[thick, blue] (N2) -- (N4);
\draw[thick, blue] (N3) -- (N4);
\node[above] at (0,3) {$K_4\ \text{graph}$};
\end{tikzpicture}ring (one highlighted node)
\begin{tikzpicture}
\node[circle, draw, fill=blue!20, minimum size=1cm] (N1) at (0,2) {};
\node[circle, draw, fill=blue!20, minimum size=1cm] (N2) at (-1.73,1) {};
\node[circle, draw, fill=white, minimum size=1cm] (N3) at (-1.73,-1) {};
\node[circle, draw, fill=blue!20, minimum size=1cm] (N4) at (0,-2) {};
\node[circle, draw, fill=blue!20, minimum size=1cm] (N5) at (1.73,-1) {};
\node[circle, draw, fill=blue!20, minimum size=1cm] (N6) at (1.73,1) {};
\draw[thick, blue] (N1) -- (N2);
\draw[thick, blue] (N2) -- (N3);
\draw[thick, blue] (N3) -- (N4);
\draw[thick, blue] (N4) -- (N5);
\draw[thick, blue] (N5) -- (N6);
\draw[thick, blue] (N6) -- (N1);
\node[above] at (0,3) {$C_6\ \text{graph}$};
\end{tikzpicture}PlantUML sequence diagram (two nodes)
@startuml
actor Originator as O
participant M as "Medium"
participant "N_1" as N1
participant "N_2" as N2
== Step 1. Work distribution ==
O -> M: Push work W
M -> N1: Get W
M -> N2: Get W
== Step 2. Independent work execution ==
N1 -> N1: Compute result Φ_1
N2 -> N2: Compute result Φ_2
== Step 3: Work commitments created ==
N1 -> N1: C(Φ_1) = Hash(Φ_1 || S1_1)
N2 -> N2: C(Φ_2) = Hash(Φ_2 || S1_2)
== Step 4: Work commitments published ==
N1 -> M: Push C(Φ_1)
N2 -> M: Push C(Φ_2)
M -> N1: Get C(Φ_2)
M -> N2: Get C(Φ_1)
note over M: Dispute point #1: timeouts
== Step 5: Work revealed ==
N1 -> M: Push Φ_1, S1_1
N2 -> M: Push Φ_2, S1_2
M -> N1: Get Φ_2, S1_2
M -> N2: Get Φ_1, S1_1
N1 -> N1: Verify C(Φ_2) = Hash(Φ_2 || S1_2)
N2 -> N2: Verify C(Φ_1) = Hash(Φ_1 || S1_1)
note over M: Dispute point #2: timeouts, commitment checks
== Step 6: Distance calculations ==
N1 -> N1: δ_{12} = distance(Φ_1, Φ_2)
N2 -> N2: δ_{21} = distance(Φ_2, Φ_1)
== Step 7: Pairwise comparison commitments ==
N1 -> N1: C(δ_{12}) = Hash(δ_{12} || S2_1)
N2 -> N2: C(δ_{21}) = Hash(δ_{21} || S2_2)
== Step 8: Pairwise commitments published ==
N1 -> M: Push C(δ_{12})
N2 -> M: Push C(δ_{21})
note over M: Dispute point #3: timeouts
== Step 9: Pairwise comparisons revealed ==
N1 -> M: Push δ_{12}, S2_1
N2 -> M: Push δ_{21}, S2_2
M -> N1: Get δ_{21}, S2_2
M -> N2: Get δ_{12}, S2_1
N1 -> N1: Verify C(δ_{21}) = Hash(δ_{21} || S2_2)
N2 -> N2: Verify C(δ_{12}) = Hash(δ_{12} || S2_1)
N1 -> N1: Verify δ_{21} = δ_{12}
N2 -> N2: Verify δ_{12} = δ_{21}
note over M: Dispute point #4: timeouts, reciprocity
== Step 10: Verification ==
M -> O: Get δ_{12}
M -> O: Get δ_{21}
O -> O: Verify r_{12} = δ_{12} = δ_{21} and r_{12} < ε
note over M: Dispute point #5: acceptable comparisons
@enduml(Participants use N_1 / N_2 for ASCII-safe PlantUML; in prose use / .)