![]() |
Bitcoin Core 22.99.0
P2P Digital Currency
|
#include <policy/rbf.h>#include <policy/settings.h>#include <tinyformat.h>#include <util/moneystr.h>#include <util/rbf.h>Go to the source code of this file.
Functions | |
| RBFTransactionState | IsRBFOptIn (const CTransaction &tx, const CTxMemPool &pool) |
| Determine whether an unconfirmed transaction is signaling opt-in to RBF according to BIP 125 This involves checking sequence numbers of the transaction, as well as the sequence numbers of all in-mempool ancestors. More... | |
| RBFTransactionState | IsRBFOptInEmptyMempool (const CTransaction &tx) |
| std::optional< std::string > | GetEntriesForConflicts (const CTransaction &tx, CTxMemPool &pool, const CTxMemPool::setEntries &iters_conflicting, CTxMemPool::setEntries &all_conflicts) |
| Get all descendants of iters_conflicting. More... | |
| std::optional< std::string > | HasNoNewUnconfirmed (const CTransaction &tx, const CTxMemPool &pool, const CTxMemPool::setEntries &iters_conflicting) |
| BIP125 Rule #2: "The replacement transaction may only include an unconfirmed input if that input was included in one of the original transactions. More... | |
| std::optional< std::string > | EntriesAndTxidsDisjoint (const CTxMemPool::setEntries &ancestors, const std::set< uint256 > &direct_conflicts, const uint256 &txid) |
| Check the intersection between two sets of transactions (a set of mempool entries and a set of txids) to make sure they are disjoint. More... | |
| std::optional< std::string > | PaysMoreThanConflicts (const CTxMemPool::setEntries &iters_conflicting, CFeeRate replacement_feerate, const uint256 &txid) |
| Check that the feerate of the replacement transaction(s) is higher than the feerate of each of the transactions in iters_conflicting. More... | |
| std::optional< std::string > | PaysForRBF (CAmount original_fees, CAmount replacement_fees, size_t replacement_vsize, CFeeRate relay_fee, const uint256 &txid) |
| Enforce BIP125 Rule #3 "The replacement transaction pays an absolute fee of at least the sum paid by the original transactions. More... | |
| std::optional< std::string > EntriesAndTxidsDisjoint | ( | const CTxMemPool::setEntries & | ancestors, |
| const std::set< uint256 > & | direct_conflicts, | ||
| const uint256 & | txid | ||
| ) |
Check the intersection between two sets of transactions (a set of mempool entries and a set of txids) to make sure they are disjoint.
| [in] | ancestors | Set of mempool entries corresponding to ancestors of the replacement transactions. |
| [in] | direct_conflicts | Set of txids corresponding to the mempool conflicts (candidates to be replaced). |
| [in] | txid | Transaction ID, included in the error message if violation occurs. |
Definition at line 110 of file rbf.cpp.
| std::optional< std::string > GetEntriesForConflicts | ( | const CTransaction & | tx, |
| CTxMemPool & | pool, | ||
| const CTxMemPool::setEntries & | iters_conflicting, | ||
| CTxMemPool::setEntries & | all_conflicts | ||
| ) |
Get all descendants of iters_conflicting.
Also enforce BIP125 Rule #5, "The number of original transactions to be replaced and their descendant transactions which will be evicted from the mempool must not exceed a total of 100 transactions." Quit as early as possible. There cannot be more than MAX_BIP125_REPLACEMENT_CANDIDATES potential entries.
| [in] | iters_conflicting | The set of iterators to mempool entries. |
| [out] | all_conflicts | Populated with all the mempool entries that would be replaced, which includes descendants of iters_conflicting. Not cleared at the start; any existing mempool entries will remain in the set. |
Definition at line 50 of file rbf.cpp.
| std::optional< std::string > HasNoNewUnconfirmed | ( | const CTransaction & | tx, |
| const CTxMemPool & | pool, | ||
| const CTxMemPool::setEntries & | iters_conflicting | ||
| ) |
| RBFTransactionState IsRBFOptIn | ( | const CTransaction & | tx, |
| const CTxMemPool & | pool | ||
| ) |
Determine whether an unconfirmed transaction is signaling opt-in to RBF according to BIP 125 This involves checking sequence numbers of the transaction, as well as the sequence numbers of all in-mempool ancestors.
| tx | The unconfirmed transaction |
| pool | The mempool, which may contain the tx |
Definition at line 12 of file rbf.cpp.
| RBFTransactionState IsRBFOptInEmptyMempool | ( | const CTransaction & | tx | ) |
| std::optional< std::string > PaysForRBF | ( | CAmount | original_fees, |
| CAmount | replacement_fees, | ||
| size_t | replacement_vsize, | ||
| CFeeRate | relay_fee, | ||
| const uint256 & | txid | ||
| ) |
Enforce BIP125 Rule #3 "The replacement transaction pays an absolute fee of at least the sum paid by the original transactions.
" Enforce BIP125 Rule #4 "The replacement transaction must also pay for its own bandwidth at or above the rate set by the node's minimum relay fee setting."
| [in] | original_fees | Total modified fees of original transaction(s). |
| [in] | replacement_fees | Total modified fees of replacement transaction(s). |
| [in] | replacement_vsize | Total virtual size of replacement transaction(s). |
| [in] | relay_fee | The node's minimum feerate for transaction relay. |
| [in] | txid | Transaction ID, included in the error message if violation occurs. |
Definition at line 151 of file rbf.cpp.
| std::optional< std::string > PaysMoreThanConflicts | ( | const CTxMemPool::setEntries & | iters_conflicting, |
| CFeeRate | replacement_feerate, | ||
| const uint256 & | txid | ||
| ) |
Check that the feerate of the replacement transaction(s) is higher than the feerate of each of the transactions in iters_conflicting.
| [in] | iters_conflicting | The set of mempool entries. |
Definition at line 125 of file rbf.cpp.