update sms

This commit is contained in:
Kukks
2023-01-27 12:36:20 +01:00
parent c3267bc915
commit e625351d5b
8 changed files with 57 additions and 22 deletions

View File

@@ -1,12 +1,24 @@
using System.Text.Json;
var plugins = Directory.GetDirectories("../../../../Plugins");
Console.WriteLine(string.Join(',',plugins));
var p = string.Join(';', plugins.Select(s => $"{Path.GetFullPath(s)}/bin/Altcoins-Debug/net6.0/{Path.GetFileName(s)}.dll" ));;
var fileContents = $"{{ \"DEBUG_PLUGINS\": \"{p}\"}}";
var p = "";
foreach (var plugin in plugins)
{
var x = Directory.GetDirectories(Path.Combine(plugin,"bin"));
if (x.Any(s => s.EndsWith("Altcoins-Debug")))
{
p += $"{Path.GetFullPath(plugin)}/bin/Altcoins-Debug/net6.0/{Path.GetFileName(plugin)}.dll;";
}
else
{
p += $"{Path.GetFullPath(plugin)}/bin/Debug/net6.0/{Path.GetFileName(plugin)}.dll;";
}
}
var content = JsonSerializer.Serialize(new
{
DEBUG_PLUGINS = p
});
Console.WriteLine(content);
await File.WriteAllTextAsync("../../../../submodules/BTCPayServer/BTCPayServer/appsettings.dev.json", content);

View File

