Signing a Transaction
Transactions in ZeroPool are signed by the spending key . To verify a transaction signature the prover should use an intermediate key A.
Transaction hashing
A client application should sign a 'composite' transaction hash instead of full transaction data. The transaction hash is calculated from the input and output hashes:
where
- is a Poseidon multi-hash (sponged) routine in the different modes
- is an input account
- is an input notes,
- - is a transaction commitment hash (Merkle subtree root). It depends on transaction output account and notes.
Signing
Next, a client uses the account spending key to sign a transaction hash :
, where is the 256-bit hash function
, (moving and to the JubJub Elliptic curve field)
The output signature will be sent with a intermediate key
Verifying
To verify a transaction signature a validator should perform the following computations: