Qt/Options: Configure datacarrier[size] using rwconf

This commit is contained in:
Luke Dashjr 2025-02-03 23:38:54 +00:00
parent f1ab51a491
commit 80196bad5c
4 changed files with 27 additions and 0 deletions

View File

@ -265,6 +265,12 @@ OptionsDialog::OptionsDialog(QWidget* parent, bool enableWallet)
verticalLayout_Spamfiltering->addWidget(rejectbaremultisig);
FixTabOrder(rejectbaremultisig);
datacarriersize = new QSpinBox(groupBox_Spamfiltering);
datacarriersize->setMinimum(0);
datacarriersize->setMaximum(std::numeric_limits<int>::max());
datacarriersize->setToolTip(tr("Since 2014, a specific method for attaching arbitrary data to transactions has been recognised as not requiring space in the coin database. Since it is sometimes impractical to detect small spam disguised as ordinary transactions, it is sometimes considered beneficial to treat these less harmful data attachments as equals to legitimate usage."));
CreateOptionUI(verticalLayout_Spamfiltering, datacarriersize, tr("Ignore transactions with additional data larger than %s bytes."));
verticalLayout_Mempool->addWidget(groupBox_Spamfiltering);
verticalLayout_Mempool->addItem(new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding));
@ -523,6 +529,7 @@ void OptionsDialog::setMapper()
mapper->addMapping(limitdescendantcount, OptionsModel::limitdescendantcount);
mapper->addMapping(limitdescendantsize, OptionsModel::limitdescendantsize);
mapper->addMapping(rejectbaremultisig, OptionsModel::rejectbaremultisig);
mapper->addMapping(datacarriersize, OptionsModel::datacarriersize);
/* Window */
#ifndef Q_OS_MACOS

View File

@ -101,6 +101,7 @@ private:
QSpinBox *limitdescendantcount;
QSpinBox *limitdescendantsize;
QCheckBox *rejectbaremultisig;
QSpinBox *datacarriersize;
};
#endif // BITCOIN_QT_OPTIONSDIALOG_H

View File

@ -660,6 +660,8 @@ QVariant OptionsModel::getOption(OptionID option, const std::string& suffix) con
return qlonglong(node().mempool().m_opts.limits.descendant_size_vbytes / 1'000);
case rejectbaremultisig:
return !node().mempool().m_opts.permit_bare_multisig;
case datacarriersize:
return qlonglong(node().mempool().m_opts.max_datacarrier_bytes.value_or(0));
default:
return QVariant();
}
@ -1097,6 +1099,22 @@ bool OptionsModel::setOption(OptionID option, const QVariant& value, const std::
gArgs.ModifyRWConfigFile("permitbaremultisig", strprintf("%d", fNewValue));
}
break;
case datacarriersize:
if (changed()) {
const int nNewSize = value.toInt();
const bool fNewEn = (nNewSize > 0);
if (fNewEn) {
if (!node().mempool().m_opts.max_datacarrier_bytes.has_value()) {
gArgs.ModifyRWConfigFile("datacarrier", strprintf("%d", fNewEn));
}
gArgs.ModifyRWConfigFile("datacarriersize", value.toString().toStdString());
node().mempool().m_opts.max_datacarrier_bytes = nNewSize;
} else {
gArgs.ModifyRWConfigFile("datacarrier", "0");
node().mempool().m_opts.max_datacarrier_bytes = std::nullopt;
}
}
break;
default:
break;
}

View File

@ -92,6 +92,7 @@ public:
limitdescendantcount,
limitdescendantsize,
rejectbaremultisig, // bool
datacarriersize,
OptionIDRowCount,
};