---
# System prepended metadata

title: UPA Soundness Proof Sketch

---


$\newcommand{\adv}{\mathcal A}
\newcommand{\upa}{\mathcal U}
\newcommand{\app}{\mathcal D}
\newcommand{\vk}{\mathsf{vk}}
\newcommand{\inputs}{\mathsf{PI}}
\newcommand{\groth}{\mathsf{Groth16}}
\newcommand{\verify}{\mathsf{Verify}}
\newcommand{\cid}{\mathsf{cid}}
\newcommand{\pid}{\mathsf{pid}}
\newcommand{\cidtag}{\mathsf{tag}^{(cid)}}
\newcommand{\keccak}{\mathsf{Keccak}}
\newcommand{\poseidon}{\mathsf{Poseidon}}
\newcommand{\rel}{\mathcal{R}}
\newcommand{\lang}{\mathcal{L}}
\newcommand{\fd}{\mathsf{fd}}$

(Outline for now)

$\adv$ - Adversary
$\upa$ - UPA system
$\app$ - Application maintainer / developer
$N$ - Batch size (app proofs per aggregated batch)

## Soundness game

1. $\app$ creates a Groth16 circuit, described by the relation $\rel_\lang$ for language $\lang$, and submits the verification key $\vk$ to $\adv$.
2. All parties compute $\cid = \poseidon( \cidtag, \vk)$
3. $\adv$ submits verification keys $( vk_i )_{i=0}^{M}$ to $\upa$, where $\vk_k = \vk$ for some $k \in [M]$.
5. $\adv$ submits a sequence $( \pi_i, \inputs_i, \cid_i )_{i=0}^{mN-1}$ to $\upa$.  We assume w.o.l.o.g. that $\groth.\verify( \pi_i, \inputs_i, \vk_i ) = 1$
6. All parties compute 
  $$\pid_i = \keccak( \cid_i, \inputs_i ) ~~ \text{for} ~~ i=0, \ldots, mN$$

4. $\upa$ returns a sequence $( \Pi_j, \fd_j )_{j=0}^{m-1}$, where $\Pi_j$ is a valid proof of the statement:
   > $\exists ( \pid'_i, \pi'_i, \inputs'_i, \vk'_i )_{i=0}^{N - 1}$ s.t.
   > a) $fd_j = \keccak( (\pid'_i)_{i=0}^{N - 1} )$
   > b) $\pid'_i = \keccak( \cid'_i, \inputs'_i )$ for $i=0, \ldots, N-1$
   > c) $\cid'_i = \poseidon( \cidtag, \vk'_i)$ for $i=0, \ldots, N-1$
   > d) $\groth.\verify( \pi'_i, \inputs'_i, \vk'_i ) = 1$ for $i=0, \ldots, N-1$
   > 
   and satisfies: $\fd_j = \keccak \left[ ( \pid_i )_{i=jN}^{(j+1)N - 1} \right]$
1. $\adv$ returns $\inputs''$
2. $\adv$ wins if:
    1. $\pid'' \in \{ \pid_i \}_{i=0}^{mN-1}$ for $\pid'' = \keccak(\vk, \inputs'')$, AND
    2. $\inputs'' \notin \lang$

## Soundness proof sketch

We need to show that $\adv$ has negligible probability of winning.

Let $i$ be s.t. $\pid'' = \pid_i$, and $j$ s.t. $jN \leq i < (j+1)N$.

Then
$$
\fd_j = \keccak \left[ \pid_{jN}, \ldots, \pid_i, \ldots, \pid_{(j+1)N - 1} \right]
$$
and (by the statement of $\Pi_j$)
$$
\fd_j = \keccak \left[ \pid'_{0}, \ldots, \pid_i, \ldots, \pid'_{N - 1} \right]
$$

e.w.n.p.
$$
\pid'' = \pid'_k = \keccak(\cid'_k , PI'_k )
$$
(for $k = i - jN$ being the appropriate index in the statement for $\Pi_j$).  

Since (by condition 1) $\pid''$ also satisfies
$$\pid'' = \keccak( \cid, \inputs'' )$$
we have that, e.w.n.p,
$$
\cid'_k = \cid
$$
and
$$
\inputs'_k = \inputs''
$$

Since
$$
\cid'_k = \poseidon( \cidtag, \vk'_k ) = \poseidon( \cidtag, \vk ) ~~ \Bigl( = \cid\Bigr)
$$ 
e.w.n.p. we have 
$$\vk'_k = \vk$$

By (d) in the statement of $\Pi_j$, we have that e.w.n.p. $\exists \pi'_k$ s.t.

$$
\groth.\verify( \pi'_k, \inputs'', \vk) = \groth.\verify( \pi'_k, \inputs'_k, \vk'_k) =  1
$$

therefore e.w.n.p. $\inputs'' \in \lang$.