Bitcoin Core  21.99.0
P2P Digital Currency
Classes | Typedefs | Enumerations | Functions | Variables
packages.h File Reference
#include <consensus/validation.h>
#include <policy/policy.h>
#include <primitives/transaction.h>
#include <vector>
Include dependency graph for packages.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.


class  PackageValidationState


using Package = std::vector< CTransactionRef >
 A package is an ordered list of transactions. More...


enum  PackageValidationResult { PackageValidationResult::PCKG_RESULT_UNSET = 0, PackageValidationResult::PCKG_POLICY, PackageValidationResult::PCKG_TX }
 A "reason" why a package was invalid. More...


bool CheckPackage (const Package &txns, PackageValidationState &state)
 Context-free package policy checks: More...


static constexpr uint32_t MAX_PACKAGE_COUNT {25}
 Default maximum number of transactions in a package. More...
static constexpr uint32_t MAX_PACKAGE_SIZE {101}
 Default maximum total virtual size of transactions in a package in KvB. More...

Typedef Documentation

◆ Package

using Package = std::vector<CTransactionRef>

A package is an ordered list of transactions.

The transactions cannot conflict with (spend the same inputs as) one another.

Definition at line 32 of file packages.h.

Enumeration Type Documentation

◆ PackageValidationResult

A "reason" why a package was invalid.

It may be that one or more of the included transactions is invalid or the package itself violates our rules. We don't distinguish between consensus and policy violations right now.


Initial value. The package has not yet been rejected.


The package itself is invalid (e.g. too many transactions).


At least one tx is invalid.

Definition at line 24 of file packages.h.

Function Documentation

◆ CheckPackage()

bool CheckPackage ( const Package txns,
PackageValidationState state 

Context-free package policy checks:

  1. The number of transactions cannot exceed MAX_PACKAGE_COUNT.
  2. The total virtual size cannot exceed MAX_PACKAGE_SIZE.
  3. If any dependencies exist between transactions, parents must appear before children.
  4. Transactions cannot conflict, i.e., spend the same inputs.

Definition at line 14 of file packages.cpp.

Here is the call graph for this function:

Variable Documentation


constexpr uint32_t MAX_PACKAGE_COUNT {25}

Default maximum number of transactions in a package.

Definition at line 15 of file packages.h.


constexpr uint32_t MAX_PACKAGE_SIZE {101}

Default maximum total virtual size of transactions in a package in KvB.

Definition at line 17 of file packages.h.