Skip to content

Commit

Permalink
Add "bip125-replaceable" flag to mempool RPCs
Browse files Browse the repository at this point in the history
This affects getrawmempool, getmempoolentry, getmempoolancestors and getmempooldescendants.
  • Loading branch information
dexX7 committed Apr 25, 2018
1 parent a785bc3 commit 820d31f
Showing 1 changed file with 14 additions and 1 deletion.
15 changes: 14 additions & 1 deletion src/rpc/blockchain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#include <core_io.h>
#include <policy/feerate.h>
#include <policy/policy.h>
#include <policy/rbf.h>
#include <primitives/transaction.h>
#include <rpc/server.h>
#include <streams.h>
Expand Down Expand Up @@ -376,7 +377,8 @@ std::string EntryDescriptionString()
" ... ]\n"
" \"spentby\" : [ (array) unconfirmed transactions spending outputs from this transaction\n"
" \"transactionid\", (string) child transaction id\n"
" ... ]\n";
" ... ]\n"
" \"bip125-replaceable\" : true|false, (boolean) Whether this transaction could be replaced due to BIP125 (replace-by-fee)\n";
}

void entryToJSON(UniValue &info, const CTxMemPoolEntry &e)
Expand Down Expand Up @@ -419,6 +421,17 @@ void entryToJSON(UniValue &info, const CTxMemPoolEntry &e)
}

info.pushKV("spentby", spent);

// Add opt-in RBF status
bool rbfStatus = false;
RBFTransactionState rbfState = IsRBFOptIn(tx, mempool);
if (rbfState == RBFTransactionState::UNKNOWN) {
throw JSONRPCError(RPC_MISC_ERROR, "Transaction is not in mempool");
} else if (rbfState == RBFTransactionState::REPLACEABLE_BIP125) {
rbfStatus = true;
}

info.pushKV("bip125-replaceable", rbfStatus);
}

UniValue mempoolToJSON(bool fVerbose)
Expand Down

0 comments on commit 820d31f

Please sign in to comment.