diff --git a/src/qt/forms/optionsdialog.ui b/src/qt/forms/optionsdialog.ui
index 2019bfb0e554f..05d7c3a015da8 100644
--- a/src/qt/forms/optionsdialog.ui
+++ b/src/qt/forms/optionsdialog.ui
@@ -173,6 +173,16 @@
+ -
+
+
+ Whether to use experimental PrivateSend mode with multiple mixing sessions per block.<br/>Note: You must use this feature carefully.<br/>Make sure you always have recent wallet (auto)backup in a safe place!
+
+
+ Enable PrivateSend &multi-session
+
+
+
-
diff --git a/src/qt/optionsdialog.cpp b/src/qt/optionsdialog.cpp
index f30bb0556a49c..961d389b7585e 100644
--- a/src/qt/optionsdialog.cpp
+++ b/src/qt/optionsdialog.cpp
@@ -201,6 +201,7 @@ void OptionsDialog::setMapper()
mapper->addMapping(ui->coinControlFeatures, OptionsModel::CoinControlFeatures);
mapper->addMapping(ui->privateSendRounds, OptionsModel::PrivateSendRounds);
mapper->addMapping(ui->anonymizeDash, OptionsModel::AnonymizeDashAmount);
+ mapper->addMapping(ui->privateSendMultiSession, OptionsModel::PrivateSendMultiSession);
/* Network */
mapper->addMapping(ui->mapPortUpnp, OptionsModel::MapPortUPnP);
diff --git a/src/qt/optionsmodel.cpp b/src/qt/optionsmodel.cpp
index 03cc392c6d160..2889768177e81 100644
--- a/src/qt/optionsmodel.cpp
+++ b/src/qt/optionsmodel.cpp
@@ -131,6 +131,12 @@ void OptionsModel::Init(bool resetSettings)
if (!SoftSetArg("-anonymizedashamount", settings.value("nAnonymizeDashAmount").toString().toStdString()))
addOverriddenOption("-anonymizedashamount");
nAnonymizeDashAmount = settings.value("nAnonymizeDashAmount").toInt();
+
+ if (!settings.contains("fPrivateSendMultiSession"))
+ settings.setValue("fPrivateSendMultiSession", fPrivateSendMultiSession);
+ if (!SoftSetBoolArg("-privatesendmultisession", settings.value("fPrivateSendMultiSession").toBool()))
+ addOverriddenOption("-privatesendmultisession");
+ fPrivateSendMultiSession = settings.value("fPrivateSendMultiSession").toBool();
#endif
// Network
@@ -251,6 +257,8 @@ QVariant OptionsModel::data(const QModelIndex & index, int role) const
return settings.value("nAnonymizeDashAmount");
case ShowMasternodesTab:
return settings.value("fShowMasternodesTab");
+ case PrivateSendMultiSession:
+ return settings.value("fPrivateSendMultiSession");
#endif
case DisplayUnit:
return nDisplayUnit;
@@ -400,6 +408,13 @@ bool OptionsModel::setData(const QModelIndex & index, const QVariant & value, in
setRestartRequired(true);
}
break;
+ case PrivateSendMultiSession:
+ if (settings.value("fPrivateSendMultiSession") != value)
+ {
+ fPrivateSendMultiSession = value.toBool();
+ settings.setValue("fPrivateSendMultiSession", fPrivateSendMultiSession);
+ }
+ break;
#endif
case DisplayUnit:
setDisplayUnit(value);
diff --git a/src/qt/optionsmodel.h b/src/qt/optionsmodel.h
index df219681e4b47..613c8adc43a64 100644
--- a/src/qt/optionsmodel.h
+++ b/src/qt/optionsmodel.h
@@ -50,6 +50,7 @@ class OptionsModel : public QAbstractListModel
PrivateSendRounds, // int
AnonymizeDashAmount, // int
ShowMasternodesTab, // bool
+ PrivateSendMultiSession,// bool
Listen, // bool
OptionIDRowCount,
};