2020-12-31 09:48:25 +01:00
|
|
|
// Copyright (c) 2016-2020 The Bitcoin Core developers
|
2015-12-16 14:57:54 -05:00
|
|
|
// Distributed under the MIT software license, see the accompanying
|
|
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
|
|
|
|
#ifndef BITCOIN_POLICY_RBF_H
|
|
|
|
#define BITCOIN_POLICY_RBF_H
|
|
|
|
|
2017-11-10 13:57:53 +13:00
|
|
|
#include <txmempool.h>
|
2015-12-16 14:57:54 -05:00
|
|
|
|
2020-07-19 11:01:05 +02:00
|
|
|
/** The rbf state of unconfirmed transactions */
|
2018-03-09 15:03:40 +01:00
|
|
|
enum class RBFTransactionState {
|
2020-07-19 11:01:05 +02:00
|
|
|
/** Unconfirmed tx that does not signal rbf and is not in the mempool */
|
2018-03-09 15:03:40 +01:00
|
|
|
UNKNOWN,
|
2020-07-19 11:01:05 +02:00
|
|
|
/** Either this tx or a mempool ancestor signals rbf */
|
2018-03-09 15:03:40 +01:00
|
|
|
REPLACEABLE_BIP125,
|
2020-07-19 11:01:05 +02:00
|
|
|
/** Neither this tx nor a mempool ancestor signals rbf */
|
|
|
|
FINAL,
|
2016-04-05 14:20:49 +02:00
|
|
|
};
|
|
|
|
|
2020-07-19 11:01:05 +02:00
|
|
|
/**
|
|
|
|
* 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.
|
|
|
|
*
|
|
|
|
* @param tx The unconfirmed transaction
|
|
|
|
* @param pool The mempool, which may contain the tx
|
|
|
|
*
|
|
|
|
* @return The rbf state
|
|
|
|
*/
|
2019-02-23 11:04:20 -05:00
|
|
|
RBFTransactionState IsRBFOptIn(const CTransaction& tx, const CTxMemPool& pool) EXCLUSIVE_LOCKS_REQUIRED(pool.cs);
|
2020-07-19 11:09:59 +02:00
|
|
|
RBFTransactionState IsRBFOptInEmptyMempool(const CTransaction& tx);
|
2015-12-16 14:57:54 -05:00
|
|
|
|
|
|
|
#endif // BITCOIN_POLICY_RBF_H
|