The Zcash Anonymous Cryptocurrency or zk-SNARKs for the interested - - PowerPoint PPT Presentation

the zcash anonymous cryptocurrency
SMART_READER_LITE
LIVE PREVIEW

The Zcash Anonymous Cryptocurrency or zk-SNARKs for the interested - - PowerPoint PPT Presentation

The Zcash Anonymous Cryptocurrency or zk-SNARKs for the interested layperson Sven M. Hallberg 29 Dec 2016 33rd Chaos Communication Congress, Hamburg What is Zcash Based on Bitcoin (altcoin) Adds a second type of address ( t XXXX, z


slide-1
SLIDE 1

The Zcash Anonymous Cryptocurrency

  • r zk-SNARKs for the interested layperson

Sven M. Hallberg 29 Dec 2016

33rd Chaos Communication Congress, Hamburg

slide-2
SLIDE 2

What is Zcash

  • Based on Bitcoin (altcoin)
  • Adds a second type of address (tXXXX…, zXXXX…)

→ “Shielded” transactions hide sender, receiver, amount

  • Uses recent magic (“zk-SNARKs”: 2010–)
  • Evolution of Zerocoin (2013), Zerocash (2014)
  • A company, a future (?!) foundation (I am not affiliated.)

Miers et al., Zerocoin: Anonymous Distributed E-Cash from Bitcoin Ben-Sasson et al., Zerocash: Decentralized Anonymous Payments from Bitcoin

1

slide-3
SLIDE 3

What’s in this talk

Focus on Zcash the abstract system

  • form of transactions
  • what is hidden
  • how validity is proved
  • where zk-SNARKs come in

2

slide-4
SLIDE 4

Bitcoin is…

A distributed ledger of consensus-validated transactions.

input x from TX input y from TX input z from TX ...

  • utput u to ADDR
  • utput v to ADDR

...

Balance Authority

3

slide-5
SLIDE 5

Zcash is…

A distributed ledger of consensus-validated transactions.

input x from TX input y from TX input z from TX ...

  • utput u to tADDR
  • utput v to tADDR

... JoinSplit JoinSplit ...

Balance ?? Authority

4

slide-6
SLIDE 6

JoinSplit

  • Zcash is transfered as notes (“coins”)
  • Note plaintext (owner, value, etc.) is secret
  • Each note has a nullifier and a commitment (public)
  • JoinSplit consumes (2) and creates (2) notes

JoinSplit

nf1 nf2 cm1 cm2

5

slide-7
SLIDE 7

JoinSplit description in detail

( vin, vout, rt, nf1, nf2, cm1, cm2, epk, seed, h1, h2, π, C1, C2, ) rt commitments in existence nf1, nf2 nullifiers (inputs) cm1, cm2 commitments (outputs) π proof of validity Prover knows notes such that…

6

slide-8
SLIDE 8

JoinSplit description in detail

( vin, vout, rt, nf1, nf2, cm1, cm2, epk, seed, h1, h2, π, C1, C2, ) rt commitments in existence nf1, nf2 nullifiers (inputs) cm1, cm2 commitments (outputs) π proof of validity → Prover knows notes such that…

6

slide-9
SLIDE 9

zk-SNARKs (as a black box)

zero-knowledge, succinct, non-interactive arguments of knowledge “API”:

  • Setup(stmt)
  • π ← Prove(input)
  • Verify(π)

→ libsnark

7

slide-10
SLIDE 10

JoinSplit statement

Prover knows notes (a, v, ρ, r) such that…

  • Input notes are in rt
  • nf1, nf2 correspond to input notes
  • cm1, cm2 correspond to output notes
  • Balance
  • Spend authority
  • Non-malleability
  • Uniqueness of ρ

8

slide-11
SLIDE 11

A boolean circuit

¬ (x ∧ y) ∨ z

9

slide-12
SLIDE 12

An arithmetic circuit

(x + y)2 · y

10

slide-13
SLIDE 13

Arithmetic AND

x · y x, y ∈ {0, 1}

11

slide-14
SLIDE 14

Arithmetic NOT

1 − x x ∈ {0, 1}

12

slide-15
SLIDE 15

Satisfiability

Assign x, y so that output = 0 (x + y)2 · y

13

slide-16
SLIDE 16

Satisfiability of equations

x2 + y2 = z2 ⇔ x2 + y2 − z2 = 0 Assign x, y, z so that output = 0 zk-SNARKs prove knowledge of x y z

14

slide-17
SLIDE 17

Satisfiability of equations

x2 + y2 = z2 ⇔ x2 + y2 − z2 = 0 Assign x, y, z so that output = 0 zk-SNARKs prove knowledge of x, y, z

14

slide-18
SLIDE 18

Game plan

  • Encode JoinSplit statement as arithmetic circuit
  • Plug into zk-SNARK
  • Prove knowledge of notes such that circuit satisfied

15

slide-19
SLIDE 19

Ingredients of JoinSplit

  • Merkle (hash) tree
  • Commitment scheme
  • Pseudo-random functions
  • Arithmetic on N

16

slide-20
SLIDE 20

Ingredients of JoinSplit

  • Merkle (hash) tree (SHA256)
  • Commitment scheme (SHA256)
  • Pseudo-random functions (SHA256)
  • Arithmetic on N

16

slide-21
SLIDE 21

Binary numbers

  • 31
  • i=0

2i · xi

  • 17
slide-22
SLIDE 22

Bit shift

18

slide-23
SLIDE 23

Concrete instantiation (Zerocash)

“Let H be the SHA256 compression function…”

19

slide-24
SLIDE 24

Questions?

19

slide-25
SLIDE 25

zk-SNARKS

Ben-Sasson et al., Succinct Non-Interactive Zero Knowledge for a von Neumann Architecture (2015)

  • arithmetic circuits → QAPs
  • pairing-pased cryptography
  • e : G1 × G2 → GT
  • G1, G2 from elliptic curves

More in the literature…

https://eprint.iacr.org/2013/879.pdf

slide-26
SLIDE 26

State of the currency

  • Trusted setup around 22 Oct
  • Launch (Genesis Block) on 28 Oct
  • CPU and GPU miners available
  • Price started overhyped, fluctuated, cur. ∼50 EUR