![]() |
PRCYCoin
2.0.0.7rc1
P2P Digital Currency
|
Go to the source code of this file.
Functions | |
| int | secp256k1_pedersen_commitment_to_serialized_pubkey (secp256k1_pedersen_commitment *commit, unsigned char *pubkey, size_t *length) |
| void | secp256k1_pedersen_serialized_pubkey_to_commitment (const unsigned char *pubkey, size_t length, secp256k1_pedersen_commitment *commit) |
| int | secp256k1_pedersen_commitment_parse (const secp256k1_context2 *ctx, secp256k1_pedersen_commitment *commit, const unsigned char *input) |
| Parse a 33-byte commitment into a commitment object. More... | |
| int | secp256k1_pedersen_commitment_serialize (const secp256k1_context2 *ctx, unsigned char *output, const secp256k1_pedersen_commitment *commit) |
| Serialize a commitment object into a serialized byte sequence. More... | |
| int | secp256k1_pedersen_commit (const secp256k1_context2 *ctx, secp256k1_pedersen_commitment *commit, const unsigned char *blind, uint64_t value, const secp256k1_generator *value_gen, const secp256k1_generator *blind_gen) |
| Generate a Pedersen commitment. More... | |
| int | secp256k1_pedersen_blind_sum (const secp256k1_context2 *ctx, unsigned char *blind_out, const unsigned char *const *blinds, size_t n, size_t npositive) |
| Takes a list of n pointers to 32 byte blinding values, the first negs of which are treated with positive sign and the rest negative, then calculates an additional blinding value that adds to zero. More... | |
| int | secp256k1_pedersen_verify_tally (const secp256k1_context2 *ctx, const secp256k1_pedersen_commitment *const *pos, size_t n_pos, const secp256k1_pedersen_commitment *const *neg, size_t n_neg) |
| Verify a tally of Pedersen commitments Returns 1: commitments successfully sum to zero. More... | |
| int | secp256k1_pedersen_commitment_sum (const secp256k1_context2 *ctx, const secp256k1_pedersen_commitment *const *pos, size_t n_pos, const secp256k1_pedersen_commitment *const *neg, size_t n_neg, secp256k1_pedersen_commitment *out) |
| int | secp256k1_pedersen_commitment_sum_pos (const secp256k1_context2 *ctx, const secp256k1_pedersen_commitment *const *pos, size_t n_pos, secp256k1_pedersen_commitment *out) |
| int | secp256k1_pedersen_blind_generator_blind_sum (const secp256k1_context2 *ctx, const uint64_t *value, const unsigned char *const *generator_blind, unsigned char *const *blinding_factor, size_t n_total, size_t n_inputs) |
| Sets the final Pedersen blinding factor correctly when the generators themselves have blinding factors. More... | |
Variables | |
| const secp256k1_generator * | secp256k1_generator_h = &secp256k1_generator_h_internal |
| Static constant generator 'h' maintained for historical reasons. More... | |
| int secp256k1_pedersen_blind_generator_blind_sum | ( | const secp256k1_context2 * | ctx, |
| const uint64_t * | value, | ||
| const unsigned char *const * | generator_blind, | ||
| unsigned char *const * | blinding_factor, | ||
| size_t | n_total, | ||
| size_t | n_inputs | ||
| ) |
Sets the final Pedersen blinding factor correctly when the generators themselves have blinding factors.
Consider a generator of the form A' = A + rG, where A is the "real" generator but A' is the generator provided to verifiers. Then a Pedersen commitment P = vA' + r'G really has the form vA + (vr + r')G. To get all these (vr + r') to sum to zero for multiple commitments, we take three arrays consisting of the vs, rs, and ‘r’s, respectively calledvalues,generator_blinds andblinding_factor`s, and sum them.
The function then subtracts the sum of all (vr + r') from the last element of the blinding_factor array, setting the total sum to zero.
Returns 1: Blinding factor successfully computed. 0: Error. A blinding_factor or generator_blind are larger than the group order (probability for random 32 byte number < 2^-127). Retry with different values.
In: ctx: pointer to a context object value: array of asset values, v in the above paragraph. May not be NULL unless n_total is 0. generator_blind: array of asset blinding factors, r in the above paragraph May not be NULL unless n_total is 0. n_total: Total size of the above arrays n_inputs: How many of the initial array elements represent commitments that will be negated in the final sum In/Out: blinding_factor: array of commitment blinding factors, ‘r’in the above paragraph May not be NULL unlessn_total` is 0. the last value will be modified to get the total sum to zero.
Definition at line 227 of file main_impl.h.
| int secp256k1_pedersen_blind_sum | ( | const secp256k1_context2 * | ctx, |
| unsigned char * | blind_out, | ||
| const unsigned char *const * | blinds, | ||
| size_t | n, | ||
| size_t | npositive | ||
| ) |
Takes a list of n pointers to 32 byte blinding values, the first negs of which are treated with positive sign and the rest negative, then calculates an additional blinding value that adds to zero.
Computes the sum of multiple positive and negative blinding factors.
Definition at line 126 of file main_impl.h.
| int secp256k1_pedersen_commit | ( | const secp256k1_context2 * | ctx, |
| secp256k1_pedersen_commitment * | commit, | ||
| const unsigned char * | blind, | ||
| uint64_t | value, | ||
| const secp256k1_generator * | value_gen, | ||
| const secp256k1_generator * | blind_gen | ||
| ) |
Generate a Pedersen commitment.
Returns 1: Commitment successfully created. 0: Error. The blinding factor is larger than the group order (probability for random 32 byte number < 2^-127) or results in the point at infinity. Retry with a different factor. In: ctx: pointer to a context object (cannot be NULL) blind: pointer to a 32-byte blinding factor (cannot be NULL) value: unsigned 64-bit integer value to commit to. value_gen: value generator 'h' blind_gen: blinding factor generator 'g' Out: commit: pointer to the commitment (cannot be NULL)
Blinding factors can be generated and verified in the same way as secp256k1 private keys for ECDSA.
Definition at line 93 of file main_impl.h.
| int secp256k1_pedersen_commitment_parse | ( | const secp256k1_context2 * | ctx, |
| secp256k1_pedersen_commitment * | commit, | ||
| const unsigned char * | input | ||
| ) |
Parse a 33-byte commitment into a commitment object.
Returns: 1 if input contains a valid commitment. Args: ctx: a secp256k1 context object. Out: commit: pointer to the output commitment object In: input: pointer to a 33-byte serialized commitment key
Definition at line 56 of file main_impl.h.
| int secp256k1_pedersen_commitment_serialize | ( | const secp256k1_context2 * | ctx, |
| unsigned char * | output, | ||
| const secp256k1_pedersen_commitment * | commit | ||
| ) |
Serialize a commitment object into a serialized byte sequence.
Returns: 1 always. Args: ctx: a secp256k1 context object. Out: output: a pointer to a 33-byte byte array In: commit: a pointer to a secp256k1_pedersen_commitment containing an initialized commitment
Definition at line 77 of file main_impl.h.
| int secp256k1_pedersen_commitment_sum | ( | const secp256k1_context2 * | ctx, |
| const secp256k1_pedersen_commitment *const * | pos, | ||
| size_t | n_pos, | ||
| const secp256k1_pedersen_commitment *const * | neg, | ||
| size_t | n_neg, | ||
| secp256k1_pedersen_commitment * | out | ||
| ) |
| int secp256k1_pedersen_commitment_sum_pos | ( | const secp256k1_context2 * | ctx, |
| const secp256k1_pedersen_commitment *const * | pos, | ||
| size_t | n_pos, | ||
| secp256k1_pedersen_commitment * | out | ||
| ) |
| int secp256k1_pedersen_commitment_to_serialized_pubkey | ( | secp256k1_pedersen_commitment * | commit, |
| unsigned char * | pubkey, | ||
| size_t * | length | ||
| ) |
| void secp256k1_pedersen_serialized_pubkey_to_commitment | ( | const unsigned char * | pubkey, |
| size_t | length, | ||
| secp256k1_pedersen_commitment * | commit | ||
| ) |
| int secp256k1_pedersen_verify_tally | ( | const secp256k1_context2 * | ctx, |
| const secp256k1_pedersen_commitment *const * | pos, | ||
| size_t | n_pos, | ||
| const secp256k1_pedersen_commitment *const * | neg, | ||
| size_t | n_neg | ||
| ) |
Verify a tally of Pedersen commitments Returns 1: commitments successfully sum to zero.
0: Commitments do not sum to zero or other error. In: ctx: pointer to a context object (cannot be NULL) pos: pointer to array of pointers to the commitments. (cannot be NULL if n_pos is non-zero) n_pos: number of commitments pointed to by pos. neg: pointer to array of pointers to the negative commitments. (cannot be NULL if n_neg is non-zero) n_neg: number of commitments pointed to by neg.
This computes sum(pos[0..n_pos)) - sum(neg[0..n_neg)) == 0.
A Pedersen commitment is xG + vA where G and A are generators for the secp256k1 group and x is a blinding factor, while v is the committed value. For a collection of commitments to sum to zero, for each distinct generator A all blinding factors and all values must sum to zero.
Definition at line 154 of file main_impl.h.
| const secp256k1_generator* secp256k1_generator_h = &secp256k1_generator_h_internal |
Static constant generator 'h' maintained for historical reasons.
Definition at line 27 of file main_impl.h.
1.8.17