![]() |
Bitcoin Core 32.99.0
P2P Digital Currency
|
#include <consensus/amount.h>#include <consensus/consensus.h>#include <consensus/validation.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. | |
| TxValidationState | ValidateInputsStandardness (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 | |
| 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. | |
| constexpr unsigned int | DEFAULT_BLOCK_RESERVED_WEIGHT {8000} |
| Default for -blockreservedweight. | |
| constexpr unsigned int | DEFAULT_COINBASE_OUTPUT_MAX_ADDITIONAL_SIGOPS {400} |
| Default sigops cost to reserve for coinbase transaction outputs when creating block templates. | |
| 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. | |
| 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. | |
| constexpr int32_t | MAX_STANDARD_TX_WEIGHT {400'000} |
| The maximum weight for transactions we're willing to relay/mine. | |
| 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 | |
| constexpr unsigned int | MAX_P2SH_SIGOPS {15} |
| Maximum number of signature check operations in an IsStandard() P2SH script. | |
| 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. | |
| constexpr unsigned int | MAX_TX_LEGACY_SIGOPS {2'500} |
| The maximum number of potentially executed legacy signature operations in a single standard tx. | |
| constexpr unsigned int | DEFAULT_INCREMENTAL_RELAY_FEE {100} |
| Default for -incrementalrelayfee, which sets the minimum feerate increase for mempool limiting or replacement. | |
| constexpr unsigned int | DEFAULT_BYTES_PER_SIGOP {20} |
| Default for -bytespersigop. | |
| constexpr bool | DEFAULT_PERMIT_BAREMULTISIG {true} |
| Default for -permitbaremultisig. | |
| constexpr unsigned int | MAX_STANDARD_P2WSH_STACK_ITEMS {100} |
| The maximum number of witness stack items in a standard P2WSH script. | |
| 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. | |
| 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) | |
| constexpr unsigned int | MAX_STANDARD_P2WSH_SCRIPT_SIZE {3600} |
| The maximum size in bytes of a standard witnessScript. | |
| constexpr unsigned int | MAX_STANDARD_SCRIPTSIG_SIZE {1650} |
| The maximum size of a standard ScriptSig. | |
| constexpr unsigned int | DUST_RELAY_TX_FEE {3000} |
| Min feerate for defining dust. | |
| constexpr unsigned int | DEFAULT_MIN_RELAY_TX_FEE {100} |
| Default for -minrelaytxfee, minimum relay fee for transactions. | |
| constexpr unsigned int | DEFAULT_CLUSTER_LIMIT {64} |
| Maximum number of transactions per cluster (default) | |
| constexpr unsigned int | DEFAULT_CLUSTER_SIZE_LIMIT_KVB {101} |
| Maximum size of cluster in virtual kilobytes. | |
| constexpr unsigned int | DEFAULT_ANCESTOR_LIMIT {25} |
| Default for -limitancestorcount, max number of in-mempool ancestors. | |
| constexpr unsigned int | DEFAULT_DESCENDANT_LIMIT {25} |
| Default for -limitdescendantcount, max number of in-mempool descendants. | |
| constexpr bool | DEFAULT_ACCEPT_DATACARRIER = true |
| Default for -datacarrier. | |
| constexpr unsigned int | MAX_OP_RETURN_RELAY = MAX_STANDARD_TX_WEIGHT / WITNESS_SCALE_FACTOR |
| Default setting for -datacarriersize in vbytes. | |
| constexpr unsigned int | MAX_DUST_OUTPUTS_PER_TX {1} |
| Maximum number of ephemeral dust outputs allowed. | |
| constexpr script_verify_flags | MANDATORY_SCRIPT_VERIFY_FLAGS |
| Mandatory script verification flags that all new transactions must comply with for them to be valid. | |
| constexpr script_verify_flags | STANDARD_SCRIPT_VERIFY_FLAGS |
| Standard script verification flags that standard transactions will comply with. | |
| 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. | |
| constexpr unsigned int | STANDARD_LOCKTIME_VERIFY_FLAGS {LOCKTIME_VERIFY_SEQUENCE} |
| Used as the flags parameter to sequence and nLocktime checks in non-consensus code. | |
| constexpr decltype(CTransaction::version) | TX_MIN_STANDARD_VERSION {1} |
| constexpr decltype(CTransaction::version) | TX_MAX_STANDARD_VERSION {3} |
| std::vector< uint32_t > GetDust | ( | const CTransaction & | tx, |
| CFeeRate | dust_relay_rate | ||
| ) |
Get the vout index numbers of all dust outputs.
Definition at line 71 of file policy.cpp.
Definition at line 27 of file policy.cpp.
| int64_t GetSigOpsAdjustedWeight | ( | int64_t | weight, |
| int64_t | sigop_cost, | ||
| unsigned int | bytes_per_sigop | ||
| ) |
Definition at line 390 of file policy.cpp.
| int64_t GetVirtualTransactionInputSize | ( | const CTxIn & | tx, |
| int64_t | nSigOpCost, | ||
| unsigned int | bytes_per_sigop | ||
| ) |
Definition at line 405 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 395 of file policy.cpp.
Definition at line 66 of file policy.cpp.
Definition at line 80 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 100 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 265 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 354 of file policy.cpp.
|
inlinestatic |
| TxValidationState ValidateInputsStandardness | ( | 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 214 of file policy.cpp.
|
inlineconstexpr |
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
|
inlineconstexpr |
Mandatory script verification flags that all new transactions must comply with for them to be valid.
Note that this does not affect consensus validity; see GetBlockScriptFlags() for that.
|
inlineconstexpr |
Maximum number of signature check operations in an IsStandard() P2SH script.
|
inlineconstexpr |
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.
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
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.
|
inlineconstexpr |
|
inlineconstexpr |