mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-08-30 14:00:54 +02:00
Merge #17492: QT: bump fee returns PSBT on clipboard for watchonly-only wallets
3c30d7118a
QT: Change bumpFee asserts to simple error message (Gregory Sanders)e3b19d8696
QT: bump fee returns PSBT on clipboard for watchonly-only wallets (Gregory Sanders) Pull request description: Very small set of changes to support PSBT-based fee bumping on watchonly wallets in QT. quasi-companion to https://github.com/bitcoin/bitcoin/pull/16373 ACKs for top commit: gwillen: code review ACK3c30d71
promag: Code review ACK3c30d7118a
. Sjors: utACK3c30d71
achow101: ACK3c30d7118a
Tree-SHA512: 7a706141e46d7fd0ad513a08a96c16f2e7e531427a6776b689362f82e32cbd9d4b7eeb98f6936aa3f9347d23ccc94128516fcffa695efacd9cac43606ea916e2
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
|
||||
#include <qt/addresstablemodel.h>
|
||||
#include <qt/guiconstants.h>
|
||||
#include <qt/guiutil.h>
|
||||
#include <qt/optionsmodel.h>
|
||||
#include <qt/paymentserver.h>
|
||||
#include <qt/recentrequeststablemodel.h>
|
||||
@@ -487,8 +488,10 @@ bool WalletModel::bumpFee(uint256 hash, uint256& new_hash)
|
||||
return false;
|
||||
}
|
||||
|
||||
const bool create_psbt = privateKeysDisabled();
|
||||
|
||||
// allow a user based fee verification
|
||||
QString questionString = tr("Do you want to increase the fee?");
|
||||
QString questionString = create_psbt ? tr("Do you want to draft a transaction with fee increase?") : tr("Do you want to increase the fee?");
|
||||
questionString.append("<br />");
|
||||
questionString.append("<table style=\"text-align: left;\">");
|
||||
questionString.append("<tr><td>");
|
||||
@@ -519,6 +522,23 @@ bool WalletModel::bumpFee(uint256 hash, uint256& new_hash)
|
||||
return false;
|
||||
}
|
||||
|
||||
// Short-circuit if we are returning a bumped transaction PSBT to clipboard
|
||||
if (create_psbt) {
|
||||
PartiallySignedTransaction psbtx(mtx);
|
||||
bool complete = false;
|
||||
const TransactionError err = wallet().fillPSBT(psbtx, complete, SIGHASH_ALL, false /* sign */, true /* bip32derivs */);
|
||||
if (err != TransactionError::OK || complete) {
|
||||
QMessageBox::critical(nullptr, tr("Fee bump error"), tr("Can't draft transaction."));
|
||||
return false;
|
||||
}
|
||||
// Serialize the PSBT
|
||||
CDataStream ssTx(SER_NETWORK, PROTOCOL_VERSION);
|
||||
ssTx << psbtx;
|
||||
GUIUtil::setClipboard(EncodeBase64(ssTx.str()).c_str());
|
||||
Q_EMIT message(tr("PSBT copied"), "Copied to clipboard", CClientUIInterface::MSG_INFORMATION);
|
||||
return true;
|
||||
}
|
||||
|
||||
// sign bumped transaction
|
||||
if (!m_wallet->signBumpTransaction(mtx)) {
|
||||
QMessageBox::critical(nullptr, tr("Fee bump error"), tr("Can't sign transaction."));
|
||||
|
Reference in New Issue
Block a user