Suyash Bagad
Department of Electrical Engineering, IIT Bombay
As a Part of Dual Degree (B.Tech + M.Tech) Project
Prof. Saravanan Vijayakumaran
Guide
June 29, 2020
Log-sized Privacy-Enhancing Proofs of Reserves Protocol
Motivation and main idea
Confidentiality of Amounts in Grin
Presented at Crypto Valley Conference on Blockchain Technology, 2020
Focus on performance trade-offs and implementation
Work accepted at IEEE Security & Privacy on Blockchain, 2020
Graph-based analysis of the Grin Blockchain
Main challenge in design
Adaptability to Edwards and Ristretto curves
MimbleWimble
Monero
Each output in MimbleWimble is a Pedersen Commitment
For an amount a∈{0,1,…,264−1} and blinding factor k∈Zq
where g,h∈G such that DL relation between them is unknown
For each Ci∈Canon, publish the tags (I1,…,In)∈Gn where n=∣Canon∣
Publish Cassets=∏i∈[n]Ii, and NIZK proofs σi∈Zq5 ∀i∈[n]
where yi=H(kexch,Ci)∈Zq
Proof size linear in anonymity set size
Can we shrink proofs sizes to O(log2(n))?
Can we link the blockchain state to the proof of reserves?
Privacy of outputs depends on the anonymity set n
Publish tag vector (I1,I2,…,Is), Cassets=∏i∈[n]Ii and NIZK ΠRevBP
To build ΠRevBP, we combine the constraints using a scalar u←Zq
We then use Inner Product Argument of the form
RevelioBP proof size | Revelio proof size |
RevelioBP | Revelio | |
---|---|---|
Proof size | ||
Scalability | ||
Blockchain state | ||
Output privacy | ||
Inflation resistance | ||
Own set size | ||
Running times |
For UTXO set size n=1.6×105 and s=102
We implemented RevelioBP in Rust over G=secp256k1 elliptic curve
Note: All plots are in log-log scale.
RevelioBP proofs are ≥10X shorter that that of Revelio
RevelioBP proof generation is ≈2X slower that of Revelio
Note: All plots are in log-log scale.
RevelioBP ver. is ≈3X faster than its gen. due to multi-exponentiation
Key challenge: Unlinking key-images & one-time addresses in MProve
Use an approach similar to RevelioBP
An MProve+ proof looks like
Implemented MProve+ and MProve in Rust over ed25519, ristretto
Small subgroup attack possible in ed25519
Implemented MProve+ and MProve in Rust over ed25519, ristretto
Small subgroup attack possible in ed25519. For a prime q
Ristretto constructs a prime order group from an Edwards curve
MProve+ over ristretto allows generalisation for other Edwards curves
We show conversion of Ristretto points to Edwards
Wrote an Elligator support over ed25519 to generate random curve points
Note: All plots are in log-log scale.
Happy to answer any questions!