PIVX Core  5.6.99
P2P Digital Currency
Params.h
Go to the documentation of this file.
1 
12 // Copyright (c) 2017-2021 The PIVX Core developers
13 
14 #ifndef PIVX_LIBZEROCOIN_PARAMS_H
15 #define PIVX_LIBZEROCOIN_PARAMS_H
16 
17 #include "bignum.h"
18 #include "ZerocoinDefines.h"
19 
20 namespace libzerocoin {
21 
23 public:
29 
34  CBigNum randomElement() const;
36 
41 
48 
53 
58 
59  SERIALIZE_METHODS(IntegerGroupParams, obj) { READWRITE(obj.initialized, obj.g , obj.h, obj.modulus, obj.groupOrder); }
60 };
61 
63 public:
81 
82  //AccumulatorAndProofParams(CBigNum accumulatorModulus);
83 
85 
91 
97 
103 
109 
117 
123 
128  uint32_t k_prime;
129 
134  uint32_t k_dprime;
136  READWRITE(obj.initialized, obj.accumulatorModulus, obj.accumulatorBase, obj.accumulatorPoKCommitmentGroup);
137  READWRITE(obj.accumulatorQRNCommitmentGroup, obj.minCoinValue, obj.maxCoinValue, obj.k_prime, obj.k_dprime);
138  }
139 };
140 
142 public:
159  explicit ZerocoinParams(CBigNum accumulatorModulus, uint32_t securityLevel = ZEROCOIN_DEFAULT_SECURITYLEVEL);
160 
162 
164 
170 
178 
183  uint32_t zkp_iterations;
184 
189  uint32_t zkp_hash_len;
190 
192  READWRITE(obj.initialized, obj.accumulatorParams, obj.coinCommitmentGroup, obj.serialNumberSoKCommitmentGroup, obj.zkp_iterations, obj.zkp_hash_len);
193  }
194 };
195 
196 } /* namespace libzerocoin */
197 
198 #endif // PIVX_LIBZEROCOIN_PARAMS_H
#define ZEROCOIN_DEFAULT_SECURITYLEVEL
C++ wrapper for BIGNUM.
Definition: bignum.h:35
CBigNum maxCoinValue
Upper bound on the value for a committed coin.
Definition: Params.h:108
IntegerGroupParams accumulatorPoKCommitmentGroup
The second of two groups used to form a commitment to a coin (which it self is a commitment to a seri...
Definition: Params.h:116
SERIALIZE_METHODS(AccumulatorAndProofParams, obj)
Definition: Params.h:135
uint32_t k_dprime
Security parameter.
Definition: Params.h:134
uint32_t k_prime
Security parameter.
Definition: Params.h:128
IntegerGroupParams accumulatorQRNCommitmentGroup
Hidden order quadratic residue group mod N.
Definition: Params.h:122
CBigNum accumulatorModulus
Modulus used for the accumulator.
Definition: Params.h:90
CBigNum accumulatorBase
The initial value for the accumulator A random Quadratic residue mod n that's not 1.
Definition: Params.h:96
AccumulatorAndProofParams()
Construct a set of Zerocoin parameters from a modulus "N".
Definition: Params.cpp:33
CBigNum minCoinValue
Lower bound on the value for committed coin.
Definition: Params.h:102
CBigNum randomElement() const
Generates a random group element.
Definition: Params.cpp:41
CBigNum groupOrder
The order of the group.
Definition: Params.h:57
CBigNum h
A second generator for the group.
Definition: Params.h:47
CBigNum modulus
The modulus for the group.
Definition: Params.h:52
CBigNum g
A generator for the group.
Definition: Params.h:40
SERIALIZE_METHODS(IntegerGroupParams, obj)
Definition: Params.h:59
IntegerGroupParams()
Integer group class, default constructor.
Definition: Params.cpp:37
IntegerGroupParams coinCommitmentGroup
The Quadratic Residue group from which we form a coin as a commitment to a serial number.
Definition: Params.h:169
AccumulatorAndProofParams accumulatorParams
Definition: Params.h:163
IntegerGroupParams serialNumberSoKCommitmentGroup
One of two groups used to form a commitment to a coin (which it self is a commitment to a serial numb...
Definition: Params.h:177
uint32_t zkp_hash_len
The amount of the hash function we use for proofs.
Definition: Params.h:189
SERIALIZE_METHODS(ZerocoinParams, obj)
Definition: Params.h:191
uint32_t zkp_iterations
The number of iterations to use in the serial number proof.
Definition: Params.h:183
ZerocoinParams(CBigNum accumulatorModulus, uint32_t securityLevel=ZEROCOIN_DEFAULT_SECURITYLEVEL)
Construct a set of Zerocoin parameters from a modulus "N".
Definition: Params.cpp:19
#define READWRITE(...)
Definition: serialize.h:183