Skip to content

Commit 05b9424

Browse files
UdjinM6knstthephez
authored
feat(qt): Expose -coinjoinsessions, -coinjoindenomsgoal and -coinjoindenomshardcap in CoinJoin Options (#5549)
## Issue being fixed or feature implemented Let GUI users control all CJ params (on the fly) without the need to edit `dash.conf`. <img width="643" alt="Screenshot 2023-08-27 at 12 29 07" src="https://github.com/dashpay/dash/assets/1935069/2d90db0d-c7b2-43a9-9f7f-1c4ad9517408"> ## What was done? Add 3 corresponding spin boxes in Options (with a simple sanity check). I tried my best to come up with the least confusing labels/tooltips for these, not sure if I'm 100% happy with the result though. ## How Has This Been Tested? Run qt wallet, play with values and make sure they are saved/loaded/used in mixing correctly. ## Breaking Changes n/a ## Checklist: - [x] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] I have added or updated relevant unit/integration/functional/e2e tests - [ ] I have made corresponding changes to the documentation - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_ --------- Co-authored-by: Konstantin Akimov <knstqq@gmail.com> Co-authored-by: thephez <thephez@users.noreply.github.com>
1 parent d080b4c commit 05b9424

File tree

9 files changed

+291
-85
lines changed

9 files changed

+291
-85
lines changed

src/coinjoin/options.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,12 @@ void CCoinJoinClientOptions::SetMultiSessionEnabled(bool fEnabled)
3131
options.fCoinJoinMultiSession = fEnabled;
3232
}
3333

34+
void CCoinJoinClientOptions::SetSessions(int sessions)
35+
{
36+
CCoinJoinClientOptions& options = CCoinJoinClientOptions::Get();
37+
options.nCoinJoinSessions = sessions;
38+
}
39+
3440
void CCoinJoinClientOptions::SetRounds(int nRounds)
3541
{
3642
CCoinJoinClientOptions& options = CCoinJoinClientOptions::Get();
@@ -43,6 +49,18 @@ void CCoinJoinClientOptions::SetAmount(CAmount amount)
4349
options.nCoinJoinAmount = amount;
4450
}
4551

52+
void CCoinJoinClientOptions::SetDenomsGoal(int denoms_goal)
53+
{
54+
CCoinJoinClientOptions& options = CCoinJoinClientOptions::Get();
55+
options.nCoinJoinDenomsGoal = denoms_goal;
56+
}
57+
58+
void CCoinJoinClientOptions::SetDenomsHardCap(int denoms_hardcap)
59+
{
60+
CCoinJoinClientOptions& options = CCoinJoinClientOptions::Get();
61+
options.nCoinJoinDenomsHardCap = denoms_hardcap;
62+
}
63+
4664
void CCoinJoinClientOptions::Init()
4765
{
4866
assert(!CCoinJoinClientOptions::_instance);

src/coinjoin/options.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,11 @@ class CCoinJoinClientOptions
6161

6262
static void SetEnabled(bool fEnabled);
6363
static void SetMultiSessionEnabled(bool fEnabled);
64+
static void SetSessions(int sessions);
6465
static void SetRounds(int nRounds);
6566
static void SetAmount(CAmount amount);
67+
static void SetDenomsGoal(int denoms_goal);
68+
static void SetDenomsHardCap(int denoms_hardcap);
6669

6770
static bool IsEnabled() { return CCoinJoinClientOptions::Get().fEnableCoinJoin; }
6871
static bool IsMultiSessionEnabled() { return CCoinJoinClientOptions::Get().fCoinJoinMultiSession; }

src/interfaces/node.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,19 @@ namespace CoinJoin {
8282
class Options
8383
{
8484
public:
85+
virtual int getSessions() = 0;
8586
virtual int getRounds() = 0;
8687
virtual int getAmount() = 0;
88+
virtual int getDenomsGoal() = 0;
89+
virtual int getDenomsHardCap() = 0;
8790

8891
virtual void setEnabled(bool fEnabled) = 0;
8992
virtual void setMultiSessionEnabled(bool fEnabled) = 0;
93+
virtual void setSessions(int sessions) = 0;
9094
virtual void setRounds(int nRounds) = 0;
9195
virtual void setAmount(CAmount amount) = 0;
96+
virtual void setDenomsGoal(int denoms_goal) = 0;
97+
virtual void setDenomsHardCap(int denoms_hardcap) = 0;
9298

9399
virtual bool isMultiSessionEnabled() = 0;
94100
virtual bool isEnabled() = 0;

src/node/interfaces.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,10 @@ namespace CoinJoin = interfaces::CoinJoin;
125125
class CoinJoinOptionsImpl : public CoinJoin::Options
126126
{
127127
public:
128+
int getSessions() override
129+
{
130+
return CCoinJoinClientOptions::GetSessions();
131+
}
128132
int getRounds() override
129133
{
130134
return CCoinJoinClientOptions::GetRounds();
@@ -133,6 +137,14 @@ class CoinJoinOptionsImpl : public CoinJoin::Options
133137
{
134138
return CCoinJoinClientOptions::GetAmount();
135139
}
140+
int getDenomsGoal() override
141+
{
142+
return CCoinJoinClientOptions::GetDenomsGoal();
143+
}
144+
int getDenomsHardCap() override
145+
{
146+
return CCoinJoinClientOptions::GetDenomsHardCap();
147+
}
136148
void setEnabled(bool fEnabled) override
137149
{
138150
return CCoinJoinClientOptions::SetEnabled(fEnabled);
@@ -141,6 +153,10 @@ class CoinJoinOptionsImpl : public CoinJoin::Options
141153
{
142154
CCoinJoinClientOptions::SetMultiSessionEnabled(fEnabled);
143155
}
156+
void setSessions(int sessions) override
157+
{
158+
CCoinJoinClientOptions::SetSessions(sessions);
159+
}
144160
void setRounds(int nRounds) override
145161
{
146162
CCoinJoinClientOptions::SetRounds(nRounds);
@@ -149,6 +165,14 @@ class CoinJoinOptionsImpl : public CoinJoin::Options
149165
{
150166
CCoinJoinClientOptions::SetAmount(amount);
151167
}
168+
void setDenomsGoal(int denoms_goal) override
169+
{
170+
CCoinJoinClientOptions::SetDenomsGoal(denoms_goal);
171+
}
172+
void setDenomsHardCap(int denoms_hardcap) override
173+
{
174+
CCoinJoinClientOptions::SetDenomsHardCap(denoms_hardcap);
175+
}
152176
bool isEnabled() override
153177
{
154178
return CCoinJoinClientOptions::IsEnabled();

0 commit comments

Comments
 (0)