Browse Source

Allow to opt-into RBF when creating a transaction

0.15
Jonas Schnelli 9 years ago committed by Russell Yanofsky
parent
commit
568c05a591
  1. 4
      src/wallet/coincontrol.h
  2. 3
      src/wallet/wallet.cpp

4
src/wallet/coincontrol.h

@ -6,6 +6,7 @@
#define BITCOIN_WALLET_COINCONTROL_H #define BITCOIN_WALLET_COINCONTROL_H
#include "primitives/transaction.h" #include "primitives/transaction.h"
#include "wallet/wallet.h"
/** Coin Control Features. */ /** Coin Control Features. */
class CCoinControl class CCoinControl
@ -24,6 +25,8 @@ public:
CFeeRate nFeeRate; CFeeRate nFeeRate;
//! Override the default confirmation target, 0 = use default //! Override the default confirmation target, 0 = use default
int nConfirmTarget; int nConfirmTarget;
//! Signal BIP-125 replace by fee.
bool signalRbf;
CCoinControl() CCoinControl()
{ {
@ -40,6 +43,7 @@ public:
nFeeRate = CFeeRate(0); nFeeRate = CFeeRate(0);
fOverrideFeeRate = false; fOverrideFeeRate = false;
nConfirmTarget = 0; nConfirmTarget = 0;
signalRbf = fWalletRbf;
} }
bool HasSelected() const bool HasSelected() const

3
src/wallet/wallet.cpp

@ -2566,9 +2566,10 @@ bool CWallet::CreateTransaction(const vector<CRecipient>& vecSend, CWalletTx& wt
// to avoid conflicting with other possible uses of nSequence, // to avoid conflicting with other possible uses of nSequence,
// and in the spirit of "smallest posible change from prior // and in the spirit of "smallest posible change from prior
// behavior." // behavior."
bool rbf = coinControl ? coinControl->signalRbf : fWalletRbf;
for (const auto& coin : setCoins) for (const auto& coin : setCoins)
txNew.vin.push_back(CTxIn(coin.first->GetHash(),coin.second,CScript(), txNew.vin.push_back(CTxIn(coin.first->GetHash(),coin.second,CScript(),
std::numeric_limits<unsigned int>::max() - (fWalletRbf ? 2 : 1))); std::numeric_limits<unsigned int>::max() - (rbf ? 2 : 1)));
// Fill in dummy signatures for fee calculation. // Fill in dummy signatures for fee calculation.
int nIn = 0; int nIn = 0;

Loading…
Cancel
Save