Some Fun ZK Constructions
tornado
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))
pw1
pw2
pw3
0
dn1 = H(pw1)
dn2
dn3
H(0)
root
Contract view
nullifier1
pw1
pw2
pw3
pw4
dn1 = H(pw1)
dn2
dn3
dn4
root
Contract view
nullifier1
pw1
pw2
pw3
pw4
dn1 = H(pw1)
dn2
dn3
dn4
root
Contract view
Nullifier1 = G(pw2)
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
pw1
pw2
pw3
pw4
dn1 = H(pw1)
dn2
dn3
dn4
root
Contract view
Nullifier1 = G(pw2)
Nullifier2 = G(pw3)
pw1
pw2
pw3
pw4
dn1 = H(pw1)
dn2
dn3
dn4
root
Contract view
Nullifier3 = G(pw3)
Nullifier2 = G(pw3)
Nullifier1 = G(pw2)
pw1
pw2
pw3
pw4
dn1 = H(pw1)
dn2
dn3
dn4
root
Contract view
Nullifier3 = G(pw3)
Nullifier2 = G(pw3)
Nullifier1 = G(pw2)
ETHDataMarketplace
ZK hearthstone