Skip to Content
ResearchCRPCAppendix

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 δij\delta_{ij} from NiN_i toward NjN_j.
  • ε (epsilon) — acceptable error threshold: comparisons are valid when δ\delta satisfies the agreed rule (e.g. δ<ϵ\delta < \epsilon for “similar enough,” or δϵ\delta \geq \epsilon when requiring separation).
  • Φ (Phi) — result of work by a node NN 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.87

Quantitative pairwise comparisons / Example 2 (image similarity)

\text{SSIM}(A, B) = [L(A, B)]^\alpha \cdot [C(A, B)]^\beta \cdot [S(A, B)]^\gamma

Quantitative 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}

K2K_2 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}

K3K_3 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}

K4K_4 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}

C6C_6 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 N1N_1 / N2N_2.)

Last updated on