PIVX Core  5.6.99
P2P Digital Currency
sapling.h
Go to the documentation of this file.
1 // Copyright (c) 2016-2020 The ZCash developers
2 // Copyright (c) 2020 The PIVX Core developers
3 // Distributed under the MIT software license, see the accompanying
4 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5 
6 #ifndef PIVX_SAPLING_SAPLING_H
7 #define PIVX_SAPLING_SAPLING_H
8 
9 #include <array>
10 
11 #define ZC_NUM_JS_INPUTS 2
12 #define ZC_NUM_JS_OUTPUTS 2
13 #define INCREMENTAL_MERKLE_TREE_DEPTH 29
14 #define INCREMENTAL_MERKLE_TREE_DEPTH_TESTING 4
15 
16 #define SAPLING_INCREMENTAL_MERKLE_TREE_DEPTH 32
17 
18 #define NOTEENCRYPTION_AUTH_BYTES 16
19 
20 #define ZC_NOTEPLAINTEXT_LEADING 1
21 #define ZC_V_SIZE 8
22 #define ZC_RHO_SIZE 32
23 #define ZC_R_SIZE 32
24 #define ZC_MEMO_SIZE 512
25 #define ZC_DIVERSIFIER_SIZE 11
26 #define ZC_JUBJUB_POINT_SIZE 32
27 #define ZC_JUBJUB_SCALAR_SIZE 32
28 
29 #define ZC_NOTEPLAINTEXT_SIZE (ZC_NOTEPLAINTEXT_LEADING + ZC_V_SIZE + ZC_RHO_SIZE + ZC_R_SIZE + ZC_MEMO_SIZE)
30 
31 #define ZC_SAPLING_ENCPLAINTEXT_SIZE (ZC_NOTEPLAINTEXT_LEADING + ZC_DIVERSIFIER_SIZE + ZC_V_SIZE + ZC_R_SIZE + ZC_MEMO_SIZE)
32 #define ZC_SAPLING_OUTPLAINTEXT_SIZE (ZC_JUBJUB_POINT_SIZE + ZC_JUBJUB_SCALAR_SIZE)
33 
34 #define ZC_SAPLING_ENCCIPHERTEXT_SIZE (ZC_SAPLING_ENCPLAINTEXT_SIZE + NOTEENCRYPTION_AUTH_BYTES)
35 #define ZC_SAPLING_OUTCIPHERTEXT_SIZE (ZC_SAPLING_OUTPLAINTEXT_SIZE + NOTEENCRYPTION_AUTH_BYTES)
36 
37 // Type def
38 typedef std::array<unsigned char, ZC_DIVERSIFIER_SIZE> diversifier_t;
39 
40 #endif // PIVX_SAPLING_SAPLING_H
std::array< unsigned char, ZC_DIVERSIFIER_SIZE > diversifier_t
Definition: sapling.h:38