Qt/Options: Configure spkreuse using rwconf

This commit is contained in:
Luke Dashjr 2017-02-13 11:25:39 +00:00
parent f58d281cde
commit 611b9aa2d1
4 changed files with 23 additions and 0 deletions

View File

@ -256,6 +256,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("Consider transaction fees less than %s per kB relayed to be worthless.")); CreateOptionUI(verticalLayout_Spamfiltering, minrelaytxfee, tr("Consider transaction fees less than %s per kB relayed to be worthless."));
@ -495,6 +501,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(); });
@ -582,6 +590,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

@ -332,6 +332,7 @@ bool OptionsModel::Init(bilingual_str& error)
// rwconf settings that require a restart // rwconf settings that require a restart
f_peerbloomfilters = gArgs.GetBoolArg("-peerbloomfilters", DEFAULT_PEERBLOOMFILTERS); f_peerbloomfilters = gArgs.GetBoolArg("-peerbloomfilters", DEFAULT_PEERBLOOMFILTERS);
f_rejectspkreuse = (SpkReuseMode != SRM_ALLOW);
// Display // Display
if (settings.contains("FontForMoney")) { if (settings.contains("FontForMoney")) {
@ -628,6 +629,8 @@ QVariant OptionsModel::getOption(OptionID option, const std::string& suffix) con
return qlonglong(std::chrono::duration_cast<std::chrono::hours>(node().mempool().m_expiry).count()); return qlonglong(std::chrono::duration_cast<std::chrono::hours>(node().mempool().m_expiry).count());
case rejectunknownscripts: case rejectunknownscripts:
return node().mempool().m_require_standard; return node().mempool().m_require_standard;
case rejectspkreuse:
return f_rejectspkreuse;
case minrelaytxfee: case minrelaytxfee:
return qlonglong(node().mempool().m_min_relay_feerate.GetFeePerK()); return qlonglong(node().mempool().m_min_relay_feerate.GetFeePerK());
case bytespersigop: case bytespersigop:
@ -1067,6 +1070,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);