Bitcoin ABC 0.34.2
P2P Digital Currency
policy.h
Go to the documentation of this file.
1// Copyright (c) 2009-2010 Satoshi Nakamoto
2// Copyright (c) 2009-2016 The Bitcoin 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 BITCOIN_POLICY_POLICY_H
7#define BITCOIN_POLICY_POLICY_H
8
10#include <feerate.h>
11#include <script/script_flags.h>
12
13#include <optional>
14#include <string>
15
16class CCoinsViewCache;
17class CScript;
18class CTransaction;
19class CTxIn;
20class CTxOut;
21enum class TxoutType;
22
27static constexpr uint64_t DEFAULT_MAX_GENERATED_BLOCK_SIZE{16 * ONE_MEGABYTE};
36static constexpr unsigned int MAX_STANDARD_TX_SIZE{100000};
37
46static constexpr unsigned int MAX_TX_IN_SCRIPT_SIG_SIZE{1650};
47
56static constexpr unsigned int DEFAULT_BYTES_PER_SIGCHECK{50};
58static constexpr bool DEFAULT_PERMIT_BAREMULTISIG{true};
66static constexpr Amount DUST_RELAY_TX_FEE(3000 * SATOSHI);
67
70
72static constexpr bool DEFAULT_ACCEPT_DATACARRIER{true};
77static constexpr unsigned int MAX_OP_RETURN_RELAY{223};
78
84static constexpr uint32_t MANDATORY_SCRIPT_VERIFY_FLAGS{
89
101static constexpr uint32_t STANDARD_SCRIPT_VERIFY_FLAGS{
107
111static constexpr uint32_t STANDARD_NOT_MANDATORY_VERIFY_FLAGS{
112 STANDARD_SCRIPT_VERIFY_FLAGS & ~MANDATORY_SCRIPT_VERIFY_FLAGS};
113
118static constexpr uint32_t STANDARD_LOCKTIME_VERIFY_FLAGS{
120
121Amount GetDustThreshold(const CTxOut &txout, const CFeeRate &dustRelayFee);
122
123bool IsDust(const CTxOut &txout, const CFeeRate &dustRelayFee);
124
126 const std::optional<unsigned> &max_datacarrier_bytes,
127 TxoutType &whichType);
128
134bool IsStandardTx(const CTransaction &tx,
135 const std::optional<unsigned> &max_datacarrier_bytes,
136 bool permit_bare_multisig, const CFeeRate &dust_relay_fee,
137 std::string &reason);
138
145bool AreInputsStandard(const CTransaction &tx, const CCoinsViewCache &mapInputs,
146 uint32_t flags);
147
152int64_t GetVirtualTransactionSize(int64_t nSize, int64_t nSigChecks,
153 unsigned int bytes_per_sigCheck);
154int64_t GetVirtualTransactionSize(const CTransaction &tx, int64_t nSigChecks,
155 unsigned int bytes_per_sigCheck);
156int64_t GetVirtualTransactionInputSize(const CTxIn &txin, int64_t nSigChecks,
157 unsigned int bytes_per_sigChecks);
158
159static inline int64_t GetVirtualTransactionSize(const CTransaction &tx) {
160 return GetVirtualTransactionSize(tx, 0, 0);
161}
162
163static inline int64_t GetVirtualTransactionInputSize(const CTxIn &tx) {
164 return GetVirtualTransactionInputSize(tx, 0, 0);
165}
166
167#endif // BITCOIN_POLICY_POLICY_H
static constexpr Amount SATOSHI
Definition: amount.h:153
int flags
Definition: bitcoin-tx.cpp:544
CCoinsView that adds a memory cache for transactions to another CCoinsView.
Definition: coins.h:357
Fee rate in satoshis per virtualbyte: Amount / vB the feerate is represented internally as FeeFrac.
Definition: feerate.h:24
Serialized script, used inside transaction inputs and outputs.
Definition: script.h:434
The basic transaction that is broadcasted on the network and contained in blocks.
Definition: transaction.h:192
An input of a transaction.
Definition: transaction.h:59
An output of a transaction.
Definition: transaction.h:128
CScript scriptPubKey
Definition: transaction.h:131
static constexpr unsigned int LOCKTIME_VERIFY_SEQUENCE
Flags for nSequence and nLockTime locks.
Definition: consensus.h:38
static const uint64_t ONE_MEGABYTE
1MB
Definition: consensus.h:12
unsigned int nSigChecks
static constexpr uint32_t MANDATORY_SCRIPT_VERIFY_FLAGS
When transactions fail script evaluations under standard flags, this flagset influences the decision ...
Definition: policy.h:84
static constexpr unsigned int MAX_STANDARD_TX_SIZE
The maximum size for transactions we're willing to relay/mine.
Definition: policy.h:36
static constexpr unsigned int MAX_TX_IN_SCRIPT_SIG_SIZE
Biggest 'standard' txin is a 15-of-15 P2SH multisig with compressed keys (remember the 520 byte limit...
Definition: policy.h:46
static const CFeeRate MEMPOOL_FULL_FEE_INCREMENT(1000 *SATOSHI)
Default for -incrementalrelayfee, which sets the minimum feerate increase for mempool limiting or BIP...
static constexpr uint64_t DEFAULT_MAX_GENERATED_BLOCK_SIZE
Default for -blockmaxsize, which controls the maximum size of block the mining code will create.
Definition: policy.h:27
static constexpr unsigned int MAX_OP_RETURN_RELAY
Default setting for nMaxDatacarrierBytes.
Definition: policy.h:77
bool IsStandard(const CScript &scriptPubKey, const std::optional< unsigned > &max_datacarrier_bytes, TxoutType &whichType)
Definition: policy.cpp:40
bool AreInputsStandard(const CTransaction &tx, const CCoinsViewCache &mapInputs, uint32_t flags)
Check for standard transaction types.
Definition: policy.cpp:147
static constexpr Amount DUST_RELAY_TX_FEE(3000 *SATOSHI)
Min feerate for defining dust.
static constexpr bool DEFAULT_PERMIT_BAREMULTISIG
Default for -permitbaremultisig.
Definition: policy.h:58
static constexpr bool DEFAULT_ACCEPT_DATACARRIER
Default for -datacarrier.
Definition: policy.h:72
static constexpr Amount DEFAULT_MIN_RELAY_TX_FEE_PER_KB(1000 *SATOSHI)
Default for -minrelaytxfee, minimum relay fee for transactions.
static constexpr unsigned int DEFAULT_BYTES_PER_SIGCHECK
Default for -bytespersigcheck .
Definition: policy.h:56
int64_t GetVirtualTransactionInputSize(const CTxIn &txin, int64_t nSigChecks, unsigned int bytes_per_sigChecks)
Definition: policy.cpp:178
static constexpr uint32_t STANDARD_SCRIPT_VERIFY_FLAGS
Standard script verification flags that standard transactions will comply with.
Definition: policy.h:101
bool IsDust(const CTxOut &txout, const CFeeRate &dustRelayFee)
Definition: policy.cpp:36
bool IsStandardTx(const CTransaction &tx, const std::optional< unsigned > &max_datacarrier_bytes, bool permit_bare_multisig, const CFeeRate &dust_relay_fee, std::string &reason)
Check for standard transaction types.
Definition: policy.cpp:68
Amount GetDustThreshold(const CTxOut &txout, const CFeeRate &dustRelayFee)
Definition: policy.cpp:14
static constexpr Amount DEFAULT_BLOCK_MIN_TX_FEE_PER_KB(1000 *SATOSHI)
Default for -blockmintxfee, which sets the minimum feerate for a transaction in blocks created by min...
static constexpr uint32_t STANDARD_LOCKTIME_VERIFY_FLAGS
Used as the flags parameter to sequence and nLocktime checks in non-consensus code.
Definition: policy.h:118
static constexpr uint32_t STANDARD_NOT_MANDATORY_VERIFY_FLAGS
For convenience, standard but not mandatory verify flags.
Definition: policy.h:111
int64_t GetVirtualTransactionSize(int64_t nSize, int64_t nSigChecks, unsigned int bytes_per_sigCheck)
Compute the virtual transaction size (size, or more if sigChecks are too dense).
Definition: policy.cpp:167
@ SCRIPT_VERIFY_P2SH
Definition: script_flags.h:16
@ SCRIPT_VERIFY_SIGPUSHONLY
Definition: script_flags.h:35
@ SCRIPT_VERIFY_LOW_S
Definition: script_flags.h:31
@ SCRIPT_VERIFY_CHECKLOCKTIMEVERIFY
Definition: script_flags.h:68
@ SCRIPT_ENABLE_SCHNORR_MULTISIG
Definition: script_flags.h:97
@ SCRIPT_VERIFY_STRICTENC
Definition: script_flags.h:22
@ SCRIPT_VERIFY_NULLFAIL
Definition: script_flags.h:81
@ SCRIPT_VERIFY_DERSIG
Definition: script_flags.h:26
@ SCRIPT_ENFORCE_SIGCHECKS
Definition: script_flags.h:106
@ SCRIPT_VERIFY_CLEANSTACK
Definition: script_flags.h:63
@ SCRIPT_VERIFY_MINIMALDATA
Definition: script_flags.h:43
@ SCRIPT_DISALLOW_SEGWIT_RECOVERY
Definition: script_flags.h:93
@ SCRIPT_VERIFY_DISCOURAGE_UPGRADABLE_NOPS
Definition: script_flags.h:53
@ SCRIPT_VERIFY_CHECKSEQUENCEVERIFY
Definition: script_flags.h:73
@ SCRIPT_ENABLE_SIGHASH_FORKID
Definition: script_flags.h:85
@ SCRIPT_VERIFY_INPUT_SIGCHECKS
Definition: script_flags.h:103
TxoutType
Definition: solver.h:15
Definition: amount.h:23