Must be called for every transaction, even if not TRUC. Not strictly necessary for transactions accepted through AcceptMultipleTransactions.
Synopsis
Declared in <policy/truc_policy.h>
[[requires_capability(0x7f2e281b8c60)]]
std::optional<std::pair<std::string, CTransactionRef>>
SingleTRUCChecks(
CTxMemPool const& pool,
CTransactionRef const& ptx,
std::vector<CTxMemPoolEntry::CTxMemPoolEntryRef> const& mempool_parents,
std::set<Txid> const& direct_conflicts,
int64_t vsize);
Description
Checks the following rules: 1. A TRUC tx must only have TRUC unconfirmed ancestors. 2. A non‐TRUC tx must only have non‐TRUC unconfirmed ancestors. 3. A TRUC's ancestor set, including itself, must be within TRUC_ANCESTOR_LIMIT. 4. A TRUC's descendant set, including itself, must be within TRUC_DESCENDANT_LIMIT. 5. If a TRUC tx has any unconfirmed ancestors, the tx's sigop‐adjusted vsize must be within TRUC_CHILD_MAX_VSIZE. 6. A TRUC tx must be within TRUC_MAX_VSIZE.
Return Value
3 possibilities: ‐ std::nullopt if all TRUC checks were applied successfully ‐ debug string + pointer to a mempool sibling if this transaction would be the second child in a 1‐parent‐1‐child cluster; the caller may consider evicting the specified sibling or return an error with the debug string. ‐ debug string + nullptr if this transaction violates some TRUC rule and sibling eviction is not applicable.
Parameters
Name |
Description |
pool [in] |
A reference to the mempool. |
ptx [in] |
The transaction being checked. |
mempool_parents [in] |
The in‐mempool ancestors of ptx. |
direct_conflicts [in] |
In‐mempool transactions this tx conflicts with. These conflicts are used to more accurately calculate the resulting descendant count of in‐mempool ancestors. |
vsize [in] |
The sigop‐adjusted virtual size of ptx. |
Created with MrDocs