diff --git a/src/qt/optionsdialog.cpp b/src/qt/optionsdialog.cpp index e66e767c85..fca06369a6 100644 --- a/src/qt/optionsdialog.cpp +++ b/src/qt/optionsdialog.cpp @@ -320,6 +320,9 @@ OptionsDialog::OptionsDialog(QWidget* parent, bool enableWallet) verticalLayout_Mining->addWidget(new QLabel(tr("Note that mining is heavily influenced by the settings on the Mempool tab."))); + blockmintxfee = new BitcoinAmountField(tabMining); + CreateOptionUI(verticalLayout_Mining, blockmintxfee, tr("Only mine transactions paying a fee of at least %s per kvB.")); + blockmaxsize = new QSpinBox(tabMining); blockmaxsize->setMinimum(1); blockmaxsize->setMaximum((MAX_BLOCK_SERIALIZED_SIZE - 1000) / 1000); @@ -604,6 +607,7 @@ void OptionsDialog::setMapper() /* Mining tab */ + mapper->addMapping(blockmintxfee, OptionsModel::blockmintxfee); mapper->addMapping(blockmaxsize, OptionsModel::blockmaxsize); mapper->addMapping(blockprioritysize, OptionsModel::blockprioritysize); mapper->addMapping(blockmaxweight, OptionsModel::blockmaxweight); diff --git a/src/qt/optionsdialog.h b/src/qt/optionsdialog.h index 94cf45ba3d..642ceabfae 100644 --- a/src/qt/optionsdialog.h +++ b/src/qt/optionsdialog.h @@ -116,6 +116,7 @@ private: QSpinBox *datacarriersize; BitcoinAmountField *dustrelayfee; + BitcoinAmountField *blockmintxfee; QSpinBox *blockmaxsize, *blockprioritysize, *blockmaxweight; }; diff --git a/src/qt/optionsmodel.cpp b/src/qt/optionsmodel.cpp index da9e0dd088..20cb8a6c91 100644 --- a/src/qt/optionsmodel.cpp +++ b/src/qt/optionsmodel.cpp @@ -673,6 +673,12 @@ QVariant OptionsModel::getOption(OptionID option, const std::string& suffix) con return qlonglong(node().mempool().m_opts.max_datacarrier_bytes.value_or(0)); case dustrelayfee: return qlonglong(node().mempool().m_opts.dust_relay_feerate_floor.GetFeePerK()); + case blockmintxfee: + if (gArgs.IsArgSet("-blockmintxfee")) { + return qlonglong(ParseMoney(gArgs.GetArg("-blockmintxfee", "")).value_or(0)); + } else { + return qlonglong(DEFAULT_BLOCK_MIN_TX_FEE); + } case blockmaxsize: return qlonglong(gArgs.GetIntArg("-blockmaxsize", DEFAULT_BLOCK_MAX_SIZE) / 1000); case blockprioritysize: @@ -1179,6 +1185,13 @@ bool OptionsModel::setOption(OptionID option, const QVariant& value, const std:: } } break; + case blockmintxfee: + if (changed()) { + std::string strNv = FormatMoney(value.toLongLong()); + gArgs.ForceSetArg("-blockmintxfee", strNv); + gArgs.ModifyRWConfigFile("blockmintxfee", strNv); + } + break; case blockmaxsize: case blockprioritysize: case blockmaxweight: diff --git a/src/qt/optionsmodel.h b/src/qt/optionsmodel.h index 143ce6cbaa..333c0ea256 100644 --- a/src/qt/optionsmodel.h +++ b/src/qt/optionsmodel.h @@ -97,6 +97,7 @@ public: rejectbaremultisig, // bool datacarriersize, dustrelayfee, + blockmintxfee, blockmaxsize, blockprioritysize, blockmaxweight,