@@ -292,6 +292,7 @@ public class BTCPayWallet : IWallet, IDestinationProvider
}
}
anonset = anonset < 1 ? 1 : anonset;
return (labels, anonset, cjData);
});
@@ -324,12 +325,12 @@ public class BTCPayWallet : IWallet, IDestinationProvider
private Task _savingProgress = Task.CompletedTask;
public async Task RegisterCoinjoinTransaction(CoinJoinResult result, string coordinatorName)
public async Task RegisterCoinjoinTransaction(SuccessfulCoinJoinResult result, string coordinatorName)
{
_savingProgress = RegisterCoinjoinTransactionInternal(result, coordinatorName);
await _savingProgress;
}
private async Task RegisterCoinjoinTransactionInternal(CoinJoinResult result, string coordinatorName)
private async Task RegisterCoinjoinTransactionInternal(SuccessfulCoinJoinResult result, string coordinatorName)
{
try
{
@@ -351,7 +352,7 @@ public class BTCPayWallet : IWallet, IDestinationProvider
Dictionary<IndexedTxOut, PendingPayment> indexToPayment = new();
foreach (var script in result.RegisteredOutputs)
foreach (var script in result.OutputScripts)
{
var txout = result.UnsignedCoinJoin.Outputs.AsIndexedOutputs()
.Single(@out => @out.TxOut.ScriptPubKey == script);
@@ -372,13 +373,13 @@ public class BTCPayWallet : IWallet, IDestinationProvider
await Task.WhenAll(scriptInfos.Select(t => t.Item2));
var scriptInfos2 = scriptInfos.Where(tuple => tuple.Item2.Result is not null).ToDictionary(tuple => tuple.txout.TxOut.ScriptPubKey);
var smartTx = new SmartTransaction(result.UnsignedCoinJoin, new Height(HeightType.Unknown));
result.RegisteredCoins.ForEach(coin =>
result.Coins.ForEach(coin =>
{
coin.HdPubKey.SetKeyState(KeyState.Used);
coin.SpenderTransaction = smartTx;
smartTx.TryAddWalletInput(coin);
});
result.RegisteredOutputs.ForEach(s =>
result.OutputScripts.ForEach(s =>
{
if (scriptInfos2.TryGetValue(s, out var si))
{
@@ -446,6 +447,10 @@ public class BTCPayWallet : IWallet, IDestinationProvider
new WalletId(StoreId, "BTC"),
result.UnsignedCoinJoin.GetHash(),
attachments);
var mixedCoins = smartTx.WalletOutputs.Where(coin =>
coin.AnonymitySet > 1 && BlockchainAnalyzer.StdDenoms.Contains(coin.TxOut.Value.Satoshi));
if (storeIdForutxo != StoreId)
{
await _walletRepository.AddWalletTransactionAttachment(
@@ -453,20 +458,32 @@ public class BTCPayWallet : IWallet, IDestinationProvider
result.UnsignedCoinJoin.GetHash(),
new List<Attachment>()
{
new Attachment("coinjoin", result.RoundId.ToString(), null),
new Attachment("coinjoin", result.RoundId.ToString(), JObject.FromObject(new CoinjoinData()
{
Transaction = result.UnsignedCoinJoin.GetHash().ToString(),
Round = result.RoundId.ToString(),
CoinsOut = mixedCoins.Select(coin => new CoinjoinData.CoinjoinDataCoin()
{
AnonymitySet = coin.AnonymitySet,
Amount = coin.Amount.ToDecimal(MoneyUnit.BTC),
Outpoint = coin.Outpoint.ToString()
}).ToArray(),
CoordinatorName = coordinatorName
})),
new Attachment(coordinatorName, null, null)
});
}
var mixedCoins = smartTx.WalletOutputs.Where(coin =>
coin.AnonymitySet > 1 && BlockchainAnalyzer.StdDenoms.Contains(coin.TxOut.Value.Satoshi));
foreach (var mixedCoin in mixedCoins)
{
await _walletRepository.AddWalletTransactionAttachment(new WalletId(storeIdForutxo, "BTC"),
mixedCoin.Outpoint.ToString(),
new[] {new Attachment("anonset", mixedCoin.AnonymitySet.ToString())}, "utxo");
new[] {new Attachment("anonset", mixedCoin.AnonymitySet.ToString(), JObject.FromObject(new
{
Tooltip = $"This coin has an anonset score of {mixedCoin.AnonymitySet.ToString()} (anonset-{mixedCoin.AnonymitySet.ToString()})"
}))}, "utxo");
}

View File

@@ -46,6 +46,8 @@ Reputation risks: as the coordinator, the user may be associated with illegal ac
{
Wabisabi = await _wabisabiCoordinatorService.GetSettings();
ViewBag.Config = _wabisabiCoordinatorService.WabiSabiCoordinator.Config.ToString();
}
catch (Exception)
{
@@ -80,6 +82,7 @@ Reputation risks: as the coordinator, the user may be associated with illegal ac
public async Task<IActionResult> UpdateWabisabiSettings(WabisabiCoordinatorSettings vm,
string command, string config)
{
ViewBag.Config = config;
switch (command)
{
case "nostr-current-url":

View File

@@ -28,7 +28,7 @@
<span class="text-danger">@string.Join("\n", error.Errors)</span>
}
<textarea rows="10" cols="40" class="form-control" id="config" name="config" >
@Html.Raw(WabisabiCoordinatorService.WabiSabiCoordinator.Config.ToString())
@Html.Raw(ViewBag.Config)
</textarea>
</div>
<div class="form-group pt-3">

View File

@@ -281,7 +281,10 @@
<th scope="row">Minimum inputs</th><td>@round.MinInputCountByRound</td>
</tr>
<tr>
<th scope="row">Max inputs</th><td>@round.MaxInputCountByRound</td>
<th scope="row">Maximum inputs</th><td>@round.MaxInputCountByRound</td>
</tr>
<tr>
<th scope="row">Maximum round registration time</th><td>@round.StandardInputRegistrationTimeout.ToString()</td>
</tr>
</table>
@@ -293,7 +296,7 @@
</div>
</div>
</div>
<a class="w-100 px-2 cursor-pointer"
<a class="px-2 cursor-pointer"
data-bs-toggle="modal" data-bs-target="#config-@s.Coordinator">
Coordinator Config
</a>
@@ -302,7 +305,7 @@
</div>
<div class="form-group form-check form">
<input asp-for="Settings[index].Enabled" type="checkbox" class="form-check-input form-control-lg toggle-settings" data-coordinator="@s.Coordinator" disabled="@(!coordinator.WasabiCoordinatorStatusFetcher.Connected)" />
<a class="w-100 px-2 position-absolute bottom-0 cursor-pointer"
<a class="px-2 position-absolute bottom-0 cursor-pointer"
data-bs-toggle="modal" data-bs-target="#terms-@s.Coordinator"
style="
right: 0;

View File

@@ -202,23 +202,23 @@ public class WabisabiCoordinatorClientInstance
var result = completedEventArgs.CoinJoinResult;
if (completedEventArgs.CompletionStatus == CompletionStatus.Success)
if (completedEventArgs.CompletionStatus == CompletionStatus.Success && result is SuccessfulCoinJoinResult successfulCoinJoinResult)
{
Task.Run(async () =>
{
var wallet = (BTCPayWallet) e.Wallet;
await wallet.RegisterCoinjoinTransaction(result, CoordinatorName);
await wallet.RegisterCoinjoinTransaction(successfulCoinJoinResult, CoordinatorName);
});
}
else
else if(result is DisruptedCoinJoinResult disruptedCoinJoinResult )
{
Task.Run(async () =>
{
// _logger.LogInformation("unlocking coins because round failed");
await _utxoLocker.TryUnlock(
result.RegisteredCoins.Select(coin => coin.Outpoint).ToArray());
disruptedCoinJoinResult.SignedCoins.Select(coin => coin.Outpoint).ToArray());
});
break;
}