forked from dashpay/dash
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Define the Package type as an alias for a vector of transactions for now. Add PackageValidationResult, similar to TxValidationResult and BlockValidationResult for package-wide errors that cannot be reported within a single transaction result, such as having too many transactions in the package. We can update the concept of what a package is and have different logic for packages vs lists of transactions in the future, e.g. for package relay.
- Loading branch information
Showing
2 changed files
with
30 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
// 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 <consensus/validation.h> | ||
#include <primitives/transaction.h> | ||
|
||
#include <vector> | ||
|
||
/** 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 { | ||
PCKG_RESULT_UNSET = 0, //!< Initial value. The package has not yet been rejected. | ||
PCKG_POLICY, //!< The package itself is invalid (e.g. too many transactions). | ||
PCKG_TX, //!< At least one tx is invalid. | ||
}; | ||
|
||
/** A package is an ordered list of transactions. The transactions cannot conflict with (spend the | ||
* same inputs as) one another. */ | ||
using Package = std::vector<CTransactionRef>; | ||
|
||
class PackageValidationState : public ValidationState<PackageValidationResult> {}; | ||
|
||
#endif // BITCOIN_POLICY_PACKAGES_H |