GUI/Options: Configure maxscriptsize using settings

This commit is contained in:
Luke Dashjr 2025-02-04 01:55:22 +00:00
parent 57fadfa036
commit 0b07575691
4 changed files with 18 additions and 0 deletions

View File

@ -307,6 +307,12 @@ OptionsDialog::OptionsDialog(QWidget* parent, bool enableWallet)
verticalLayout_Spamfiltering->addWidget(rejectbaremultisig);
FixTabOrder(rejectbaremultisig);
maxscriptsize = new QSpinBox(groupBox_Spamfiltering);
maxscriptsize->setMinimum(0);
maxscriptsize->setMaximum(std::numeric_limits<int>::max());
maxscriptsize->setToolTip(tr("There may be rare smart contracts that require a large amount of code, but more often a larger code segment is actually just spam finding new ways to try to evade filtering. 1650 bytes is sometimes considered the high end of what might be normal, usually for N-of-20 multisig."));
CreateOptionUI(verticalLayout_Spamfiltering, maxscriptsize, tr("Ignore transactions with smart contract code larger than %s bytes."));
datacarriersize = new QSpinBox(groupBox_Spamfiltering);
datacarriersize->setMinimum(0);
datacarriersize->setMaximum(std::numeric_limits<int>::max());
@ -627,6 +633,7 @@ void OptionsDialog::setMapper()
mapper->addMapping(limitdescendantcount, OptionsModel::limitdescendantcount);
mapper->addMapping(limitdescendantsize, OptionsModel::limitdescendantsize);
mapper->addMapping(rejectbaremultisig, OptionsModel::rejectbaremultisig);
mapper->addMapping(maxscriptsize, OptionsModel::maxscriptsize);
mapper->addMapping(datacarriercost, OptionsModel::datacarriercost);
mapper->addMapping(datacarriersize, OptionsModel::datacarriersize);
mapper->addMapping(dustrelayfee, OptionsModel::dustrelayfee);

View File

@ -115,6 +115,7 @@ private:
QSpinBox *limitdescendantcount;
QSpinBox *limitdescendantsize;
QCheckBox *rejectbaremultisig;
QSpinBox *maxscriptsize;
QSpinBox *datacarriersize;
QDoubleSpinBox *datacarriercost;
BitcoinAmountField *dustrelayfee;

View File

@ -675,6 +675,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 maxscriptsize:
return ::g_script_size_policy_limit;
case datacarriercost:
return double(::g_weight_per_data_byte) / WITNESS_SCALE_FACTOR;
case datacarriersize:
@ -1175,6 +1177,13 @@ bool OptionsModel::setOption(OptionID option, const QVariant& value, const std::
gArgs.ModifyRWConfigFile("permitbaremultisig", strprintf("%d", fNewValue));
}
break;
case maxscriptsize:
if (changed()) {
const auto nv = value.toLongLong();
update(nv);
::g_script_size_policy_limit = nv;
}
break;
case datacarriercost:
if (changed()) {
const double nNewSize = value.toDouble();

View File

@ -96,6 +96,7 @@ public:
limitdescendantcount,
limitdescendantsize,
rejectbaremultisig, // bool
maxscriptsize,
datacarriercost, // double
datacarriersize,
dustrelayfee,