Skip to content

Instantly share code, notes, and snippets.

@3esmit
Last active December 6, 2018 07:20
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save 3esmit/126787bf37159080b590a4d7f02355ee to your computer and use it in GitHub Desktop.
import "LIBSNARK/sha256packed"
def hash(field[16] deck) -> (field[2]):
field res = 0
for field i in 0..16 do
res = res + deck[i] * (2**(4*i))
endfor
h0, h1 = sha256packed(0, 0, 0, res)
return [h0, h1]
def isInDeck(field i, field[16] deck) -> (field):
field res = 1
for field card in 0..16 do
res = res * (deck[card] - i)
endfor
return res
def isPermutation(field[16] deck) -> (field):
for field card in 0..16 do
0 == isInDeck(card, deck)
endfor
return 1
def main(private field[16] deck, field salt) -> (field[2]):
1 == isPermutation(deck)
return hash(deck, salt)
import "LIBSNARK/sha256packed"
def hash(field[16] deck) -> (field[2]):
field res = 0
for field i in 0..16 do
res = res + deck[i] * (2**(4*i))
endfor
h0, h1 = sha256packed(0, 0, 0, res)
return [h0, h1]
def main(private field[16] deck, field nullifier) -> (field[2]):
return hash(deck), nullifier
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment