From 80196bad5c5fc83a822bc8d49d6c84a32afe968e Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Mon, 3 Feb 2025 23:38:54 +0000 Subject: [PATCH] Qt/Options: Configure datacarrier[size] using rwconf --- src/qt/optionsdialog.cpp | 7 +++++++ src/qt/optionsdialog.h | 1 + src/qt/optionsmodel.cpp | 18 ++++++++++++++++++ src/qt/optionsmodel.h | 1 + 4 files changed, 27 insertions(+) diff --git a/src/qt/optionsdialog.cpp b/src/qt/optionsdialog.cpp index 2f9985c009..7b7b2f882b 100644 --- a/src/qt/optionsdialog.cpp +++ b/src/qt/optionsdialog.cpp @@ -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::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 diff --git a/src/qt/optionsdialog.h b/src/qt/optionsdialog.h index cf5b63c3cb..1487b2162d 100644 --- a/src/qt/optionsdialog.h +++ b/src/qt/optionsdialog.h @@ -101,6 +101,7 @@ private: QSpinBox *limitdescendantcount; QSpinBox *limitdescendantsize; QCheckBox *rejectbaremultisig; + QSpinBox *datacarriersize; }; #endif // BITCOIN_QT_OPTIONSDIALOG_H diff --git a/src/qt/optionsmodel.cpp b/src/qt/optionsmodel.cpp index 61957c3545..31bc00d249 100644 --- a/src/qt/optionsmodel.cpp +++ b/src/qt/optionsmodel.cpp @@ -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; } diff --git a/src/qt/optionsmodel.h b/src/qt/optionsmodel.h index 8e362fd2db..ad79045ce0 100644 --- a/src/qt/optionsmodel.h +++ b/src/qt/optionsmodel.h @@ -92,6 +92,7 @@ public: limitdescendantcount, limitdescendantsize, rejectbaremultisig, // bool + datacarriersize, OptionIDRowCount, };