Electroneum
Toggle main menu visibility
Loading...
Searching...
No Matches
tx_validation.h
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
#pragma once
33
#include "
chaingen.h
"
34
35
struct
get_tx_validation_base
:
public
test_chain_unit_base
36
{
37
get_tx_validation_base
()
38
: m_invalid_tx_index(0)
39
, m_invalid_block_index(0)
40
{
41
REGISTER_CALLBACK_METHOD
(
get_tx_validation_base
,
mark_invalid_tx
);
42
REGISTER_CALLBACK_METHOD
(
get_tx_validation_base
,
mark_invalid_block
);
43
}
44
45
bool
check_tx_verification_context
(
const
cryptonote::tx_verification_context
& tvc,
bool
tx_added,
size_t
event_idx,
const
cryptonote::transaction
&
/*tx*/
)
46
{
47
if
(m_invalid_tx_index == event_idx)
48
return
tvc.
m_verification_failed
;
49
else
50
return
!tvc.
m_verification_failed
&& tx_added;
51
}
52
53
bool
check_block_verification_context
(
const
cryptonote::block_verification_context
& bvc,
size_t
event_idx,
const
cryptonote::block
&
/*block*/
)
54
{
55
if
(m_invalid_block_index == event_idx)
56
return
bvc.
m_verification_failed
;
57
else
58
return
!bvc.
m_verification_failed
;
59
}
60
61
bool
mark_invalid_block
(
cryptonote::core
&
/*c*/
,
size_t
ev_index,
const
std::vector<test_event_entry>&
/*events*/
)
62
{
63
m_invalid_block_index = ev_index + 1;
64
return
true
;
65
}
66
67
bool
mark_invalid_tx
(
cryptonote::core
&
/*c*/
,
size_t
ev_index,
const
std::vector<test_event_entry>&
/*events*/
)
68
{
69
m_invalid_tx_index = ev_index + 1;
70
return
true
;
71
}
72
73
private
:
74
size_t
m_invalid_tx_index;
75
size_t
m_invalid_block_index;
76
};
77
78
struct
gen_tx_big_version
:
public
get_tx_validation_base
79
{
80
bool
generate
(std::vector<test_event_entry>& events)
const
;
81
};
82
83
struct
gen_tx_unlock_time
:
public
get_tx_validation_base
84
{
85
bool
generate
(std::vector<test_event_entry>& events)
const
;
86
};
87
88
struct
gen_tx_input_is_not_txin_to_key
:
public
get_tx_validation_base
89
{
90
bool
generate
(std::vector<test_event_entry>& events)
const
;
91
};
92
93
struct
gen_tx_no_inputs_no_outputs
:
public
get_tx_validation_base
94
{
95
bool
generate
(std::vector<test_event_entry>& events)
const
;
96
};
97
98
struct
gen_tx_no_inputs_has_outputs
:
public
get_tx_validation_base
99
{
100
bool
generate
(std::vector<test_event_entry>& events)
const
;
101
};
102
103
struct
gen_tx_has_inputs_no_outputs
:
public
get_tx_validation_base
104
{
105
bool
generate
(std::vector<test_event_entry>& events)
const
;
106
};
107
108
struct
gen_tx_invalid_input_amount
:
public
get_tx_validation_base
109
{
110
bool
generate
(std::vector<test_event_entry>& events)
const
;
111
};
112
113
struct
gen_tx_input_wo_key_offsets
:
public
get_tx_validation_base
114
{
115
bool
generate
(std::vector<test_event_entry>& events)
const
;
116
};
117
118
struct
gen_tx_key_offest_points_to_foreign_key
:
public
get_tx_validation_base
119
{
120
bool
generate
(std::vector<test_event_entry>& events)
const
;
121
};
122
123
struct
gen_tx_sender_key_offest_not_exist
:
public
get_tx_validation_base
124
{
125
bool
generate
(std::vector<test_event_entry>& events)
const
;
126
};
127
128
struct
gen_tx_mixed_key_offest_not_exist
:
public
get_tx_validation_base
129
{
130
bool
generate
(std::vector<test_event_entry>& events)
const
;
131
};
132
133
struct
gen_tx_key_image_not_derive_from_tx_key
:
public
get_tx_validation_base
134
{
135
bool
generate
(std::vector<test_event_entry>& events)
const
;
136
};
137
138
struct
gen_tx_key_image_is_invalid
:
public
get_tx_validation_base
139
{
140
bool
generate
(std::vector<test_event_entry>& events)
const
;
141
};
142
143
struct
gen_tx_check_input_unlock_time
:
public
get_tx_validation_base
144
{
145
bool
generate
(std::vector<test_event_entry>& events)
const
;
146
};
147
148
struct
gen_tx_txout_to_key_has_invalid_key
:
public
get_tx_validation_base
149
{
150
bool
generate
(std::vector<test_event_entry>& events)
const
;
151
};
152
153
struct
gen_tx_output_with_zero_amount
:
public
get_tx_validation_base
154
{
155
bool
generate
(std::vector<test_event_entry>& events)
const
;
156
};
157
158
struct
gen_tx_output_is_not_txout_to_key
:
public
get_tx_validation_base
159
{
160
bool
generate
(std::vector<test_event_entry>& events)
const
;
161
};
162
163
struct
gen_tx_signatures_are_invalid
:
public
get_tx_validation_base
164
{
165
bool
generate
(std::vector<test_event_entry>& events)
const
;
166
};
chaingen.h
REGISTER_CALLBACK_METHOD
#define REGISTER_CALLBACK_METHOD(CLASS, METHOD)
Definition
chaingen.h:830
cryptonote::core
handles core cryptonote functionality
Definition
cryptonote_core.h:86
cryptonote::transaction
Definition
cryptonote_basic.h:298
test_chain_unit_base
Definition
chaingen.h:166
cryptonote::block_verification_context
Definition
verification_context.h:60
cryptonote::block_verification_context::m_verification_failed
bool m_verification_failed
Definition
verification_context.h:62
cryptonote::block
Definition
cryptonote_basic.h:464
cryptonote::tx_verification_context
Definition
verification_context.h:39
cryptonote::tx_verification_context::m_verification_failed
bool m_verification_failed
Definition
verification_context.h:41
gen_tx_big_version
Definition
tx_validation.h:79
gen_tx_big_version::generate
bool generate(std::vector< test_event_entry > &events) const
Definition
tx_validation.cpp:185
gen_tx_check_input_unlock_time
Definition
tx_validation.h:144
gen_tx_check_input_unlock_time::generate
bool generate(std::vector< test_event_entry > &events) const
Definition
tx_validation.cpp:574
gen_tx_has_inputs_no_outputs
Definition
tx_validation.h:104
gen_tx_has_inputs_no_outputs::generate
bool generate(std::vector< test_event_entry > &events) const
Definition
tx_validation.cpp:325
gen_tx_input_is_not_txin_to_key
Definition
tx_validation.h:89
gen_tx_input_is_not_txin_to_key::generate
bool generate(std::vector< test_event_entry > &events) const
Definition
tx_validation.cpp:252
gen_tx_input_wo_key_offsets
Definition
tx_validation.h:114
gen_tx_input_wo_key_offsets::generate
bool generate(std::vector< test_event_entry > &events) const
Definition
tx_validation.cpp:377
gen_tx_invalid_input_amount
Definition
tx_validation.h:109
gen_tx_invalid_input_amount::generate
bool generate(std::vector< test_event_entry > &events) const
Definition
tx_validation.cpp:351
gen_tx_key_image_is_invalid
Definition
tx_validation.h:139
gen_tx_key_image_is_invalid::generate
bool generate(std::vector< test_event_entry > &events) const
Definition
tx_validation.cpp:541
gen_tx_key_image_not_derive_from_tx_key
Definition
tx_validation.h:134
gen_tx_key_image_not_derive_from_tx_key::generate
bool generate(std::vector< test_event_entry > &events) const
Definition
tx_validation.cpp:505
gen_tx_key_offest_points_to_foreign_key
Definition
tx_validation.h:119
gen_tx_key_offest_points_to_foreign_key::generate
bool generate(std::vector< test_event_entry > &events) const
Definition
tx_validation.cpp:408
gen_tx_mixed_key_offest_not_exist
Definition
tx_validation.h:129
gen_tx_mixed_key_offest_not_exist::generate
bool generate(std::vector< test_event_entry > &events) const
Definition
tx_validation.cpp:472
gen_tx_no_inputs_has_outputs
Definition
tx_validation.h:99
gen_tx_no_inputs_has_outputs::generate
bool generate(std::vector< test_event_entry > &events) const
Definition
tx_validation.cpp:304
gen_tx_no_inputs_no_outputs
Definition
tx_validation.h:94
gen_tx_no_inputs_no_outputs::generate
bool generate(std::vector< test_event_entry > &events) const
Definition
tx_validation.cpp:288
gen_tx_output_is_not_txout_to_key
Definition
tx_validation.h:159
gen_tx_output_is_not_txout_to_key::generate
bool generate(std::vector< test_event_entry > &events) const
Definition
tx_validation.cpp:692
gen_tx_output_with_zero_amount
Definition
tx_validation.h:154
gen_tx_output_with_zero_amount::generate
bool generate(std::vector< test_event_entry > &events) const
Definition
tx_validation.cpp:664
gen_tx_sender_key_offest_not_exist
Definition
tx_validation.h:124
gen_tx_sender_key_offest_not_exist::generate
bool generate(std::vector< test_event_entry > &events) const
Definition
tx_validation.cpp:445
gen_tx_signatures_are_invalid
Definition
tx_validation.h:164
gen_tx_signatures_are_invalid::generate
bool generate(std::vector< test_event_entry > &events) const
Definition
tx_validation.cpp:734
gen_tx_txout_to_key_has_invalid_key
Definition
tx_validation.h:149
gen_tx_txout_to_key_has_invalid_key::generate
bool generate(std::vector< test_event_entry > &events) const
Definition
tx_validation.cpp:635
gen_tx_unlock_time
Definition
tx_validation.h:84
gen_tx_unlock_time::generate
bool generate(std::vector< test_event_entry > &events) const
Definition
tx_validation.cpp:210
get_tx_validation_base::check_tx_verification_context
bool check_tx_verification_context(const cryptonote::tx_verification_context &tvc, bool tx_added, size_t event_idx, const cryptonote::transaction &)
Definition
tx_validation.h:45
get_tx_validation_base::mark_invalid_tx
bool mark_invalid_tx(cryptonote::core &, size_t ev_index, const std::vector< test_event_entry > &)
Definition
tx_validation.h:67
get_tx_validation_base::mark_invalid_block
bool mark_invalid_block(cryptonote::core &, size_t ev_index, const std::vector< test_event_entry > &)
Definition
tx_validation.h:61
get_tx_validation_base::get_tx_validation_base
get_tx_validation_base()
Definition
tx_validation.h:37
get_tx_validation_base::check_block_verification_context
bool check_block_verification_context(const cryptonote::block_verification_context &bvc, size_t event_idx, const cryptonote::block &)
Definition
tx_validation.h:53
tests
core_tests
tx_validation.h
Generated on
for Electroneum by
1.17.0