Avoid trying to broadcast when output registration failed.
MODIFY
WalletWasabi/Models/ChaumianCoinJoin/CcjRound.cs
WalletWasabi/Models/ChaumianCoinJoin/CcjRound.cs
@@ -33,6 +33,8 @@ namespace WalletWasabi.Models.ChaumianCoinJoin
public Transaction UnsignedCoinJoin { get; private set; }
private string _unsignedCoinJoinHex;
+ private bool OutputRegistrationFailed { get; set; }
+
public MixingLevels MixingLevels { get; }
public string GetUnsignedCoinJoinHex()
@@ -167,6 +169,8 @@ namespace WalletWasabi.Models.ChaumianCoinJoin
UnsignedCoinJoin = null;
SignedCoinJoin = null;
+ OutputRegistrationFailed = false;
+
Alices = new List<Alice>();
Bobs = new List<Bob>();
@@ -419,6 +423,7 @@ namespace WalletWasabi.Models.ChaumianCoinJoin
}
else if (expectedPhase == CcjRoundPhase.OutputRegistration)
{
+ OutputRegistrationFailed = true;
Logger.LogInfo<CcjRound>($"{timedOutLogString} Progressing to signing phase to blame...");
}
else
@@ -936,6 +941,12 @@ namespace WalletWasabi.Models.ChaumianCoinJoin
{
Logger.LogInfo<CcjRound>($"Round ({RoundId}): Trying to broadcast coinjoin.");
+ if (OutputRegistrationFailed)
+ {
+ Abort(nameof(CcjRound), $"Round ({RoundId}): Although all alices signed, OutputRegistration failed, so the CoinJoin won't be broadcasted.", syncLock: false);
+ }
+ else
+ {
try
{
Coin[] spentCoins = Alices.SelectMany(x => x.Inputs).ToArray();
@@ -966,6 +977,7 @@ namespace WalletWasabi.Models.ChaumianCoinJoin
}
}
}
+ }
public void UpdateAnonymitySet(int anonymitySet, bool syncLock = true)
{

Avoid trying to broadcast when output registration failed.