--- title: PVSS succinct proofs description: How to aggregate PVSS proofs nicely theme: gaia size: 16:9 _class: lead class: invert paginate: true backgroundColor: #000000 marp: true math: katex header: IOTA Foundation --- ![bg invert:100% left:40% 80%](https://cryptologos.cc/logos/iota-miota-logo.svg?v=014) # PVSS succinct proofs # 2022-02-03 --- ## PVSS proof ## $$\texttt{PVSS}\{(F_k,E_j,X_j; s_j): \\ P_j\; \text{can decrypt}\; E_j\; \text{to recover}\; s_j \wedge \\ s_j\; \text{is a correct share wrt.}\; F_k\} \\ \text{for}\; k=0..t-1, j=1..n$$ - $X_j = x_j G$ -- $P_j$'s public key, $G$ -- standard base point - $s = \sum_{i \in I} s^i_0$ -- common key - Do not prove knowledge of $f_k: F_k = f_k G$, forget $s_j=f(j)$ - Use ElGamal or twisted ElGamal to encrypt shares - Proof protocol depends on encryption method <!-- Can't work with f_k, we need to split each s_j into chunks. --> --- ## ElGamal commitment ## $$(s_j,r) \mapsto (s_j G + r X_j, r G) = (C_j, R) = E_j$$ - randomization $r$ can be reused for different receivers $P_j$ - can't use other base points in $s_j G$ and $r G$ --- ## Twisted ElGamal commitment ## $$(s_j,r_j) \mapsto (s_j G + r_j H, r_j X_j) = (C_j, R_j) = E_j$$ - randomization $r_j$ can't be reused for different receivers - base points $G$ and $H$ must be independent, otherwise no *binding* - $s_j G$ must use $G$, otherwise common public key is not standard - hence $X_j = x_j H$ must use non-standard base point $H$, otherwise $P_j$ can't recover $r_j H \neq r_j G = x_j^{-1} r_j X_j$ :x: --- ## Issue with ElGamal commitments ## $$E_j = \texttt{Commit}_{\textcolor{red}{X_j}}(s_j,r_j)$$ - Commitment scheme depends on $X_j$ as parameter - Can't easily aggregate (which $X_j$ to use in aggregated proof?) :x: $T_i = \texttt{Commit}_{\textcolor{red}{X_j}}(t_i,\tau_i)$ --- ## Notation ## - $\vec{c}^n = (c^i)_{i=0}^{n-1} \in \mathbb{Z}_q^n$ - $x \cdot \vec{a} = (x a_i)_{i=0}^{n-1}$ - $\langle \vec{a}, \vec{b} \rangle = \sum_{i=0}^{n-1} a_i b_i$ - $\vec{a} \circ \vec{b} = (a_i b_i)_{i=0}^{n-1}$ - $\vec{x} \times \vec{b} = \|_{i=0}^{n-1} (x_i \cdot \vec{b})$ - $v_j = \sum_{l=0}^{m-1} 2^{bl} v_{j,l}$, $v = \|_j (v_{j,l})_l$ - $\texttt{VCommit}(a,b,c) = \langle a, \vec{G} \rangle + \langle b, \vec{H} \rangle + c K$ --- ## Initial Range proof system ## Input: $v_{j,l} \in \{0,\ldots,2^b-1\}$, $\textcolor{red}{V} = \textcolor{red}{\texttt{Commit}}(v_{j,l})$ <!-- 1. Commit is black-box. --> <!-- 2. V covers secret shares and secret polynomial. --> <!-- 3. "v is small" is equivalent to "there's unique aL, aR satisfying the system of equations". --> <!-- 4. Hence commit to aL, aR with VCommit -- Pedersen vector commitment. --> Choose nonces $\textcolor{lightgreen}{a_L}$, $\textcolor{lightgreen}{a_R}$: $\textcolor{violet}{A} = \texttt{VCommit}(\textcolor{lightgreen}{a_L}, \textcolor{lightgreen}{a_R}, \textcolor{lightgreen}{\alpha})$. Let $a_L = \|_{j=0}^{n-1} (\|_{l=0}^{m-1} a_{L,j,l})$ $$\langle \textcolor{lightgreen}{a_{L,j,l}}, \vec{2}^b \rangle = v_{j,l}, \forall j, \forall l \wedge \\\textcolor{lightgreen}{a_L} = \textcolor{lightgreen}{a_R} + \vec{1}^{bnm} \wedge \\\textcolor{lightgreen}{a_L} \circ \textcolor{lightgreen}{a_R} = \vec{0}^{bnm}$$ - $nm+2bnm$ scalar equations --- ## Shorter Range proof system ## Receive challenge $\textcolor{lightgreen}{y}$: <!-- 1. Standard approach -- aggregate equations into one via polynomial in y. --> <!-- 2. Random y is unlikely to be root of a polynomial. --> $$\langle a_{L,j,l}, \vec{2}^b \rangle = v_{j,l}, \forall j, \forall l \wedge \\\langle a_L - a_R - \vec{1}^{bnm}, \vec{\textcolor{lightgreen}{y}}^{bnm} \rangle = 0 \wedge \\\langle a_L, \vec{\textcolor{lightgreen}{y}}^{bnm} \circ a_R \rangle = 0$$ - $nm+2$ scalar equations --- ## Single Range proof equation ## Receive challenge $\textcolor{lightgreen}{z}$: <!-- Same, but with z as variable. --> $$\textcolor{lightgreen}{z}^2 \sum_{j=1}^n \sum_{l=0}^{m-1} \textcolor{lightgreen}{z}^{(j-1)m+l} \langle a_{L,j,l}, \vec{2}^b \rangle + \\+ \textcolor{lightgreen}{z} \langle a_L - a_R - \vec{1}^{bnm}, \vec{y}^{bnm} \rangle + \\+ \langle a_L, \vec{y}^{bnm} \circ a_R \rangle = \\= \textcolor{lightgreen}{z}^2 \sum_{j=1}^n \sum_{l=0}^{m-1} \textcolor{lightgreen}{z}^{(j-1)m+l} v_{j,l}$$ - $1$ scalar equation --- ## Inner-product form ## Same, but in inner-product form: $$z^2 \langle \textcolor{red}{a_L}, \vec{z}^{nm} \times \vec{2}^b \rangle + z \langle \textcolor{red}{a_L}, \vec{y}^{bnm}\rangle + \langle \textcolor{red}{a_L}, \vec{y}^{bnm} \circ \textcolor{red}{a_R} \rangle - \\- z \langle \vec{y}^{bnm}, \textcolor{red}{a_R} \rangle = z^2 \langle z^{nm}, \textcolor{red}{v} \rangle + z \langle \vec{y}^{bnm}, \vec{1}^{bnm} \rangle$$ Same, but folded with only 1 inner product: <!-- The goal is to get inner product of aL and aR. --> $$\langle \textcolor{red}{a_L} - z \cdot \vec{1}^{bnm}, z^2 \cdot z^{nm} \times \vec{2}^b + \vec{y}^{bnm} \circ (\textcolor{red}{a_R} + z \cdot \vec{1}^{bnm}) \rangle = \\= z^2 \langle z^{nm}, \textcolor{red}{v} \rangle + (z-z^2) \langle \vec{y}^{bnm}, \vec{1}^{bnm} \rangle - z^3 \langle \vec{1}^{bnm}, \vec{z}^{nm} \times \vec{2}^b \rangle = \\= z^2 \langle z^{nm}, \textcolor{red}{v} \rangle + \delta(y, z)$$ --- ## Blindings in inner product ## <!-- 1. Need to blind aL and aR in order to use IPA and make proof zero-knowledge. --> <!-- 2. Introduce blindings sL, sR and commit to those. --> Choose nonces $\textcolor{lightgreen}{s_L}, \textcolor{lightgreen}{s_R}$: $\textcolor{violet}{S} = \texttt{VCommit}(\textcolor{lightgreen}{s_L}, \textcolor{lightgreen}{s_R}, \textcolor{lightgreen}{\rho})$. Receive challenge $\textcolor{lightgreen}{x}$: $$l = \textcolor{red}{a_L} - z \cdot \vec{1}^{bnm} + \textcolor{lightgreen}{x} \cdot \textcolor{lightgreen}{s_L}$$ $$r = z^2 \cdot z^{nm} \times \vec{2}^b + \vec{y}^{bnm} \circ (\textcolor{red}{a_R} + z \cdot \vec{1}^{bnm} + \textcolor{lightgreen}{x} \cdot \textcolor{lightgreen}{s_R})$$ Note: $l$ and $r$ are polynomials in $x$ over $\mathbb{Z}_q^{bnm}$ $$\textcolor{violet}{t} = \langle l, r \rangle = t_0 + \textcolor{lightgreen}{x} t_1 + \textcolor{lightgreen}{x}^2 t_2$$ --- ## IPA ## Equation $t_0 = z^2 \langle z^{nm}, v \rangle + \delta(y, z)$ ($t$ evaluated at $x=0$) is equivalent\* to the initial system and the statement that $v_{j,l}$ is small. \* with high probability. Prove $t = z^2 \langle z^{nm}, v \rangle + \delta(y, z) + x t_1 + x^2 t_2$ with IPA instead. $t_1$, $t_2$ serve as blindings for $t_0$, commit to those before IPA: $$\textcolor{violet}{T_i} = \textcolor{red}{\texttt{Commit}}(t_i),\; \text{for}\; i=1,2$$ --- ## Commitment $P$ for IPA ## <!-- 1. Need to compute commitment P as input to IPA. --> $$P = \texttt{IPACommit}(l,r) = \\= (\langle \textcolor{red}{a_L}, \vec{G} \rangle + \langle \vec{y}^{bnm} \circ \textcolor{red}{a_R}, \vec{H'} \rangle + \alpha K) + \\+ \textcolor{lightgreen}{x} (\langle \textcolor{lightgreen}{s_L}, \vec{G} \rangle + \langle \vec{y}^{bnm} \circ \textcolor{lightgreen}{s_R}, \vec{H'} \rangle + \rho K) - \\ - (\alpha + \textcolor{lightgreen}{x} \rho) K - \langle z \cdot \vec{1}^{bnm}, \vec{G} \rangle + \langle z^2 \cdot z^{nm} \times \vec{2}^b + z \cdot \vec{y}^{bnm}, \vec{H'} \rangle$$ Let's use $\vec{H'} = \vec{y}^{-bnm} \circ \vec{H}$ in $\texttt{IPACommit}$: <!-- 2. Generators in H' depend on y which prevents batch verification of IPA. --> $$P = \textcolor{violet}{A} + \textcolor{lightgreen}{x} \textcolor{violet}{S} - \textcolor{violet}{\mu} K - z \cdot \vec{G} + \langle \gamma(y,z), \vec{H'} \rangle$$ $\textcolor{violet}{\mu} = \alpha + \textcolor{lightgreen}{x} \rho$ is part of proof so $P$ can be reconstructed. --- ## How to $\texttt{Commit}$? ## $$\texttt{IPA}\{(P,t;l,r): P = \texttt{IPACommit}(l,r) \wedge t = \langle l, r \rangle\}$$ Last step -- verify proof $\textcolor{violet}{t} = z^2 \langle z^{nm}, v \rangle + \delta(y, z) + x t_1 + x^2 t_2$ against commitment $\textcolor{red}{V}$. Use homomorphic property: $$\textcolor{red}{\texttt{Commit}}(t) + \textcolor{red}{\ldots} \overset{?}{=} z^2 \langle z^{nm}, \textcolor{red}{V} \rangle + \textcolor{red}{\ldots}$$ TODO: - $T_i$, $\tau_i$, $\tau_x$, $C_{j,l}$, $R_l$ - correct sharing proof: $\sum_l 2^{bl} (C_{j,l} - r_l X_j) = F(j)$ --- ## Commit with Pedersen ## Pedersen commitment: $$\texttt{Commit}(s,r) = sG + rH$$ <!-- 1. Commitment is used to compute Ti and V with corresponding randomizations. --> $T_i = t_i G + \tau_i H$, $\textcolor{red}{V_{j,l}} = \textcolor{red}{v_{j,l}} G + \textcolor{red}{r_{j,l}} H$ <!-- 2. Construct verification equation using homomorphic property. --> $\texttt{Commit}(\textcolor{violet}{t},\textcolor{violet}{\tau_x}) = z^2 \langle z^{nm}, \textcolor{red}{V} \rangle + \delta(y, z) G + x \textcolor{violet}{T_1} + x^2 \textcolor{violet}{T_2}$ <!-- 3. Derive expression for taux from verification equation. --> $\tau_x = z^2 \langle z^{nm}, \textcolor{red}{r} \rangle + 0 + x \tau_1 + x^2 \tau_2$ --- ## Commit with ElGamal ## ElGamal commitment: $$\texttt{Commit}_X(s,r) = sG + rX, rG$$ Family of commitments, which $X_j$ to use? $C_{j,l} = \textcolor{red}{v_{j,l}} G + \textcolor{red}{r_l} X_j$, $R_l = \textcolor{red}{r_l} G$, $\forall j=1..n, \forall l=0..m-1$ <!-- Let's consider three key parts to ElGamal commitment. --> --- ## Share chunks ## Step 1: $C_{j,l} = \textcolor{red}{v_{j,l}} G + r_l X_j$, $R_l = r_l G$ $t = z^2 \langle z^{nm}, \textcolor{red}{v} \rangle + \delta(y, z) + x t_1 + x^2 t_2$ $t G = z^2 \langle z^{nm}, \textcolor{red}{v} \rangle G + \delta(y, z)G + x \textcolor{lightgreen}{t_1 G} + x^2 \textcolor{lightgreen}{t_2 G}$ $\textcolor{violet}{T_i} = \textcolor{lightgreen}{t_i G} + \textcolor{red}{\ldots}$ --- ## Aggregated public key $\overline{X}$ ## Step 2: $C_{j,l} = v_{j,l} G + \textcolor{red}{r_l} X_j$, $R_l = r_l G$ $\langle z^{nm}, \textcolor{red}{C} \rangle = \sum_{j=1}^n z^{(j-1)m} \sum_{l=0}^{m-1} z^l (v_{j,l} G + \textcolor{red}{r_l} X_j)$ $$\sum_{j=1}^n z^{(j-1)m} \sum_{l=0}^{m-1} z^l \textcolor{red}{r_l} X_j = (\sum_{l=0}^{m-1} z^l \textcolor{red}{r_l}) (\sum_{j=1}^n z^{(j-1)m} X_j)$$ $\textcolor{lightgreen}{\overline{X}} = \sum_{j=1}^n z^{(j-1)m} X_j$ <!-- Aggregated public key X-bar allows to use ElGamal commitment. --> --- ## Commitment with aggregated public key ## Part 2: $C_{j,l} = v_{j,l} G + \textcolor{red}{r_l} X_j$, $R_l = r_l G$ $\textcolor{violet}{\tau_x} = z^2 \sum_{l=0}^{m-1} z^l \textcolor{red}{r_l} + x \textcolor{lightgreen}{\tau_1} + x^2 \textcolor{lightgreen}{\tau_2}$ $\textcolor{violet}{T_i} = t_i G + \textcolor{lightgreen}{\tau_i \overline{X}}$ ElGamal commitment with *aggregated* public key $\overline{X}$: $T_i = \texttt{Commit}_{\overline{X}}(t_i,\tau_i)$ $\texttt{Commit}_{\overline{X}}(t,\tau_x) \overset{?}{=} \ldots$ --- ## Commitment complete ## Part 3: $C_{j,l} = v_{j,l} G + r_l X_j$, $R_l = \textcolor{red}{r_l} G$ $\textcolor{violet}{\tau_x} = z^2 \sum_{l=0}^{m-1} z^l \textcolor{red}{r_l} + x \textcolor{lightgreen}{\tau_1} + x^2 \textcolor{lightgreen}{\tau_2}$ $\textcolor{violet}{Q_i} = \textcolor{lightgreen}{\tau_i G}$ Verify: $$\textcolor{violet}{t} G + \textcolor{violet}{\tau_x} \overline{X} \overset{?}{=} z^2 \langle z^{nm}, \textcolor{red}{C} \rangle + \delta(y, z)G + x \textcolor{violet}{T_1} + x^2 \textcolor{violet}{T_2}$$ $$\textcolor{violet}{\tau_x} G \overset{?}{=} z^2 \langle z^m, \textcolor{red}{R} \rangle + x \textcolor{violet}{Q_1} + x^2 \textcolor{violet}{Q_2}$$ <!-- Note connection to / difference with range proof. --> --- ## Correct sharing proof ## Part 4: $(\sum_l \textcolor{red}{2^{bl} r_l}) X_j = \sum_l 2^{bl} C_{j,l} - F(j)$, $\quad\quad\quad\!(\sum_l \textcolor{red}{2^{bl} r_l})G = \sum_l 2^{bl} R_l$ $\textcolor{violet}{\tau_x} = z^2 \sum_{l=0}^{m-1} \textcolor{red}{z^l r_l} + x \tau_1 + x^2 \tau_2$ :x: <!-- 1. Can't really tie to previous stuff, tau_x. --> <!-- 2. Use aggregated preimage NIZKP -- DLEQ. --> Choose nonce $\eta$, $\textcolor{violet}{N} = \texttt{Commit}(\eta) = \eta \cdot (G \| \vec{X})$. Receive challenge $w$. Proof: $\textcolor{violet}{s} = \eta + w \sum_l \textcolor{red}{2^{bl} r_l}$ Verify: $s \cdot (G \| \vec{X}) \overset{?}{=} \textcolor{violet}{N} + w \cdot (\sum_l 2^{bl} R_l \| (\sum_l 2^{bl} C_{j,l} - F(j))_{j=1}^n)$ <!-- 3. n+1 equations in verify. Use batch verification and additional challenge. --> --- ## Aggregated correct sharing proof ## Part 4: $(\sum_l \textcolor{red}{2^{bl} r_l}) X_j = \sum_l 2^{bl} C_{j,l} - F(j)$, $\quad\quad\quad\!(\sum_l \textcolor{red}{2^{bl} r_l})G = \sum_l 2^{bl} R_l$ <!-- 2 points in commitments N,M instead of n+1. --> Choose nonce $\eta$, $\textcolor{violet}{N} = \texttt{Commit}(\eta) = \eta \cdot G$. Receive challenge $\textcolor{lightgreen}{u}$. Commit $\textcolor{violet}{M} = \eta \sum_{j=1}^n \textcolor{lightgreen}{u}^j X_j$. Receive challenge $\textcolor{lightgreen}{w}$. Proof: $\textcolor{violet}{s} = \eta + \textcolor{lightgreen}{w} \sum_l \textcolor{red}{2^{bl} r_l}$ Verify: $\textcolor{violet}{s} (G + \sum_{j=1}^n \textcolor{lightgreen}{u}^j X_j) \overset{?}{=} \textcolor{violet}{N} + \textcolor{violet}{M} + \\\quad\quad\quad\!+ \textcolor{lightgreen}{w} (\sum_l 2^{bl} R_l + \sum_{j=1}^n \textcolor{lightgreen}{u}^j (\sum_l 2^{bl} C_{j,l} - F(j))$ --- ## Final protocol: Prove 1/ ## 1. Nonces $\textcolor{lightgreen}{a_L}$, $\textcolor{lightgreen}{a_R}$, rand $\textcolor{lightgreen}{\alpha}$: $\textcolor{violet}{A} = \langle \textcolor{lightgreen}{a_L}, \vec{G} \rangle + \langle \textcolor{lightgreen}{a_R}, \vec{H} \rangle + \textcolor{lightgreen}{\alpha} K$ 2. Nonces $\textcolor{lightgreen}{s_L}$, $\textcolor{lightgreen}{s_R}$, rand $\textcolor{lightgreen}{\rho}$: $\textcolor{violet}{S} = \langle \textcolor{lightgreen}{s_L}, \vec{G} \rangle + \langle \textcolor{lightgreen}{s_R}, \vec{H} \rangle + \textcolor{lightgreen}{\rho} K$ 3. Challenge $\textcolor{lightgreen}{y}$ 4. Challenge $\textcolor{lightgreen}{z}$ 5. Calc $t_i$, rand $\textcolor{lightgreen}{\tau_i}$: $\textcolor{violet}{T_i} = t_i G + \textcolor{lightgreen}{\tau_i} \overline{X}$, $\textcolor{violet}{Q_i} = \textcolor{lightgreen}{\tau_i} G$ 6. Challenge $\textcolor{lightgreen}{x}$ --- ## Final protocol: Prove 2/2 ## 7. Calc $l$, $r$. Proof $\textcolor{violet}{t} = \langle l, r \rangle$, $\textcolor{violet}{\mu} = \alpha + x \rho$, $\textcolor{violet}{\tau_x} = z^2 \sum_{l=0}^{m-1} z^l r_l + x \tau_1 + x^2 \tau_2$ 8. Calc $\vec{H'}(\textcolor{lightgreen}{y})$, $P(\textcolor{lightgreen}{x},\textcolor{lightgreen}{y},\textcolor{lightgreen}{z};\textcolor{violet}{A},\textcolor{violet}{S},\textcolor{violet}{\mu})$. Proof $\texttt{IPA}\{(\vec{G}, \vec{H'},P,\textcolor{violet}{t};l,r)\}$ 9. Nonce $\textcolor{lightgreen}{\eta}$: $\textcolor{violet}{N} = \textcolor{lightgreen}{\eta} G$ 10. Challenge $\textcolor{lightgreen}{u}$: $\textcolor{violet}{M} = \textcolor{lightgreen}{\eta} \sum_{j=1}^n \textcolor{lightgreen}{u}^j X_j$ 11. Challenge $\textcolor{lightgreen}{w}$ 12. Proof $\textcolor{violet}{s} = \textcolor{lightgreen}{\eta} + \textcolor{lightgreen}{w} \sum_l 2^{bl} r_l$ --- ## Final protocol: Verify 1/ ## 1. Commitments $\textcolor{violet}{A}, \textcolor{violet}{S}$ 2. Challenges $\textcolor{lightgreen}{y}, \textcolor{lightgreen}{z}$ 3. Commitments $\textcolor{violet}{T_i}, \textcolor{violet}{Q_i}$ 4. Challenge $\textcolor{lightgreen}{x}$ 5. Verify $\textcolor{violet}{t} G + \textcolor{violet}{\tau_x} \overline{X} \overset{?}{=} z^2 \langle z^{nm}, C \rangle + \delta(y, z)G + x \textcolor{violet}{T_1} + x^2 \textcolor{violet}{T_2}$ 6. Verify $\textcolor{violet}{\tau_x} G \overset{?}{=} z^2 \langle z^m, R \rangle + x \textcolor{violet}{Q_1} + x^2 \textcolor{violet}{Q_2}$ 7. Calc $\vec{H'}(\textcolor{lightgreen}{y})$, $P(\textcolor{lightgreen}{x},\textcolor{lightgreen}{y},\textcolor{lightgreen}{z};\textcolor{violet}{A},\textcolor{violet}{S},\textcolor{violet}{\mu})$. Verify $\texttt{IPA}\{(\vec{G}, \vec{H'},P,\textcolor{violet}{t};l,r)\}$ --- ## Final protocol: Verify 2/2 ## 8. Commitment $\textcolor{violet}{N}$ 9. Challenge $\textcolor{lightgreen}{u}$. Commitment $\textcolor{violet}{M}$ 10. Challenge $\textcolor{lightgreen}{w}$ 11. Verify: $\textcolor{violet}{s} (G + \sum_{j=1}^n \textcolor{lightgreen}{u}^j X_j) \overset{?}{=} \textcolor{violet}{N} + \textcolor{violet}{M} + \\\quad\quad\quad\!+ \textcolor{lightgreen}{w} (\sum_l 2^{bl} R_l + \sum_{j=1}^n \textcolor{lightgreen}{u}^j (\sum_l 2^{bl} C_{j,l} - F(j))$ --- ## Summary ## | Class | Items | Size | |:-------------|:-----------------------------------|:------------| |Witness | $v_{j,l}$, $r_l$ | | |Instance | $F_k$, $C_{j,l}$, $R_l$ | $O(t+nm+m)$ | |Nonces | $a_L$, $a_R$, $s_L$, $s_R$, $t_i$ | | |Randomizations| $\alpha$, $\rho$, $\tau_i$, $\eta$ | | |Commitments | $A$, $S$, $T_i$, $Q_i$, $N$, $M$ | $O(8)$ | |Challenges | $y$, $z$, $x$, $u$, $w$ | | |Proof | $\tau_x$, $\mu$, $t$, IPA, $s$ | $O(4+2\log_2(bnm)+2)$ | --- ## Failed attempts ## <!-- n randomizations tau1, tau2, taux. Commitment with n randomizations. --> - ElGamal with $r_{j,l}$ :x: can't separate $r_{j,l}$ and $X_j$, need many $\tau_{x,j}$ - Twisted ElGamal :x: same issue - Twisted heterogenous ElGamal -- (sG+rH,rG,rX). Range proof + DLEQ. :x: Too big overhead - Reuse proof for correct sharing :x: incompatible $r_l$ aggregation - Do not use $a_R$ :x: can't derive commitment to RHS from $A_L$ - Batch verification :x: IPA use different $\vec{H'}$ --- ## Thanks ## Questions?