aboutsummaryrefslogtreecommitdiff
path: root/src/policy
diff options
context:
space:
mode:
authorfanquake <fanquake@gmail.com>2022-06-20 10:24:15 +0100
committerfanquake <fanquake@gmail.com>2022-06-20 10:24:15 +0100
commit0d8e68d7054466925ecd165a871fc0e3f53cdafa (patch)
tree7fdddd3545dd2f2a096a046bde4cc10a70a8296b /src/policy
parent9c94f3b3a71b6d1c30471cf6a2a4fbadcc351a3f (diff)
downloadbitcoin-0d8e68d7054466925ecd165a871fc0e3f53cdafa.tar.xz
refactor: move DEFAULT_*_LIMIT assertions from validation to policy
Diffstat (limited to 'src/policy')
-rw-r--r--src/policy/packages.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/policy/packages.h b/src/policy/packages.h
index ba6a3a9a06..564ff50d29 100644
--- a/src/policy/packages.h
+++ b/src/policy/packages.h
@@ -19,6 +19,15 @@ static constexpr uint32_t MAX_PACKAGE_COUNT{25};
static constexpr uint32_t MAX_PACKAGE_SIZE{101};
static_assert(MAX_PACKAGE_SIZE * WITNESS_SCALE_FACTOR * 1000 >= MAX_STANDARD_TX_WEIGHT);
+// If a package is submitted, it must be within the mempool's ancestor/descendant limits. Since a
+// submitted package must be child-with-unconfirmed-parents (all of the transactions are an ancestor
+// of the child), package limits are ultimately bounded by mempool package limits. Ensure that the
+// defaults reflect this constraint.
+static_assert(DEFAULT_DESCENDANT_LIMIT >= MAX_PACKAGE_COUNT);
+static_assert(DEFAULT_ANCESTOR_LIMIT >= MAX_PACKAGE_COUNT);
+static_assert(DEFAULT_ANCESTOR_SIZE_LIMIT >= MAX_PACKAGE_SIZE);
+static_assert(DEFAULT_DESCENDANT_SIZE_LIMIT >= MAX_PACKAGE_SIZE);
+
/** 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.