Qt/Options: Configure spkreuse using rwconf

This commit is contained in:
Luke Dashjr 2025-02-04 00:08:02 +00:00
parent d15608edce
commit 0551bcd0ff
4 changed files with 24 additions and 0 deletions

View File

@ -260,6 +260,12 @@ OptionsDialog::OptionsDialog(QWidget* parent, bool enableWallet)
verticalLayout_Spamfiltering->addWidget(rejectunknownscripts); verticalLayout_Spamfiltering->addWidget(rejectunknownscripts);
FixTabOrder(rejectunknownscripts); FixTabOrder(rejectunknownscripts);
rejectspkreuse = new QCheckBox(groupBox_Spamfiltering);
rejectspkreuse->setText(tr("Disallow most address reuse"));
rejectspkreuse->setToolTip(tr("With this option enabled, your memory pool will only allow each unique payment destination to be used once, effectively deprioritising address reuse. Address reuse is not technically supported, and harms the privacy of all Bitcoin users. It also has limited real-world utility, and has been known to be common with spam."));
verticalLayout_Spamfiltering->addWidget(rejectspkreuse);
FixTabOrder(rejectspkreuse);
minrelaytxfee = new BitcoinAmountField(groupBox_Spamfiltering); minrelaytxfee = new BitcoinAmountField(groupBox_Spamfiltering);
CreateOptionUI(verticalLayout_Spamfiltering, minrelaytxfee, tr("Ignore transactions offering miners less than %s per kvB in transaction fees.")); CreateOptionUI(verticalLayout_Spamfiltering, minrelaytxfee, tr("Ignore transactions offering miners less than %s per kvB in transaction fees."));
@ -499,6 +505,8 @@ void OptionsDialog::setModel(OptionsModel *_model)
connect(ui->connectSocksTor, &QCheckBox::clicked, this, &OptionsDialog::showRestartWarning); connect(ui->connectSocksTor, &QCheckBox::clicked, this, &OptionsDialog::showRestartWarning);
connect(ui->peerbloomfilters, &QCheckBox::clicked, this, &OptionsDialog::showRestartWarning); connect(ui->peerbloomfilters, &QCheckBox::clicked, this, &OptionsDialog::showRestartWarning);
connect(ui->peerblockfilters, &QCheckBox::clicked, this, &OptionsDialog::showRestartWarning); connect(ui->peerblockfilters, &QCheckBox::clicked, this, &OptionsDialog::showRestartWarning);
/* Mempool */
connect(rejectspkreuse, &QCheckBox::clicked, this, &OptionsDialog::showRestartWarning);
/* Display */ /* Display */
connect(ui->lang, qOverload<>(&QValueComboBox::valueChanged), [this]{ showRestartWarning(); }); connect(ui->lang, qOverload<>(&QValueComboBox::valueChanged), [this]{ showRestartWarning(); });
connect(ui->thirdPartyTxUrls, &QLineEdit::textChanged, [this]{ showRestartWarning(); }); connect(ui->thirdPartyTxUrls, &QLineEdit::textChanged, [this]{ showRestartWarning(); });
@ -594,6 +602,7 @@ void OptionsDialog::setMapper()
mapper->addMapping(mempoolexpiry, OptionsModel::mempoolexpiry); mapper->addMapping(mempoolexpiry, OptionsModel::mempoolexpiry);
mapper->addMapping(rejectunknownscripts, OptionsModel::rejectunknownscripts); mapper->addMapping(rejectunknownscripts, OptionsModel::rejectunknownscripts);
mapper->addMapping(rejectspkreuse, OptionsModel::rejectspkreuse);
mapper->addMapping(minrelaytxfee, OptionsModel::minrelaytxfee); mapper->addMapping(minrelaytxfee, OptionsModel::minrelaytxfee);
mapper->addMapping(bytespersigop, OptionsModel::bytespersigop); mapper->addMapping(bytespersigop, OptionsModel::bytespersigop);
mapper->addMapping(bytespersigopstrict, OptionsModel::bytespersigopstrict); mapper->addMapping(bytespersigopstrict, OptionsModel::bytespersigopstrict);

