Monero
Loading...
Searching...
No Matches
verification_context.h
Go to the documentation of this file.
1// Copyright (c) 2014-2022, The Monero Project
2//
3// All rights reserved.
4//
5// Redistribution and use in source and binary forms, with or without modification, are
6// permitted provided that the following conditions are met:
7//
8// 1. Redistributions of source code must retain the above copyright notice, this list of
9// conditions and the following disclaimer.
10//
11// 2. Redistributions in binary form must reproduce the above copyright notice, this list
12// of conditions and the following disclaimer in the documentation and/or other
13// materials provided with the distribution.
14//
15// 3. Neither the name of the copyright holder nor the names of its contributors may be
16// used to endorse or promote products derived from this software without specific
17// prior written permission.
18//
19// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
20// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
22// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
27// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28//
29// Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers
30
31#pragma once
32
34
35namespace cryptonote
36{
37 /************************************************************************/
38 /* */
39 /************************************************************************/
41 {
42 static_assert(unsigned(relay_method::none) == 0, "default m_relay initialization is not to relay_method::none");
43
44 relay_method m_relay; // gives indication on how tx should be relayed (if at all)
45 bool m_verifivation_failed; //bad tx, tx should not enter mempool and connection should be dropped unless m_no_drop_offense
46 // Do not add to mempool, do not relay, but also do not punish the peer for sending or drop
47 // connections to them. Used for low fees, tx_extra too big, "relay-only rules". Not to be
48 // confused with breaking soft fork rules, because tx could be later added to the chain if mined
49 // because it does not violate consensus rules.
51 bool m_verifivation_impossible; //the transaction is related with an alternative blockchain
63 };
64
66 {
68 bool m_verifivation_failed; //bad block, should drop connection
72 bool m_bad_pow; // if bad pow, ban peer outright for DoS protection
73 bool m_missing_txs; // set if, during verif, we don't have all the necessary txs available
74 };
75}
Holds cryptonote related classes and helpers.
Definition blockchain_db.cpp:45
relay_method
Methods tracking how a tx was received and relayed.
Definition enums.h:37
@ none
Received via RPC with do_not_relay set.
Definition enums.h:38
Definition verification_context.h:66
bool m_verifivation_failed
Definition verification_context.h:68
bool m_bad_pow
Definition verification_context.h:72
bool m_added_to_main_chain
Definition verification_context.h:67
bool m_already_exists
Definition verification_context.h:70
bool m_marked_as_orphaned
Definition verification_context.h:69
bool m_missing_txs
Definition verification_context.h:73
bool m_partial_block_reward
Definition verification_context.h:71
Definition verification_context.h:41
bool m_invalid_output
Definition verification_context.h:56
bool m_fee_too_low
Definition verification_context.h:59
bool m_invalid_input
Definition verification_context.h:55
bool m_too_big
Definition verification_context.h:57
bool m_too_few_outputs
Definition verification_context.h:60
bool m_low_mixin
Definition verification_context.h:53
bool m_verifivation_impossible
Definition verification_context.h:51
bool m_overspend
Definition verification_context.h:58
bool m_nonzero_unlock_time
Definition verification_context.h:62
bool m_double_spend
Definition verification_context.h:54
relay_method m_relay
Definition verification_context.h:44
bool m_tx_extra_too_big
Definition verification_context.h:61
bool m_no_drop_offense
Definition verification_context.h:50
bool m_verifivation_failed
Definition verification_context.h:45
bool m_added_to_pool
Definition verification_context.h:52