![]() |
Bitcoin Core 31.0.0
P2P Digital Currency
|
#include <consensus/amount.h>#include <consensus/consensus.h>#include <primitives/transaction.h>#include <script/interpreter.h>#include <script/solver.h>#include <util/feefrac.h>#include <cstdint>#include <string>Go to the source code of this file.
Functions | |
| CAmount | GetDustThreshold (const CTxOut &txout, const CFeeRate &dustRelayFee) |
| bool | IsDust (const CTxOut &txout, const CFeeRate &dustRelayFee) |
| bool | IsStandard (const CScript &scriptPubKey, TxoutType &whichType) |
| std::vector< uint32_t > | GetDust (const CTransaction &tx, CFeeRate dust_relay_rate) |
| Get the vout index numbers of all dust outputs. | |
| 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. | |
| bool | AreInputsStandard (const CTransaction &tx, const CCoinsViewCache &mapInputs) |
| Check for standard transaction types. | |
| bool | IsWitnessStandard (const CTransaction &tx, const CCoinsViewCache &mapInputs) |
| Check if the transaction is over standard P2WSH resources limit: 3600bytes witnessScript size, 80bytes per witness stack element, 100 witness stack elements These limits are adequate for multisignatures up to n-of-100 using OP_CHECKSIG, OP_ADD, and OP_EQUAL. | |
| bool | SpendsNonAnchorWitnessProg (const CTransaction &tx, const CCoinsViewCache &prevouts) |
| Check whether this transaction spends any witness program but P2A, including not-yet-defined ones. | |
| int64_t | GetVirtualTransactionSize (int64_t nWeight, int64_t nSigOpCost, unsigned int bytes_per_sigop) |
| Compute the virtual transaction size (weight reinterpreted as bytes). | |
| int64_t | GetVirtualTransactionSize (const CTransaction &tx, int64_t nSigOpCost, unsigned int bytes_per_sigop) |
| int64_t | GetVirtualTransactionInputSize (const CTxIn &tx, int64_t nSigOpCost, unsigned int bytes_per_sigop) |
| static int64_t | GetVirtualTransactionSize (const CTransaction &tx) |
| static int64_t | GetVirtualTransactionInputSize (const CTxIn &tx) |
| int64_t | GetSigOpsAdjustedWeight (int64_t weight, int64_t sigop_cost, unsigned int bytes_per_sigop) |
| static FeePerVSize | ToFeePerVSize (FeePerWeight feerate) |
Variables | |
| static constexpr unsigned int | DEFAULT_BLOCK_MAX_WEIGHT {MAX_BLOCK_WEIGHT} |
| Default for -blockmaxweight, which controls the range of block weights the mining code will create. | |
| static constexpr unsigned int | DEFAULT_BLOCK_RESERVED_WEIGHT {8000} |
| Default for -blockreservedweight. | |
| static constexpr unsigned int | DEFAULT_COINBASE_OUTPUT_MAX_ADDITIONAL_SIGOPS {400} |
| Default sigops cost to reserve for coinbase transaction outputs when creating block templates. | |
| static constexpr unsigned int | MINIMUM_BLOCK_RESERVED_WEIGHT {2000} |
| This accounts for the block header, var_int encoding of the transaction count and a minimally viable coinbase transaction. | |
| static constexpr unsigned int | DEFAULT_BLOCK_MIN_TX_FEE {1} |
| Default for -blockmintxfee, which sets the minimum feerate for a transaction in blocks created by mining code. | |
| static constexpr int32_t | MAX_STANDARD_TX_WEIGHT {400000} |
| The maximum weight for transactions we're willing to relay/mine. | |
| static constexpr unsigned int | MIN_STANDARD_TX_NONWITNESS_SIZE {65} |
| The minimum non-witness size for transactions we're willing to relay/mine: one larger than 64 | |
| static constexpr unsigned int | MAX_P2SH_SIGOPS {15} |
| Maximum number of signature check operations in an IsStandard() P2SH script. | |
| static constexpr unsigned int | MAX_STANDARD_TX_SIGOPS_COST {MAX_BLOCK_SIGOPS_COST/5} |
| The maximum number of sigops we're willing to relay/mine in a single tx. | |
| static constexpr unsigned int | MAX_TX_LEGACY_SIGOPS {2'500} |
| The maximum number of potentially executed legacy signature operations in a single standard tx. | |
| static constexpr unsigned int | DEFAULT_INCREMENTAL_RELAY_FEE {100} |
| Default for -incrementalrelayfee, which sets the minimum feerate increase for mempool limiting or replacement. | |
| static constexpr unsigned int | DEFAULT_BYTES_PER_SIGOP {20} |
| Default for -bytespersigop. | |
| static constexpr bool | DEFAULT_PERMIT_BAREMULTISIG {true} |
| Default for -permitbaremultisig. | |
| static constexpr unsigned int | MAX_STANDARD_P2WSH_STACK_ITEMS {100} |
| The maximum number of witness stack items in a standard P2WSH script. | |
| static constexpr unsigned int | MAX_STANDARD_P2WSH_STACK_ITEM_SIZE {80} |
| The maximum size in bytes of each witness stack item in a standard P2WSH script. | |
| static constexpr unsigned int | MAX_STANDARD_TAPSCRIPT_STACK_ITEM_SIZE {80} |
| The maximum size in bytes of each witness stack item in a standard BIP 342 script (Taproot, leaf version 0xc0) | |
| static constexpr unsigned int | MAX_STANDARD_P2WSH_SCRIPT_SIZE {3600} |
| The maximum size in bytes of a standard witnessScript. | |
| static constexpr unsigned int | MAX_STANDARD_SCRIPTSIG_SIZE {1650} |
| The maximum size of a standard ScriptSig. | |
| static constexpr unsigned int | DUST_RELAY_TX_FEE {3000} |
| Min feerate for defining dust. | |
| static constexpr unsigned int | DEFAULT_MIN_RELAY_TX_FEE {100} |
| Default for -minrelaytxfee, minimum relay fee for transactions. | |
| static constexpr unsigned int | DEFAULT_CLUSTER_LIMIT {64} |
| Maximum number of transactions per cluster (default) | |
| static constexpr unsigned int | DEFAULT_CLUSTER_SIZE_LIMIT_KVB {101} |
| Maximum size of cluster in virtual kilobytes. | |
| static constexpr unsigned int | DEFAULT_ANCESTOR_LIMIT {25} |
| Default for -limitancestorcount, max number of in-mempool ancestors. | |
| static constexpr unsigned int | DEFAULT_DESCENDANT_LIMIT {25} |
| Default for -limitdescendantcount, max number of in-mempool descendants. | |
| static const bool | DEFAULT_ACCEPT_DATACARRIER = true |
| Default for -datacarrier. | |
| static const unsigned int | MAX_OP_RETURN_RELAY = MAX_STANDARD_TX_WEIGHT / WITNESS_SCALE_FACTOR |
| Default setting for -datacarriersize in vbytes. | |
| static constexpr unsigned int | EXTRA_DESCENDANT_TX_SIZE_LIMIT {10000} |
| An extra transaction can be added to a package, as long as it only has one ancestor and is no larger than this. | |
| static constexpr unsigned int | MAX_DUST_OUTPUTS_PER_TX {1} |
| Maximum number of ephemeral dust outputs allowed. | |
| static constexpr script_verify_flags | MANDATORY_SCRIPT_VERIFY_FLAGS |
| Mandatory script verification flags that all new transactions must comply with for them to be valid. | |
| static constexpr script_verify_flags | STANDARD_SCRIPT_VERIFY_FLAGS |
| Standard script verification flags that standard transactions will comply with. | |
| static constexpr script_verify_flags | STANDARD_NOT_MANDATORY_VERIFY_FLAGS {STANDARD_SCRIPT_VERIFY_FLAGS & ~MANDATORY_SCRIPT_VERIFY_FLAGS} |
| For convenience, standard but not mandatory verify flags. | |
| static constexpr unsigned int | STANDARD_LOCKTIME_VERIFY_FLAGS {LOCKTIME_VERIFY_SEQUENCE} |
| Used as the flags parameter to sequence and nLocktime checks in non-consensus code. | |
| static constexpr decltype(CTransaction::version) | TX_MIN_STANDARD_VERSION {1} |
| static constexpr decltype(CTransaction::version) | TX_MAX_STANDARD_VERSION {3} |
| bool AreInputsStandard | ( | const CTransaction & | tx, |
| const CCoinsViewCache & | mapInputs ) |
Check for standard transaction types.
| [in] | mapInputs | Map of previous transactions that have outputs we're spending |
Check for standard transaction types.
This does three things:
Note that only the non-witness portion of the transaction is checked here.
We also check the total number of non-witness sigops across the whole transaction, as per BIP54.
Definition at line 213 of file policy.cpp.
| std::vector< uint32_t > GetDust | ( | const CTransaction & | tx, |
| CFeeRate | dust_relay_rate ) |
Get the vout index numbers of all dust outputs.
Definition at line 70 of file policy.cpp.
Definition at line 26 of file policy.cpp.
| int64_t GetSigOpsAdjustedWeight | ( | int64_t | weight, |
| int64_t | sigop_cost, | ||
| unsigned int | bytes_per_sigop ) |
Definition at line 376 of file policy.cpp.
| int64_t GetVirtualTransactionInputSize | ( | const CTxIn & | tx, |
| int64_t | nSigOpCost, | ||
| unsigned int | bytes_per_sigop ) |
Definition at line 391 of file policy.cpp.
|
inlinestatic |
| int64_t GetVirtualTransactionSize | ( | const CTransaction & | tx, |
| int64_t | nSigOpCost, | ||
| unsigned int | bytes_per_sigop ) |
| int64_t GetVirtualTransactionSize | ( | int64_t | nWeight, |
| int64_t | nSigOpCost, | ||
| unsigned int | bytes_per_sigop ) |
Compute the virtual transaction size (weight reinterpreted as bytes).
Definition at line 381 of file policy.cpp.
Definition at line 65 of file policy.cpp.
Definition at line 79 of file policy.cpp.
| 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 at line 99 of file policy.cpp.
| bool IsWitnessStandard | ( | const CTransaction & | tx, |
| const CCoinsViewCache & | mapInputs ) |
Check if the transaction is over standard P2WSH resources limit: 3600bytes witnessScript size, 80bytes per witness stack element, 100 witness stack elements These limits are adequate for multisignatures up to n-of-100 using OP_CHECKSIG, OP_ADD, and OP_EQUAL.
Also enforce a maximum stack item size limit and no annexes for tapscript spends.
Definition at line 251 of file policy.cpp.
| bool SpendsNonAnchorWitnessProg | ( | const CTransaction & | tx, |
| const CCoinsViewCache & | prevouts ) |
Check whether this transaction spends any witness program but P2A, including not-yet-defined ones.
May return false early for consensus-invalid transactions.
Definition at line 340 of file policy.cpp.
|
inlinestatic |
|
staticconstexpr |
Min feerate for defining dust.
Changing the dust limit changes which transactions are standard and should be done with care and ideally rarely. It makes sense to only increase the dust limit after prior releases were already not creating outputs below the new threshold
|
staticconstexpr |
Mandatory script verification flags that all new transactions must comply with for them to be valid.
Failing one of these tests may trigger a DoS ban; see CheckInputScripts() for details.
Note that this does not affect consensus validity; see GetBlockScriptFlags() for that.
|
static |
Maximum number of signature check operations in an IsStandard() P2SH script.
|
staticconstexpr |
This accounts for the block header, var_int encoding of the transaction count and a minimally viable coinbase transaction.
It adds an additional safety margin, because even with a thorough understanding of block serialization, it's easy to make a costly mistake when trying to squeeze every last byte. Setting a lower value is prevented at startup.
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
Standard script verification flags that standard transactions will comply with.
However we do not ban/disconnect nodes that forward txs violating the additional (non-mandatory) rules here, to improve forwards and backwards compatibility.
|
staticconstexpr |
|
staticconstexpr |