Electroneum
Toggle main menu visibility
Loading...
Searching...
No Matches
chaingen_main.cpp
Go to the documentation of this file.
1
// Copyrights(c) 2017-2021, The Electroneum Project
2
// Copyrights(c) 2014-2019, The Monero Project
3
//
4
// All rights reserved.
5
//
6
// Redistribution and use in source and binary forms, with or without modification, are
7
// permitted provided that the following conditions are met:
8
//
9
// 1. Redistributions of source code must retain the above copyright notice, this list of
10
// conditions and the following disclaimer.
11
//
12
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
13
// of conditions and the following disclaimer in the documentation and/or other
14
// materials provided with the distribution.
15
//
16
// 3. Neither the name of the copyright holder nor the names of its contributors may be
17
// used to endorse or promote products derived from this software without specific
18
// prior written permission.
19
//
20
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
21
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
22
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
23
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
27
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
28
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
//
30
// Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers
31
32
#include "
chaingen.h
"
33
#include "
chaingen_tests_list.h
"
34
#include "
common/util.h
"
35
#include "
common/command_line.h
"
36
#include "
transaction_tests.h
"
37
38
namespace
po = boost::program_options;
39
40
namespace
41
{
42
const
command_line::arg_descriptor<std::string>
arg_test_data_path = {
"test_data_path"
,
""
,
""
};
43
const
command_line::arg_descriptor<bool>
arg_generate_test_data = {
"generate_test_data"
,
""
};
44
const
command_line::arg_descriptor<bool>
arg_play_test_data = {
"play_test_data"
,
""
};
45
const
command_line::arg_descriptor<bool>
arg_generate_and_play_test_data = {
"generate_and_play_test_data"
,
""
};
46
const
command_line::arg_descriptor<bool>
arg_test_transactions = {
"test_transactions"
,
""
};
47
const
command_line::arg_descriptor<std::string>
arg_filter = {
"filter"
,
"Regular expression filter for which tests to run"
};
48
const
command_line::arg_descriptor<bool>
arg_list_tests = {
"list_tests"
,
""
};
49
}
50
51
int
main
(
int
argc,
char
* argv[])
52
{
53
TRY_ENTRY
();
54
tools::on_startup
();
55
epee::string_tools::set_module_name_and_folder
(argv[0]);
56
57
//set up logging options
58
mlog_configure
(
mlog_get_default_log_path
(
"core_tests.log"
),
true
);
59
mlog_set_log_level
(2);
60
61
po::options_description desc_options(
"Allowed options"
);
62
command_line::add_arg
(desc_options,
command_line::arg_help
);
63
command_line::add_arg
(desc_options, arg_test_data_path);
64
command_line::add_arg
(desc_options, arg_generate_test_data);
65
command_line::add_arg
(desc_options, arg_play_test_data);
66
command_line::add_arg
(desc_options, arg_generate_and_play_test_data);
67
command_line::add_arg
(desc_options, arg_test_transactions);
68
command_line::add_arg
(desc_options, arg_filter);
69
command_line::add_arg
(desc_options, arg_list_tests);
70
71
po::variables_map vm;
72
bool
r =
command_line::handle_error_helper
(desc_options, [&]()
73
{
74
po::store(po::parse_command_line(argc, argv, desc_options), vm);
75
po::notify(vm);
76
return
true
;
77
});
78
if
(!r)
79
return
1;
80
81
if
(
command_line::get_arg
(vm,
command_line::arg_help
))
82
{
83
std::cout << desc_options << std::endl;
84
return
0;
85
}
86
87
const
std::string filter =
tools::glob_to_regex
(
command_line::get_arg
(vm, arg_filter));
88
boost::smatch match;
89
90
size_t
tests_count = 0;
91
std::vector<std::string> failed_tests;
92
std::string tests_folder =
command_line::get_arg
(vm, arg_test_data_path);
93
bool
list_tests =
false
;
94
if
(
command_line::get_arg
(vm, arg_generate_test_data))
95
{
96
GENERATE
(
"chain001.dat"
,
gen_simple_chain_001
);
97
}
98
else
if
(
command_line::get_arg
(vm, arg_play_test_data))
99
{
100
PLAY
(
"chain001.dat"
,
gen_simple_chain_001
);
101
}
102
else
if
(
command_line::get_arg
(vm, arg_generate_and_play_test_data) || (list_tests =
command_line::get_arg
(vm, arg_list_tests)))
103
{
104
GENERATE_AND_PLAY
(
gen_simple_chain_001
);
105
GENERATE_AND_PLAY
(
gen_simple_chain_split_1
);
106
GENERATE_AND_PLAY
(
one_block
);
107
GENERATE_AND_PLAY
(
gen_chain_switch_1
);
108
GENERATE_AND_PLAY
(
gen_ring_signature_1
);
109
GENERATE_AND_PLAY
(
gen_ring_signature_2
);
110
//GENERATE_AND_PLAY(gen_ring_signature_big); // Takes up to XXX hours (if CRYPTONOTE_MINED_ETN_UNLOCK_WINDOW == 10)
111
112
// Block verification tests
113
GENERATE_AND_PLAY
(
gen_block_big_major_version
);
114
GENERATE_AND_PLAY
(
gen_block_big_minor_version
);
115
GENERATE_AND_PLAY
(
gen_block_ts_not_checked
);
116
GENERATE_AND_PLAY
(
gen_block_ts_in_past
);
117
GENERATE_AND_PLAY
(
gen_block_ts_in_future
);
118
GENERATE_AND_PLAY
(
gen_block_invalid_prev_id
);
119
GENERATE_AND_PLAY
(
gen_block_invalid_nonce
);
120
GENERATE_AND_PLAY
(
gen_block_no_miner_tx
);
121
GENERATE_AND_PLAY
(
gen_block_unlock_time_is_low
);
122
GENERATE_AND_PLAY
(
gen_block_unlock_time_is_high
);
123
GENERATE_AND_PLAY
(
gen_block_unlock_time_is_timestamp_in_past
);
124
GENERATE_AND_PLAY
(
gen_block_unlock_time_is_timestamp_in_future
);
125
GENERATE_AND_PLAY
(
gen_block_height_is_low
);
126
GENERATE_AND_PLAY
(
gen_block_height_is_high
);
127
GENERATE_AND_PLAY
(
gen_block_miner_tx_has_2_tx_gen_in
);
128
GENERATE_AND_PLAY
(
gen_block_miner_tx_has_2_in
);
129
GENERATE_AND_PLAY
(
gen_block_miner_tx_with_txin_to_key
);
130
GENERATE_AND_PLAY
(
gen_block_miner_tx_out_is_small
);
131
GENERATE_AND_PLAY
(
gen_block_miner_tx_out_is_big
);
132
GENERATE_AND_PLAY
(
gen_block_miner_tx_has_no_out
);
133
GENERATE_AND_PLAY
(
gen_block_miner_tx_has_out_to_alice
);
134
GENERATE_AND_PLAY
(
gen_block_has_invalid_tx
);
135
GENERATE_AND_PLAY
(
gen_block_is_too_big
);
136
GENERATE_AND_PLAY
(
gen_block_invalid_binary_format
);
// Takes up to 3 hours, if CRYPTONOTE_MINED_ETN_UNLOCK_WINDOW == 500, up to 30 minutes, if CRYPTONOTE_MINED_ETN_UNLOCK_WINDOW == 10
137
138
// Transaction verification tests
139
GENERATE_AND_PLAY
(
gen_tx_big_version
);
140
GENERATE_AND_PLAY
(
gen_tx_unlock_time
);
141
GENERATE_AND_PLAY
(
gen_tx_input_is_not_txin_to_key
);
142
GENERATE_AND_PLAY
(
gen_tx_no_inputs_no_outputs
);
143
GENERATE_AND_PLAY
(
gen_tx_no_inputs_has_outputs
);
144
GENERATE_AND_PLAY
(
gen_tx_has_inputs_no_outputs
);
145
GENERATE_AND_PLAY
(
gen_tx_invalid_input_amount
);
146
GENERATE_AND_PLAY
(
gen_tx_input_wo_key_offsets
);
147
GENERATE_AND_PLAY
(
gen_tx_sender_key_offest_not_exist
);
148
GENERATE_AND_PLAY
(
gen_tx_key_offest_points_to_foreign_key
);
149
GENERATE_AND_PLAY
(
gen_tx_mixed_key_offest_not_exist
);
150
GENERATE_AND_PLAY
(
gen_tx_key_image_not_derive_from_tx_key
);
151
GENERATE_AND_PLAY
(
gen_tx_key_image_is_invalid
);
152
GENERATE_AND_PLAY
(
gen_tx_check_input_unlock_time
);
153
GENERATE_AND_PLAY
(
gen_tx_txout_to_key_has_invalid_key
);
154
GENERATE_AND_PLAY
(
gen_tx_output_with_zero_amount
);
155
GENERATE_AND_PLAY
(
gen_tx_output_is_not_txout_to_key
);
156
GENERATE_AND_PLAY
(
gen_tx_signatures_are_invalid
);
157
158
// Double spend
159
GENERATE_AND_PLAY
(
gen_double_spend_in_tx<false>
);
160
GENERATE_AND_PLAY
(
gen_double_spend_in_tx<true>
);
161
GENERATE_AND_PLAY
(
gen_double_spend_in_the_same_block<false>
);
162
GENERATE_AND_PLAY
(
gen_double_spend_in_the_same_block<true>
);
163
GENERATE_AND_PLAY
(
gen_double_spend_in_different_blocks<false>
);
164
GENERATE_AND_PLAY
(
gen_double_spend_in_different_blocks<true>
);
165
GENERATE_AND_PLAY
(
gen_double_spend_in_different_chains
);
166
GENERATE_AND_PLAY
(
gen_double_spend_in_alt_chain_in_the_same_block<false>
);
167
GENERATE_AND_PLAY
(
gen_double_spend_in_alt_chain_in_the_same_block<true>
);
168
GENERATE_AND_PLAY
(
gen_double_spend_in_alt_chain_in_different_blocks<false>
);
169
GENERATE_AND_PLAY
(
gen_double_spend_in_alt_chain_in_different_blocks<true>
);
170
171
// GENERATE_AND_PLAY(gen_uint_overflow_1);
172
// GENERATE_AND_PLAY(gen_uint_overflow_2);
173
174
GENERATE_AND_PLAY
(
gen_block_reward
);
175
176
GENERATE_AND_PLAY
(
gen_v2_tx_mixable_0_mixin
);
177
GENERATE_AND_PLAY
(
gen_v2_tx_mixable_low_mixin
);
178
// GENERATE_AND_PLAY(gen_v2_tx_unmixable_only);
179
// GENERATE_AND_PLAY(gen_v2_tx_unmixable_one);
180
// GENERATE_AND_PLAY(gen_v2_tx_unmixable_two);
181
GENERATE_AND_PLAY
(
gen_v2_tx_dust
);
182
183
GENERATE_AND_PLAY
(
gen_rct_tx_valid_from_pre_rct
);
184
GENERATE_AND_PLAY
(
gen_rct_tx_valid_from_rct
);
185
GENERATE_AND_PLAY
(
gen_rct_tx_valid_from_mixed
);
186
GENERATE_AND_PLAY
(
gen_rct_tx_pre_rct_bad_real_dest
);
187
GENERATE_AND_PLAY
(
gen_rct_tx_pre_rct_bad_real_mask
);
188
GENERATE_AND_PLAY
(
gen_rct_tx_pre_rct_bad_fake_dest
);
189
GENERATE_AND_PLAY
(
gen_rct_tx_pre_rct_bad_fake_mask
);
190
GENERATE_AND_PLAY
(
gen_rct_tx_rct_bad_real_dest
);
191
GENERATE_AND_PLAY
(
gen_rct_tx_rct_bad_real_mask
);
192
GENERATE_AND_PLAY
(
gen_rct_tx_rct_bad_fake_dest
);
193
GENERATE_AND_PLAY
(
gen_rct_tx_rct_bad_fake_mask
);
194
GENERATE_AND_PLAY
(
gen_rct_tx_rct_spend_with_zero_commit
);
195
GENERATE_AND_PLAY
(
gen_rct_tx_pre_rct_zero_vin_amount
);
196
GENERATE_AND_PLAY
(
gen_rct_tx_rct_non_zero_vin_amount
);
197
GENERATE_AND_PLAY
(
gen_rct_tx_non_zero_vout_amount
);
198
GENERATE_AND_PLAY
(
gen_rct_tx_pre_rct_duplicate_key_image
);
199
GENERATE_AND_PLAY
(
gen_rct_tx_rct_duplicate_key_image
);
200
GENERATE_AND_PLAY
(
gen_rct_tx_pre_rct_wrong_key_image
);
201
GENERATE_AND_PLAY
(
gen_rct_tx_rct_wrong_key_image
);
202
GENERATE_AND_PLAY
(
gen_rct_tx_pre_rct_wrong_fee
);
203
GENERATE_AND_PLAY
(
gen_rct_tx_rct_wrong_fee
);
204
GENERATE_AND_PLAY
(
gen_rct_tx_pre_rct_remove_vin
);
205
GENERATE_AND_PLAY
(
gen_rct_tx_rct_remove_vin
);
206
GENERATE_AND_PLAY
(
gen_rct_tx_pre_rct_add_vout
);
207
GENERATE_AND_PLAY
(
gen_rct_tx_rct_add_vout
);
208
GENERATE_AND_PLAY
(
gen_rct_tx_pre_rct_increase_vin_and_fee
);
209
GENERATE_AND_PLAY
(
gen_rct_tx_pre_rct_altered_extra
);
210
GENERATE_AND_PLAY
(
gen_rct_tx_rct_altered_extra
);
211
212
GENERATE_AND_PLAY
(
gen_multisig_tx_valid_22_1_2
);
213
GENERATE_AND_PLAY
(
gen_multisig_tx_valid_22_1_2_many_inputs
);
214
GENERATE_AND_PLAY
(
gen_multisig_tx_valid_22_2_1
);
215
GENERATE_AND_PLAY
(
gen_multisig_tx_valid_33_1_23
);
216
GENERATE_AND_PLAY
(
gen_multisig_tx_valid_33_3_21
);
217
GENERATE_AND_PLAY
(
gen_multisig_tx_valid_23_1_2
);
218
GENERATE_AND_PLAY
(
gen_multisig_tx_valid_23_1_3
);
219
GENERATE_AND_PLAY
(
gen_multisig_tx_valid_23_2_1
);
220
GENERATE_AND_PLAY
(
gen_multisig_tx_valid_23_2_3
);
221
GENERATE_AND_PLAY
(
gen_multisig_tx_valid_45_1_234
);
222
GENERATE_AND_PLAY
(
gen_multisig_tx_valid_45_4_135_many_inputs
);
223
GENERATE_AND_PLAY
(
gen_multisig_tx_valid_89_3_1245789
);
224
GENERATE_AND_PLAY
(
gen_multisig_tx_invalid_23_1__no_threshold
);
225
GENERATE_AND_PLAY
(
gen_multisig_tx_invalid_45_5_23_no_threshold
);
226
GENERATE_AND_PLAY
(
gen_multisig_tx_invalid_22_1__no_threshold
);
227
GENERATE_AND_PLAY
(
gen_multisig_tx_invalid_33_1__no_threshold
);
228
GENERATE_AND_PLAY
(
gen_multisig_tx_invalid_33_1_2_no_threshold
);
229
GENERATE_AND_PLAY
(
gen_multisig_tx_invalid_33_1_3_no_threshold
);
230
GENERATE_AND_PLAY
(
gen_multisig_tx_valid_24_1_2
);
231
GENERATE_AND_PLAY
(
gen_multisig_tx_valid_24_1_2_many_inputs
);
232
GENERATE_AND_PLAY
(
gen_multisig_tx_valid_25_1_2
);
233
GENERATE_AND_PLAY
(
gen_multisig_tx_valid_25_1_2_many_inputs
);
234
GENERATE_AND_PLAY
(
gen_multisig_tx_valid_48_1_234
);
235
GENERATE_AND_PLAY
(
gen_multisig_tx_valid_48_1_234_many_inputs
);
236
GENERATE_AND_PLAY
(
gen_multisig_tx_invalid_24_1_no_signers
);
237
GENERATE_AND_PLAY
(
gen_multisig_tx_invalid_25_1_no_signers
);
238
GENERATE_AND_PLAY
(
gen_multisig_tx_invalid_48_1_no_signers
);
239
GENERATE_AND_PLAY
(
gen_multisig_tx_invalid_48_1_23_no_threshold
);
240
241
GENERATE_AND_PLAY
(
gen_bp_tx_valid_1
);
242
GENERATE_AND_PLAY
(
gen_bp_tx_invalid_1_1
);
243
GENERATE_AND_PLAY
(
gen_bp_tx_valid_2
);
244
GENERATE_AND_PLAY
(
gen_bp_tx_valid_3
);
245
GENERATE_AND_PLAY
(
gen_bp_tx_valid_16
);
246
GENERATE_AND_PLAY
(
gen_bp_tx_invalid_4_2_1
);
247
GENERATE_AND_PLAY
(
gen_bp_tx_invalid_16_16
);
248
GENERATE_AND_PLAY
(
gen_bp_txs_valid_2_and_2
);
249
GENERATE_AND_PLAY
(
gen_bp_txs_invalid_2_and_8_2_and_16_16_1
);
250
GENERATE_AND_PLAY
(
gen_bp_txs_valid_2_and_3_and_2_and_4
);
251
GENERATE_AND_PLAY
(
gen_bp_tx_invalid_not_enough_proofs
);
252
GENERATE_AND_PLAY
(
gen_bp_tx_invalid_empty_proofs
);
253
GENERATE_AND_PLAY
(
gen_bp_tx_invalid_too_many_proofs
);
254
GENERATE_AND_PLAY
(
gen_bp_tx_invalid_wrong_amount
);
255
GENERATE_AND_PLAY
(
gen_bp_tx_invalid_borromean_type
);
256
257
el::Level
level = (failed_tests.empty() ?
el::Level::Info
:
el::Level::Error
);
258
if
(!list_tests)
259
{
260
MLOG
(level,
"\nREPORT:"
);
261
MLOG
(level,
" Test run: "
<< tests_count);
262
MLOG
(level,
" Failures: "
<< failed_tests.size());
263
}
264
if
(!failed_tests.empty())
265
{
266
MLOG
(level,
"FAILED TESTS:"
);
267
BOOST_FOREACH(
auto
test_name, failed_tests)
268
{
269
MLOG
(level,
" "
<< test_name);
270
}
271
}
272
}
273
else
if
(
command_line::get_arg
(vm, arg_test_transactions))
274
{
275
CALL_TEST
(
"TRANSACTIONS TESTS"
,
test_transactions
);
276
}
277
else
278
{
279
MERROR
(
"Wrong arguments"
);
280
return
2;
281
}
282
283
return
failed_tests.empty() ? 0 : 1;
284
285
CATCH_ENTRY_L0
(
"main"
, 1);
286
}
main
int main()
Definition
archivertest.cpp:283
chaingen.h
GENERATE_AND_PLAY
#define GENERATE_AND_PLAY(genclass)
Definition
chaingen.h:1013
CALL_TEST
#define CALL_TEST(test_name, function)
Definition
chaingen.h:1042
GENERATE
#define GENERATE(filename, genclass)
Definition
chaingen.h:953
PLAY
#define PLAY(filename, genclass)
Definition
chaingen.h:966
chaingen_tests_list.h
gen_chain_switch_1
Definition
chain_switch_1.h:39
gen_double_spend_in_different_chains
Definition
double_spend.h:128
gen_ring_signature_1
Definition
ring_signature_1.h:39
gen_ring_signature_2
Definition
ring_signature_1.h:58
gen_simple_chain_001
Definition
chaingen_tests_list.h:51
gen_simple_chain_split_1
Definition
chain_split_1.h:39
one_block
Definition
chaingen_tests_list.h:60
command_line.h
MERROR
#define MERROR(x)
Definition
misc_log_ex.h:73
mlog_configure
void mlog_configure(const std::string &filename_base, bool console, const std::size_t max_log_file_size=MAX_LOG_FILE_SIZE, const std::size_t max_log_files=MAX_LOG_FILES)
Definition
mlog.cpp:148
mlog_get_default_log_path
std::string mlog_get_default_log_path(const char *default_filename)
Definition
mlog.cpp:72
mlog_set_log_level
void mlog_set_log_level(int level)
Definition
mlog.cpp:282
MLOG
#define MLOG(level, x)
Definition
misc_log_ex.h:78
CATCH_ENTRY_L0
#define CATCH_ENTRY_L0(lacation, return_val)
Definition
misc_log_ex.h:165
TRY_ENTRY
#define TRY_ENTRY()
Definition
misc_log_ex.h:151
command_line::add_arg
void add_arg(boost::program_options::options_description &description, const arg_descriptor< T, required, dependent, NUM_DEPS > &arg, bool unique=true)
Definition
command_line.h:188
command_line::arg_help
const arg_descriptor< bool > arg_help
Definition
command_line.cpp:76
command_line::handle_error_helper
bool handle_error_helper(const boost::program_options::options_description &desc, F parser)
Definition
command_line.h:237
command_line::get_arg
T get_arg(const boost::program_options::variables_map &vm, const arg_descriptor< T, false, true > &arg)
Definition
command_line.h:271
el::Level
Level
Represents enumeration for severity level used to determine level of logging.
Definition
easylogging++.h:585
el::Level::Info
@ Info
Mainly useful to represent current progress of application.
Definition
easylogging++.h:601
el::Level::Error
@ Error
Information representing errors in application but application will keep running.
Definition
easylogging++.h:595
epee::string_tools::set_module_name_and_folder
bool set_module_name_and_folder(const std::string &path_to_process_)
Definition
string_tools.h:249
tools::glob_to_regex
std::string glob_to_regex(const std::string &val)
Definition
util.cpp:1012
tools::on_startup
bool on_startup()
Definition
util.cpp:778
util.h
command_line::arg_descriptor
Definition
command_line.h:54
gen_block_big_major_version
Definition
block_validation.h:84
gen_block_big_minor_version
Definition
block_validation.h:89
gen_block_has_invalid_tx
Definition
block_validation.h:190
gen_block_height_is_high
Definition
block_validation.h:150
gen_block_height_is_low
Definition
block_validation.h:145
gen_block_invalid_binary_format
Definition
block_validation.h:200
gen_block_invalid_nonce
Definition
block_validation.h:115
gen_block_invalid_prev_id
Definition
block_validation.h:109
gen_block_is_too_big
Definition
block_validation.h:195
gen_block_miner_tx_has_2_in
Definition
block_validation.h:160
gen_block_miner_tx_has_2_tx_gen_in
Definition
block_validation.h:155
gen_block_miner_tx_has_no_out
Definition
block_validation.h:180
gen_block_miner_tx_has_out_to_alice
Definition
block_validation.h:185
gen_block_miner_tx_out_is_big
Definition
block_validation.h:175
gen_block_miner_tx_out_is_small
Definition
block_validation.h:170
gen_block_miner_tx_with_txin_to_key
Definition
block_validation.h:165
gen_block_no_miner_tx
Definition
block_validation.h:120
gen_block_reward
Definition
block_reward.h:36
gen_block_ts_in_future
Definition
block_validation.h:104
gen_block_ts_in_past
Definition
block_validation.h:99
gen_block_ts_not_checked
Definition
block_validation.h:94
gen_block_unlock_time_is_high
Definition
block_validation.h:130
gen_block_unlock_time_is_low
Definition
block_validation.h:125
gen_block_unlock_time_is_timestamp_in_future
Definition
block_validation.h:140
gen_block_unlock_time_is_timestamp_in_past
Definition
block_validation.h:135
gen_bp_tx_invalid_16_16
Definition
bulletproofs.h:142
gen_bp_tx_invalid_1_1
Definition
bulletproofs.h:112
gen_bp_tx_invalid_4_2_1
Definition
bulletproofs.h:136
gen_bp_tx_invalid_borromean_type
Definition
bulletproofs.h:190
gen_bp_tx_invalid_empty_proofs
Definition
bulletproofs.h:172
gen_bp_tx_invalid_not_enough_proofs
Definition
bulletproofs.h:166
gen_bp_tx_invalid_too_many_proofs
Definition
bulletproofs.h:178
gen_bp_tx_invalid_wrong_amount
Definition
bulletproofs.h:184
gen_bp_tx_valid_16
Definition
bulletproofs.h:130
gen_bp_tx_valid_1
Definition
bulletproofs.h:106
gen_bp_tx_valid_2
Definition
bulletproofs.h:118
gen_bp_tx_valid_3
Definition
bulletproofs.h:124
gen_bp_txs_invalid_2_and_8_2_and_16_16_1
Definition
bulletproofs.h:154
gen_bp_txs_valid_2_and_2
Definition
bulletproofs.h:148
gen_bp_txs_valid_2_and_3_and_2_and_4
Definition
bulletproofs.h:160
gen_double_spend_in_alt_chain_in_different_blocks
Definition
double_spend.h:116
gen_double_spend_in_alt_chain_in_the_same_block
Definition
double_spend.h:103
gen_double_spend_in_different_blocks
Definition
double_spend.h:90
gen_double_spend_in_the_same_block
Definition
double_spend.h:77
gen_double_spend_in_tx
Definition
double_spend.h:64
gen_multisig_tx_invalid_22_1__no_threshold
Definition
multisig.h:202
gen_multisig_tx_invalid_23_1__no_threshold
Definition
multisig.h:226
gen_multisig_tx_invalid_24_1_no_signers
Definition
multisig.h:238
gen_multisig_tx_invalid_25_1_no_signers
Definition
multisig.h:244
gen_multisig_tx_invalid_33_1_2_no_threshold
Definition
multisig.h:214
gen_multisig_tx_invalid_33_1_3_no_threshold
Definition
multisig.h:220
gen_multisig_tx_invalid_33_1__no_threshold
Definition
multisig.h:208
gen_multisig_tx_invalid_45_5_23_no_threshold
Definition
multisig.h:232
gen_multisig_tx_invalid_48_1_23_no_threshold
Definition
multisig.h:256
gen_multisig_tx_invalid_48_1_no_signers
Definition
multisig.h:250
gen_multisig_tx_valid_22_1_2_many_inputs
Definition
multisig.h:99
gen_multisig_tx_valid_22_1_2
Definition
multisig.h:93
gen_multisig_tx_valid_22_2_1
Definition
multisig.h:105
gen_multisig_tx_valid_23_1_2
Definition
multisig.h:123
gen_multisig_tx_valid_23_1_3
Definition
multisig.h:129
gen_multisig_tx_valid_23_2_1
Definition
multisig.h:135
gen_multisig_tx_valid_23_2_3
Definition
multisig.h:141
gen_multisig_tx_valid_24_1_2_many_inputs
Definition
multisig.h:171
gen_multisig_tx_valid_24_1_2
Definition
multisig.h:165
gen_multisig_tx_valid_25_1_2_many_inputs
Definition
multisig.h:183
gen_multisig_tx_valid_25_1_2
Definition
multisig.h:177
gen_multisig_tx_valid_33_1_23
Definition
multisig.h:111
gen_multisig_tx_valid_33_3_21
Definition
multisig.h:117
gen_multisig_tx_valid_45_1_234
Definition
multisig.h:147
gen_multisig_tx_valid_45_4_135_many_inputs
Definition
multisig.h:153
gen_multisig_tx_valid_48_1_234_many_inputs
Definition
multisig.h:195
gen_multisig_tx_valid_48_1_234
Definition
multisig.h:189
gen_multisig_tx_valid_89_3_1245789
Definition
multisig.h:159
gen_rct_tx_non_zero_vout_amount
Definition
rct.h:179
gen_rct_tx_pre_rct_add_vout
Definition
rct.h:242
gen_rct_tx_pre_rct_altered_extra
Definition
rct.h:255
gen_rct_tx_pre_rct_bad_fake_dest
Definition
rct.h:124
gen_rct_tx_pre_rct_bad_fake_mask
Definition
rct.h:130
gen_rct_tx_pre_rct_bad_real_dest
Definition
rct.h:112
gen_rct_tx_pre_rct_bad_real_mask
Definition
rct.h:118
gen_rct_tx_pre_rct_duplicate_key_image
Definition
rct.h:186
gen_rct_tx_pre_rct_increase_vin_and_fee
Definition
rct.h:223
gen_rct_tx_pre_rct_remove_vin
Definition
rct.h:230
gen_rct_tx_pre_rct_wrong_fee
Definition
rct.h:211
gen_rct_tx_pre_rct_wrong_key_image
Definition
rct.h:198
gen_rct_tx_pre_rct_zero_vin_amount
Definition
rct.h:167
gen_rct_tx_rct_add_vout
Definition
rct.h:248
gen_rct_tx_rct_altered_extra
Definition
rct.h:261
gen_rct_tx_rct_bad_fake_dest
Definition
rct.h:148
gen_rct_tx_rct_bad_fake_mask
Definition
rct.h:154
gen_rct_tx_rct_bad_real_dest
Definition
rct.h:136
gen_rct_tx_rct_bad_real_mask
Definition
rct.h:142
gen_rct_tx_rct_duplicate_key_image
Definition
rct.h:192
gen_rct_tx_rct_non_zero_vin_amount
Definition
rct.h:173
gen_rct_tx_rct_remove_vin
Definition
rct.h:236
gen_rct_tx_rct_spend_with_zero_commit
Definition
rct.h:160
gen_rct_tx_rct_wrong_fee
Definition
rct.h:217
gen_rct_tx_rct_wrong_key_image
Definition
rct.h:204
gen_rct_tx_valid_from_mixed
Definition
rct.h:105
gen_rct_tx_valid_from_pre_rct
Definition
rct.h:93
gen_rct_tx_valid_from_rct
Definition
rct.h:99
gen_tx_big_version
Definition
tx_validation.h:79
gen_tx_check_input_unlock_time
Definition
tx_validation.h:144
gen_tx_has_inputs_no_outputs
Definition
tx_validation.h:104
gen_tx_input_is_not_txin_to_key
Definition
tx_validation.h:89
gen_tx_input_wo_key_offsets
Definition
tx_validation.h:114
gen_tx_invalid_input_amount
Definition
tx_validation.h:109
gen_tx_key_image_is_invalid
Definition
tx_validation.h:139
gen_tx_key_image_not_derive_from_tx_key
Definition
tx_validation.h:134
gen_tx_key_offest_points_to_foreign_key
Definition
tx_validation.h:119
gen_tx_mixed_key_offest_not_exist
Definition
tx_validation.h:129
gen_tx_no_inputs_has_outputs
Definition
tx_validation.h:99
gen_tx_no_inputs_no_outputs
Definition
tx_validation.h:94
gen_tx_output_is_not_txout_to_key
Definition
tx_validation.h:159
gen_tx_output_with_zero_amount
Definition
tx_validation.h:154
gen_tx_sender_key_offest_not_exist
Definition
tx_validation.h:124
gen_tx_signatures_are_invalid
Definition
tx_validation.h:164
gen_tx_txout_to_key_has_invalid_key
Definition
tx_validation.h:149
gen_tx_unlock_time
Definition
tx_validation.h:84
gen_v2_tx_dust
Definition
v2_tests.h:120
gen_v2_tx_mixable_0_mixin
Definition
v2_tests.h:90
gen_v2_tx_mixable_low_mixin
Definition
v2_tests.h:96
test_transactions
bool test_transactions()
Definition
transaction_tests.cpp:148
transaction_tests.h
tests
core_tests
chaingen_main.cpp
Generated on
for Electroneum by
1.17.0