Bitcoin
policy.h
Go to the documentation of this file.
1 // Copyright (c) 2009-2010 Satoshi Nakamoto
2 // Copyright (c) 2009-2018 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 
9 #include <consensus/consensus.h>
10 #include <policy/feerate.h>
11 #include <script/interpreter.h>
12 #include <script/standard.h>
13 
14 #include <string>
15 
16 class CCoinsViewCache;
17 class CTxOut;
18 
20 static const unsigned int DEFAULT_BLOCK_MAX_WEIGHT = MAX_BLOCK_WEIGHT - 4000;
22 static const unsigned int DEFAULT_BLOCK_MIN_TX_FEE = 1000;
24 static const unsigned int MAX_STANDARD_TX_WEIGHT = 400000;
26 static const unsigned int MIN_STANDARD_TX_NONWITNESS_SIZE = 82;
28 static const unsigned int MAX_P2SH_SIGOPS = 15;
30 static const unsigned int MAX_STANDARD_TX_SIGOPS_COST = MAX_BLOCK_SIGOPS_COST/5;
32 static const unsigned int DEFAULT_MAX_MEMPOOL_SIZE = 300;
34 static const unsigned int DEFAULT_INCREMENTAL_RELAY_FEE = 1000;
36 static const unsigned int DEFAULT_BYTES_PER_SIGOP = 20;
38 static const bool DEFAULT_PERMIT_BAREMULTISIG = true;
40 static const unsigned int MAX_STANDARD_P2WSH_STACK_ITEMS = 100;
42 static const unsigned int MAX_STANDARD_P2WSH_STACK_ITEM_SIZE = 80;
44 static const unsigned int MAX_STANDARD_P2WSH_SCRIPT_SIZE = 3600;
50 static const unsigned int DUST_RELAY_TX_FEE = 3000;
72 
75 
79 
81 
82 bool IsDust(const CTxOut& txout, const CFeeRate& dustRelayFee);
83 
84 bool IsStandard(const CScript& scriptPubKey, txnouttype& whichType);
89 bool IsStandardTx(const CTransaction& tx, bool permit_bare_multisig, const CFeeRate& dust_relay_fee, std::string& reason);
95 bool AreInputsStandard(const CTransaction& tx, const CCoinsViewCache& mapInputs);
101 bool IsWitnessStandard(const CTransaction& tx, const CCoinsViewCache& mapInputs);
102 
104 int64_t GetVirtualTransactionSize(int64_t nWeight, int64_t nSigOpCost, unsigned int bytes_per_sigop);
105 int64_t GetVirtualTransactionSize(const CTransaction& tx, int64_t nSigOpCost, unsigned int bytes_per_sigop);
106 int64_t GetVirtualTransactionInputSize(const CTxIn& tx, int64_t nSigOpCost, unsigned int bytes_per_sigop);
107 
109 {
110  return GetVirtualTransactionSize(tx, 0, 0);
111 }
112 
114 {
115  return GetVirtualTransactionInputSize(tx, 0, 0);
116 }
117 
118 #endif // BITCOIN_POLICY_POLICY_H
static constexpr unsigned int LOCKTIME_VERIFY_SEQUENCE
Definition: consensus.h:28
bool IsStandardTx(const CTransaction &tx, bool permit_bare_multisig, const CFeeRate &dust_relay_fee, std::string &reason)
Definition: policy.cpp:76
Definition: transaction.h:63
static const unsigned int DEFAULT_MAX_MEMPOOL_SIZE
Definition: policy.h:32
static const unsigned int MIN_STANDARD_TX_NONWITNESS_SIZE
Definition: policy.h:26
CFeeRate dustRelayFee
Definition: settings.cpp:13
Definition: interpreter.h:109
static const unsigned int DEFAULT_INCREMENTAL_RELAY_FEE
Definition: policy.h:34
static const unsigned int MAX_STANDARD_P2WSH_SCRIPT_SIZE
Definition: policy.h:44
static constexpr unsigned int STANDARD_NOT_MANDATORY_VERIFY_FLAGS
Definition: policy.h:74
CAmount GetDustThreshold(const CTxOut &txout, const CFeeRate &dustRelayFee)
Definition: policy.cpp:14
Definition: interpreter.h:97
static const bool DEFAULT_PERMIT_BAREMULTISIG
Definition: policy.h:38
static const int64_t MAX_BLOCK_SIGOPS_COST
Definition: consensus.h:17
static constexpr unsigned int STANDARD_SCRIPT_VERIFY_FLAGS
Definition: policy.h:56
bool IsDust(const CTxOut &txout, const CFeeRate &dustRelayFee)
Definition: policy.cpp:48
static const unsigned int MAX_BLOCK_WEIGHT
Definition: consensus.h:15
Definition: coins.h:201
int64_t CAmount
Definition: amount.h:12
Definition: feerate.h:19
Definition: interpreter.h:48
static const unsigned int MAX_P2SH_SIGOPS
Definition: policy.h:28
Definition: transaction.h:270
static constexpr unsigned int LOCKTIME_MEDIAN_TIME_PAST
Definition: consensus.h:30
Definition: interpreter.h:55
Definition: interpreter.h:76
static const unsigned int DEFAULT_BLOCK_MIN_TX_FEE
Definition: policy.h:22
Definition: interpreter.h:45
Definition: interpreter.h:105
int64_t GetVirtualTransactionInputSize(const CTxIn &tx, int64_t nSigOpCost, unsigned int bytes_per_sigop)
Definition: policy.cpp:248
static const unsigned int MAX_STANDARD_P2WSH_STACK_ITEMS
Definition: policy.h:40
CScript scriptPubKey
Definition: transaction.h:137
static const unsigned int MAX_STANDARD_P2WSH_STACK_ITEM_SIZE
Definition: policy.h:42
txnouttype
Definition: standard.h:56
static const unsigned int DEFAULT_BYTES_PER_SIGOP
Definition: policy.h:36
static const unsigned int MAX_STANDARD_TX_WEIGHT
Definition: policy.h:24
static const unsigned int DUST_RELAY_TX_FEE
Definition: policy.h:50
Definition: script.h:390
Definition: interpreter.h:52
static const unsigned int MAX_STANDARD_TX_SIGOPS_COST
Definition: policy.h:30
signed long long int64_t
Definition: stdint.h:18
Definition: interpreter.h:93
Definition: interpreter.h:83
Definition: interpreter.h:113
int64_t GetVirtualTransactionSize(int64_t nWeight, int64_t nSigOpCost, unsigned int bytes_per_sigop)
Definition: policy.cpp:238
Definition: interpreter.h:64
bool IsStandard(const CScript &scriptPubKey, txnouttype &whichType)
Definition: policy.cpp:53
static const unsigned int MANDATORY_SCRIPT_VERIFY_FLAGS
Definition: standard.h:54
static const unsigned int DEFAULT_BLOCK_MAX_WEIGHT
Definition: policy.h:20
Definition: interpreter.h:117
static constexpr unsigned int STANDARD_LOCKTIME_VERIFY_FLAGS
Definition: policy.h:77
bool AreInputsStandard(const CTransaction &tx, const CCoinsViewCache &mapInputs)
Definition: policy.cpp:156
bool IsWitnessStandard(const CTransaction &tx, const CCoinsViewCache &mapInputs)
Definition: policy.cpp:186
Definition: interpreter.h:88
Definition: transaction.h:133