Signing Scheme
Our spending key pairs produce Schnorr signatures and operate over the Grumpkin curve. Spending key pairs are used to generate spend authorization signatures which are private circuit inputs and authorize spending of UTXOs as part of our circuit's state transition function.
With
- being the Grumpkin generator
- the Grumpkin base field size
- the spending private key
- a 32-byte message hash
- , domain constants
signature generation proceeds as follows:
Tweaks
In order to make the Schnorr signatures deterministic we tweaked by deriving it from a Blake2s hash of a.o. the message and private key rather than through a PRNG.
Moreover, the choice of Grumpkin is deliberate in order to exploit the 2-cycle of curves between Grumpkin (spending key pair) and BN254 (proof system) which makes in-circuit signature verification very efficient.