Progress mixing
MODIFY
WalletWasabi.Gui/Controls/WalletExplorer/CoinJoinTabView.xaml
WalletWasabi.Gui/Controls/WalletExplorer/CoinJoinTabView.xaml
<controls:GroupBox Title="Status" TextBlock.FontSize="16" Padding="10" Margin="10 5 10 5" Grid.Row="1">
<Grid Classes="content">
<StackPanel Orientation="Vertical">
+
+ <StackPanel Orientation="Horizontal" Gap="4">
+ <TextBlock Text="Minimum"> </TextBlock>
+ <TextBlock Text="{Binding RequiredBTC}"> </TextBlock>
+ <TextBlock Text="BTC is required to be queued for CoinJoin."> </TextBlock>
+ </StackPanel>
+
+ <StackPanel Orientation="Horizontal" Gap="4">
+ <TextBlock Text="Coordinator Fee:"> </TextBlock>
+ <TextBlock Text="{Binding CoordinatorFeePercent}"> </TextBlock>
+ <TextBlock Text="%"> </TextBlock>
+ </StackPanel>
+
<StackPanel Orientation="Horizontal" Gap="4">
<TextBlock Text="Round ID:"> </TextBlock>
<TextBlock Text="{Binding RoundId}"> </TextBlock>

MODIFY
WalletWasabi.Gui/Controls/WalletExplorer/CoinJoinTabViewModel.cs
WalletWasabi.Gui/Controls/WalletExplorer/CoinJoinTabViewModel.cs
@@ -5,6 +5,7 @@ using System.Linq;
using System.Reactive.Linq;
using System.Text;
using Avalonia.Controls;
+using NBitcoin;
using ReactiveUI;
using WalletWasabi.Models.ChaumianCoinJoin;
@@ -16,6 +17,8 @@ namespace WalletWasabi.Gui.Controls.WalletExplorer
private CoinListViewModel _queuedCoinsList;
private long _roundId;
private string _phase;
+ private string _requiredBTC;
+ private string _coordinatorFeePercent;
private int _peersRegistered;
private int _peersNeeded;
private string _password;
@@ -39,6 +42,19 @@ namespace WalletWasabi.Gui.Controls.WalletExplorer
QueuedCoinsList = new CoinListViewModel(queued);
+ var registrableRound = Global.ChaumianClient.State.GetRegistrableRoundOrDefault();
+ if (registrableRound != default)
+ {
+ CoordinatorFeePercent = registrableRound.State.CoordinatorFeePercent.ToString();
+ var reqBTC = registrableRound.State.Denomination + registrableRound.State.Denomination.Percentange(0.3m) + registrableRound.State.FeePerInputs * registrableRound.State.MaximumInputCountPerPeer + registrableRound.State.FeePerOutputs * 2;
+ RequiredBTC = reqBTC.ToString(false, true);
+ }
+ else
+ {
+ CoordinatorFeePercent = "0.3";
+ RequiredBTC = "-";
+ }
+
var mostAdvancedRound = Global.ChaumianClient.State.GetMostAdvancedRoundOrDefault();
if (mostAdvancedRound != default)
{
@@ -83,6 +99,13 @@ namespace WalletWasabi.Gui.Controls.WalletExplorer
private void ChaumianClient_StateUpdated(object sender, EventArgs e)
{
+ var registrableRound = Global.ChaumianClient.State.GetRegistrableRoundOrDefault();
+ if (registrableRound != default)
+ {
+ CoordinatorFeePercent = registrableRound.State.CoordinatorFeePercent.ToString();
+ var reqBTC = registrableRound.State.Denomination + registrableRound.State.Denomination.Percentange(0.3m) + registrableRound.State.FeePerInputs * registrableRound.State.MaximumInputCountPerPeer + registrableRound.State.FeePerOutputs * 2;
+ RequiredBTC = reqBTC.ToString(false, true);
+ }
var mostAdvancedRound = Global.ChaumianClient.State.GetMostAdvancedRoundOrDefault();
if (mostAdvancedRound != default)
{
@@ -133,6 +156,18 @@ namespace WalletWasabi.Gui.Controls.WalletExplorer
set { this.RaiseAndSetIfChanged(ref _phase, value); }
}
+ public string RequiredBTC
+ {
+ get { return _requiredBTC; }
+ set { this.RaiseAndSetIfChanged(ref _requiredBTC, value); }
+ }
+
+ public string CoordinatorFeePercent
+ {
+ get { return _coordinatorFeePercent; }
+ set { this.RaiseAndSetIfChanged(ref _coordinatorFeePercent, value); }
+ }
+
public int PeersRegistered
{
get { return _peersRegistered; }

Progress mixing