Suyash Bagad, Saravanan Vijayakumaran
Department of Electrical Engineering, IIT Bombay
IEEE Security & Privacy on the Blockchain, 2020
September 7, 2020
What is a proof of reserves? Why is it necessary?
Revelio - current state-of-the-art for MimbleWimble
RevelioBP - a Bulletproofs based proof of reserves for MimbleWimble
Performance comparison of RevelioBP and Revelio
Future scope
Proof of ownership of a certain amount of assets
For crypto exchanges, challenge is proving this without revealing any sensitive information
Exchanges
UTXO Set
\(a_1\)
\(a_2\)
\(a_3\)
\(a_4\)
\(\texttt{We own some addresses}\)
\(\texttt{which contain a total of}\)
\(\texttt{an amount hidden in a}\)
\(\texttt{Pedersen commitment } C_{\text{res}}.\)
Reserves: \(C_{\text{res}} = g^{r_1} \cdot h^{\sum_{i} a_i},\)
Proof of solvency: \(C_{\text{res}} \cdot C_{\text{liab}}^{-1} \) commits to an integer in range \([0, M], M > 0\)
Liabilities: \(C_{\text{liab}}=g^{r_2} \cdot h^{\sum_{i} l_i}\)
Each output in MimbleWimble is a Pedersen Commitment
Pedersen Commitments are homomorphic, perfectly hiding and computationally binding
For an amount \(a \in \{0,1,\dots,2^{64}-1\}\) and blinding factor \(k \in \mathbb{Z}_q\)
Let \(\mathbb{G}\) be a prime ordered group (\(|\mathbb{G}|=q\)) with generators \(g,h \in \mathbb{G}\) such that DL relation between them is unknown
Proves that each \( C_i \in \mathcal{C}_{\text{anon}},\) is either owned OR not owned by exchange
\(\sigma_i\) are NIZK proofs of representation of discrete log
Proof size linear in anonymity set size: \((n+1) \in \mathbb{G}, \ 5n \in \mathbb{Z}_q\)
Free choice of \(\mathcal{C}_{\text{anon}};\) Can we have \(\mathcal{C}_{\text{anon}}=\text{UTXO}?\)
We then use the inner product argument of the form
RevelioBP proof size | Revelio proof size |
To build \(\Pi_{\text{IP}},\) we combine the constraints using a scalar \(u \leftarrow \mathbb{Z}_q\)
We implemented RevelioBP in Rust over \( \mathbb{G} = \texttt{secp256k1}\) elliptic curve
Note: All plots are in log-log scale.
RevelioBP proofs are \(\ge 10\text{X}\) shorter that that of Revelio
RevelioBP proof generation is \(2\text{X}\) slower that of Revelio
Note: All plots are in log-log scale.
RevelioBP ver. is \(4\text{X}\) faster than its gen. due to multi-exponentiation
RevelioBP | Revelio | |
---|---|---|
Proof size | ||
Scalability | ||
Blockchain state | ||
Output privacy | ||
Inflation resistance | ||
Own set size | ||
Running times | ||
Parallelizable |
For UTXO set size \(n=1.6\times 10^5\) and \(s=50\)
\(100\)
Proof of reserves using other proof systems: zk-SNARKs like PLONK, Sonic for \(\mathcal{O}(1)\)-time verification - will require additional assumptions
Extend it to other cryptocurrencies - work in progress for Monero
B. Bünz et al., "Bulletproofs: Short Proofs for Confidential Transactions and More," 2018 IEEE Symposium on Security and Privacy (SP), San Francisco, CA, 2018, pp. 315-334, doi: 10.1109/SP.2018.00020.
Russell W. F. Lai et al., "Omniring: Scaling Private Payments Without Trusted Setup". In Proceedings of the 2019 ACM SIGSAC Conference on Computer and Communications Security (CCS '19). ACM, New York, NY, USA, 31–48. DOI: 10.1145/3319535.3345655
G. Dagher et al. "Provisions: Privacy-preserving Proofs of Solvency for Bitcoin Exchanges". In Proceedings of the 2015 ACM SIGSAC Conference on Computer and Communications Security. ACM, New York, NY, USA, 720–731. DOI: 10.1145/2810103.2813674