View File

@ -106,6 +106,7 @@ private:
QSpinBox *mempoolexpiry; QSpinBox *mempoolexpiry;
QCheckBox *rejectunknownscripts; QCheckBox *rejectunknownscripts;
QCheckBox *rejectspkreuse;
BitcoinAmountField *minrelaytxfee; BitcoinAmountField *minrelaytxfee;
QSpinBox *bytespersigop, *bytespersigopstrict; QSpinBox *bytespersigop, *bytespersigopstrict;
QSpinBox *limitancestorcount; QSpinBox *limitancestorcount;

View File

@ -350,7 +350,9 @@ bool OptionsModel::Init(bilingual_str& error)
addOverriddenOption("-port"); addOverriddenOption("-port");
// rwconf settings that require a restart // rwconf settings that require a restart
// Caution: This is before general initialisation occurs!
f_peerbloomfilters = gArgs.GetBoolArg("-peerbloomfilters", DEFAULT_PEERBLOOMFILTERS); f_peerbloomfilters = gArgs.GetBoolArg("-peerbloomfilters", DEFAULT_PEERBLOOMFILTERS);
f_rejectspkreuse = !(gArgs.GetArg("-spkreuse", DEFAULT_SPKREUSE) == "allow" || gArgs.GetBoolArg("-spkreuse", false));
// Display // Display
if (settings.contains("FontForMoney")) { if (settings.contains("FontForMoney")) {
@ -653,6 +655,8 @@ QVariant OptionsModel::getOption(OptionID option, const std::string& suffix) con
return qlonglong(std::chrono::duration_cast<std::chrono::hours>(node().mempool().m_opts.expiry).count()); return qlonglong(std::chrono::duration_cast<std::chrono::hours>(node().mempool().m_opts.expiry).count());
case rejectunknownscripts: case rejectunknownscripts:
return node().mempool().m_opts.require_standard; return node().mempool().m_opts.require_standard;
case rejectspkreuse:
return f_rejectspkreuse;
case minrelaytxfee: case minrelaytxfee:
return qlonglong(node().mempool().m_opts.min_relay_feerate.GetFeePerK()); return qlonglong(node().mempool().m_opts.min_relay_feerate.GetFeePerK());
case bytespersigop: case bytespersigop:
@ -1093,6 +1097,14 @@ bool OptionsModel::setOption(OptionID option, const QVariant& value, const std::
} }
break; break;
} }
case rejectspkreuse:
if (changed()) {
const bool fNewValue = value.toBool();
gArgs.ModifyRWConfigFile("spkreuse", fNewValue ? "conflict" : "allow");
f_rejectspkreuse = fNewValue;
setRestartRequired(true);
}
break;
case minrelaytxfee: case minrelaytxfee:
if (changed()) { if (changed()) {
CAmount nNv = value.toLongLong(); CAmount nNv = value.toLongLong();

View File

@ -87,6 +87,7 @@ public:
incrementalrelayfee, incrementalrelayfee,
mempoolexpiry, mempoolexpiry,
rejectunknownscripts, // bool rejectunknownscripts, // bool
rejectspkreuse, // bool
minrelaytxfee, minrelaytxfee,
bytespersigop, bytespersigop,
bytespersigopstrict, bytespersigopstrict,
@ -178,6 +179,7 @@ private:
/* rwconf settings that require a restart */ /* rwconf settings that require a restart */
bool f_peerbloomfilters; bool f_peerbloomfilters;
bool f_rejectspkreuse;
// Add option to list of GUI options overridden through command line/config file // Add option to list of GUI options overridden through command line/config file
void addOverriddenOption(const std::string &option); void addOverriddenOption(const std::string &option);