1
0
Fork 0
mirror of synced 2025-09-23 12:18:44 +00:00
ZoKrates/zokrates_stdlib/stdlib/ecc/edwardsOnCurve.zok
2020-07-13 17:32:05 +02:00

18 lines
534 B
Text

from "ecc/babyjubjubParams" import BabyJubJubParams
// Check if a point is on a twisted Edwards curve
// Curve parameters are defined with the last argument
// See appendix 3.3.1 of Zcash protocol specification:
// https://github.com/zcash/zips/blob/master/protocol/protocol.pdf
def main(field[2] pt, BabyJubJubParams context) -> (bool):
field a = context.JUBJUBA
field d = context.JUBJUBD
field uu = pt[0] * pt[0]
field vv = pt[1] * pt[1]
field uuvv = uu * vv
a * uu + vv == 1 + d * uuvv
return true