ZKP Day 2

You might also like

Download as key, pdf, or txt
Download as key, pdf, or txt
You are on page 1of 32

BulletProofs

Hridam Basu
Bitcoin
Validity of a Bitcoin
Transaction

Signature is correct

Inputs are unspent

Sum of Input Values = Sum of Output Values + Fee


Bitcoin Transaction is Neither
Anonymous Nor Confidential
Visibility

Payer

Payee

Amount
Business Applications
Findora pays employees in bitcoin, implies, all salaries are
public

Public Supply Chain Prices : How much does Ford pays


its suppliers for the tyres?
Confidential Transactions
Confidential Transactions
[Maxwell 2016]
Structured like Bitcoin Transactions

Transaction amounts are hidden

Compatible with Bitcoin

Transaction graph is still public

Public verifiability of Transaction validity


Zero Knowledge Proof of
Knowledge
Linear Range Proofs

Based on Sigma Protocols with Fiat-Shamir Heuristic

Optimizations by Poelstra et al. 17 - 2x improvement

4kb for 64 bit range proof

Linear in the bit length of range

No Trusted Setup
SNARKs for Range Proofs
Short Proofs 188 bytes and shortish verification 10 ms

Publicly aggregatable through proof recursion

Prover overhead due to incompatibility with commitment


function

Non-falsifiable Assumptions

Trusted Setup
Problems with Trusted
Setup in Cryptocurrencies
If subverted, prover can create fake proofs

Undetectable, implies, undetectable inflation

Can be alleviated through distributed setup

Expensive and difficult but done for ZCash

Low flexibility: new functionality, new setup

HAWK: every smart contract has a new setup


CS-Proofs/STARKs?
Micali 01, Ben Sasson 17

Based on PCP Theorem and Fiat-Shamir Heuristic

No trusted setup, log sized proofs and verification

STARKs are somewhat practical CS-Proofs

> 200 kb proof size (prover overhead is massive - 130 GB


RAM for 2ˆ16 circuit)
Bootle at al. 16 Log-sized
Proofs for Arithmetic Circuits
Arbitrary Arithmetic Circuits

Only Discrete Log. Assumption

6log(n) + 11 elements

Proving and Verification is linear in the circuit

No proofs on committed values (important for range


proofs)
Bulletproofs
Builds on Bootle at al. 16

Proofs on Committed values

Only Discrete Log. Assumption

Fiat-Shamir Heuristic for NIZK

2log(n) + 9 elements for Range Proof

2log(n) + 13 elements for Arithmetic Circuit


Efficiency
BulletProofs MPC
Custom MPC to generate proofs

Works if circuits are disjoint, eg. n range proofs for n


provers

Simply aggregate proofs in each round and compute Fiat-


Shamir challenge

Either log(n) rounds and log(n) communication

Or, 3 rounds and O(n) linear communication


BulletProofs for
MimbleWimble
670 bytes instead of 4kb per range proof for 64 bit range

Aggregation: 736 bytes instead of 8 kb

16 range proofs 928 bytes vs 16kb

Doubling precision adds 64 bytes

UTXO set/Mimblewimble size: 17 GB vs 160 GB

Built in: simple conjoin protocol for combining CT

No Unconditional soundness or quantum soundness


Comparing Proof Systems
Bulletproofs for Solvency
Proofs
Bulletproofs for Smart
Contracts
Short Proofs for Arbitrary Computation (like SNARKs)

No Trusted Setup

Easy to Adapt for Arbitrary Computation

But Verification is linear

Verifying Zcash transaction implies generating Zcash

Problem for slow smart contracts

Referred Delegation Model


Bulletproofs for Verifiable
Shuffle
Implementation

Andrew Poelstra, Pieter Wuille, Peter Dettman

Integration into libsecp256k1 (Bitcoin library)

Constant time prover

Fast Verifier
Improving Verification
Batch Verification
Bellare, Garay, Rabin
Benchmarks
Thanks!
“Type a quote here.”

Questions ?
–Johnny Appleseed

You might also like