1 of 13

Some Fun ZK Constructions

2 of 13

tornado

3 of 13

0

0

0

0

H(0)

H(0)

H(0)

H(0)

root

Contract view

H(H(0), H(0))

H(H(0), H(0))

4 of 13

pw1

pw2

pw3

0

dn1 = H(pw1)

dn2

dn3

H(0)

root

Contract view

nullifier1

5 of 13

pw1

pw2

pw3

pw4

dn1 = H(pw1)

dn2

dn3

dn4

root

Contract view

nullifier1

6 of 13

pw1

pw2

pw3

pw4

dn1 = H(pw1)

dn2

dn3

dn4

root

Contract view

Nullifier1 = G(pw2)

7 of 13

pw1

pw2

pw3

pw4

dn1 = H(pw1)

dn2

dn3

dn4

root

Contract view

Nullifier1 = G(pw2)

Nullifier2 = G(pw3)

ZKP: I know pw3 such that G(pw3) = nullifier2, and H(pw3) is in merkle tree

8 of 13

pw1

pw2

pw3

pw4

dn1 = H(pw1)

dn2

dn3

dn4

root

Contract view

Nullifier1 = G(pw2)

Nullifier2 = G(pw3)

9 of 13

pw1

pw2

pw3

pw4

dn1 = H(pw1)

dn2

dn3

dn4

root

Contract view

Nullifier3 = G(pw3)

Nullifier2 = G(pw3)

Nullifier1 = G(pw2)

10 of 13

pw1

pw2

pw3

pw4

dn1 = H(pw1)

dn2

dn3

dn4

root

Contract view

Nullifier3 = G(pw3)

Nullifier2 = G(pw3)

Nullifier1 = G(pw2)

11 of 13

ETHDataMarketplace

12 of 13

ZK hearthstone

13 of 13

ZK Perlin Noise