ZKP in WebAssembly

## Generate keys

Generate proving and verification keys for proving the knowledge of an elliptic curve discrete logarithm problem. That is, the knowledge of x such that $h = g^x$, in the baby jubjub curve. The curve is $168700 * x^2 + y^2 = 1 + 168696x^2y^2$, defined over the prime field $F_p$, where $$\small{p = 218882428718392752222464057452572750885 \atop 48364400416034343698204186575808495617}$$ and $$g = \\ \mathrm{0x06cdb238b2f9c9ff32dbcca964593c5 \atop 836ddd962a12a07bb6452a598d15d3ff4,} \\ \mathrm{0x18c6409592649c36a79a15177b4aec5 \atop 784075f5a03f9a1b09a57af4b288f929d}$$

## Prove knowledge

Prove knowledge of x, compute a proof string and h.

## Verify

Given a proof and h, verify their validity.

## Generate keys

Generate proving and verification keys for proving membership of an element of a merkle tree. The curve is $168700 * x^2 + y^2 = 1 + 168696x^2y^2$, defined over the prime field $F_p$, where $$\small{p = 218882428718392752222464057452572750885 \atop 48364400416034343698204186575808495617}$$The hash used for the merkle tree is a pedersen hash.

## Prove knowledge

Prove membership of x, compute a proof string and root.

## Verify

Given a proof and root, verify their validity.