diff --git a/src/policy/packages.h b/src/policy/packages.h new file mode 100644 --- /dev/null +++ b/src/policy/packages.h @@ -0,0 +1,36 @@ +// Copyright (c) 2021 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#ifndef BITCOIN_POLICY_PACKAGES_H +#define BITCOIN_POLICY_PACKAGES_H + +#include +#include + +#include + +/** + * 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. + */ +enum class PackageValidationResult { + //! Initial value. The package has not yet been rejected. + PCKG_RESULT_UNSET = 0, + //! The package itself is invalid (e.g. too many transactions). + PCKG_POLICY, + //! At least one tx is invalid. + PCKG_TX, +}; + +/** + * A package is an ordered list of transactions. The transactions cannot + * conflict with (spend the same inputs as) one another. + */ +using Package = std::vector; + +class PackageValidationState : public ValidationState { +}; + +#endif // BITCOIN_POLICY_PACKAGES_H