Module constants

Module constants 

Source
Expand description

Various constants used by the Sapling protocol.

Structs§

PEDERSEN_HASH_EXP_TABLE
The exp table for PEDERSEN_HASH_GENERATORS.

Constants§

CRH_IVK_PERSONALIZATION
BLAKE2s Personalization for CRH^ivk = BLAKE2s(ak | nk)
GH_FIRST_BLOCK
First 64 bytes of the BLAKE2s input during group hash. This is chosen to be some random string that we couldn’t have anticipated when we designed the algorithm, for rigidity purposes. We deliberately use an ASCII hex string of 32 bytes here.
KEY_DIVERSIFICATION_PERSONALIZATION
BLAKE2s Personalization for the group hash for key diversification
NOTE_COMMITMENT_RANDOMNESS_GENERATOR
The note commitment is randomized over this generator.
NULLIFIER_POSITION_GENERATOR
The node commitment is randomized again by the position in order to supply the nullifier computation with a unique input w.r.t. the note being spent, to prevent Faerie gold attacks.
NULLIFIER_POSITION_IN_TREE_GENERATOR_PERSONALIZATION
BLAKE2s Personalization for the nullifier position generator (for computing rho)
PEDERSEN_HASH_CHUNKS_PER_GENERATOR
The maximum number of chunks per segment of the Pedersen hash.
PEDERSEN_HASH_EXP_WINDOW_SIZE
The window size for exponentiation of Pedersen hash generators outside the circuit.
PEDERSEN_HASH_GENERATORS
The generators (for each segment) used in all Pedersen commitments.
PEDERSEN_HASH_GENERATORS_PERSONALIZATION
BLAKE2s Personalization for Pedersen hash generators.
PRF_NF_PERSONALIZATION
BLAKE2s Personalization for PRF^nf = BLAKE2s(nk | rho)
PROOF_GENERATION_KEY_BASE_GENERATOR_PERSONALIZATION
BLAKE2s Personalization for the proof generation key base point
PROOF_GENERATION_KEY_GENERATOR
The prover will demonstrate knowledge of discrete log with respect to this base when they are constructing a proof, in order to authorize proof construction.
SPENDING_KEY_GENERATOR
The spender proves discrete log with respect to this base at spend time.
SPENDING_KEY_GENERATOR_PERSONALIZATION
BLAKE2s Personalization for the spending key base point
VALUE_COMMITMENT_GENERATOR_PERSONALIZATION
BLAKE2s Personalization for the value commitment generator for the value
VALUE_COMMITMENT_RANDOMNESS_GENERATOR
The value commitment is randomized over this generator, for privacy.
VALUE_COMMITMENT_VALUE_GENERATOR
The value commitment is used to check balance between inputs and outputs. The value is placed over this generator.