update nbx + prep bitcoin payment data ctor change

This commit is contained in:
Kukks
2019-12-01 15:30:56 +01:00
parent b8288f1efa
commit e31e600144
6 changed files with 39 additions and 9 deletions

View File

@@ -5,6 +5,6 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.9" Condition="'$(TargetFramework)' == 'netcoreapp2.1'" /> <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.9" Condition="'$(TargetFramework)' == 'netcoreapp2.1'" />
<FrameworkReference Include="Microsoft.AspNetCore.App" Condition="'$(TargetFramework)' != 'netcoreapp2.1'" /> <FrameworkReference Include="Microsoft.AspNetCore.App" Condition="'$(TargetFramework)' != 'netcoreapp2.1'" />
<PackageReference Include="NBXplorer.Client" Version="2.0.0.26" /> <PackageReference Include="NBXplorer.Client" Version="3.0.0" />
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@@ -252,7 +252,7 @@ namespace BTCPayServer.Controllers
vm.Id = tx.TransactionId.ToString(); vm.Id = tx.TransactionId.ToString();
vm.Link = string.Format(CultureInfo.InvariantCulture, paymentMethod.Network.BlockExplorerLink, vm.Id); vm.Link = string.Format(CultureInfo.InvariantCulture, paymentMethod.Network.BlockExplorerLink, vm.Id);
vm.Timestamp = tx.Timestamp; vm.Timestamp = tx.Timestamp;
vm.Positive = tx.BalanceChange >= Money.Zero; vm.Positive = tx.BalanceChange.GetValue(wallet.Network) >= Money.Zero;
vm.Balance = tx.BalanceChange.ToString(); vm.Balance = tx.BalanceChange.ToString();
vm.IsConfirmed = tx.Confirmations != 0; vm.IsConfirmed = tx.Confirmations != 0;
@@ -912,7 +912,7 @@ namespace BTCPayServer.Controllers
} }
else if (command == "prune") else if (command == "prune")
{ {
var result = await ExplorerClientProvider.GetExplorerClient(walletId.CryptoCode).PruneAsync(derivationScheme.AccountDerivation, cancellationToken); var result = await ExplorerClientProvider.GetExplorerClient(walletId.CryptoCode).PruneAsync(derivationScheme.AccountDerivation, new PruneRequest(), cancellationToken);
if (result.TotalPruned == 0) if (result.TotalPruned == 0)
{ {
TempData[WellKnownTempData.SuccessMessage] = $"The wallet is already pruned"; TempData[WellKnownTempData.SuccessMessage] = $"The wallet is already pruned";

View File

@@ -0,0 +1,30 @@
using System;
using System.Linq;
using NBitcoin;
namespace BTCPayServer
{
public static class MoneyExtensions
{
public static Money GetValue(this IMoney m, BTCPayNetwork network = null)
{
switch (m)
{
case Money money:
return money;
case MoneyBag mb:
return mb.Select(money => money.GetValue(network)).Sum();
// case AssetMoney assetMoney:
// if (network is ElementsBTCPayNetwork elementsBTCPayNetwork)
// {
// return elementsBTCPayNetwork.AssetId == assetMoney.AssetId
// ? new Money(assetMoney.Quantity)
// : Money.Zero;
// }
// throw new NotSupportedException("IMoney type not supported");
default:
throw new NotSupportedException("IMoney type not supported");
}
}
}
}

View File

@@ -20,10 +20,10 @@ namespace BTCPayServer.Payments.Bitcoin
{ {
} }
public BitcoinLikePaymentData(Coin coin, bool rbf) public BitcoinLikePaymentData(TxOut txout, OutPoint outpoint, bool rbf)
{ {
Outpoint = coin.Outpoint; Outpoint = outpoint;
Output = coin.TxOut; Output = txout;
ConfirmationCount = 0; ConfirmationCount = 0;
RBF = rbf; RBF = rbf;
} }

View File

@@ -157,7 +157,7 @@ namespace BTCPayServer.Payments.Bitcoin
var invoice = (await _InvoiceRepository.GetInvoicesFromAddresses(new [] {key})).FirstOrDefault(); var invoice = (await _InvoiceRepository.GetInvoicesFromAddresses(new [] {key})).FirstOrDefault();
if (invoice != null) if (invoice != null)
{ {
var paymentData = new BitcoinLikePaymentData(txCoin, evt.TransactionData.Transaction.RBF); var paymentData = new BitcoinLikePaymentData(txCoin.TxOut, txCoin.Outpoint, evt.TransactionData.Transaction.RBF);
var alreadyExist = GetAllBitcoinPaymentData(invoice).Where(c => c.GetPaymentId() == paymentData.GetPaymentId()).Any(); var alreadyExist = GetAllBitcoinPaymentData(invoice).Where(c => c.GetPaymentId() == paymentData.GetPaymentId()).Any();
if (!alreadyExist) if (!alreadyExist)
{ {
@@ -338,7 +338,7 @@ namespace BTCPayServer.Payments.Bitcoin
foreach (var coin in coins.Where(c => !alreadyAccounted.Contains(c.Coin.Outpoint))) foreach (var coin in coins.Where(c => !alreadyAccounted.Contains(c.Coin.Outpoint)))
{ {
var transaction = await wallet.GetTransactionAsync(coin.Coin.Outpoint.Hash); var transaction = await wallet.GetTransactionAsync(coin.Coin.Outpoint.Hash);
var paymentData = new BitcoinLikePaymentData(coin.Coin, transaction.Transaction.RBF); var paymentData = new BitcoinLikePaymentData(coin.Coin.TxOut, coin.Coin.Outpoint, transaction.Transaction.RBF);
var payment = await _InvoiceRepository.AddPayment(invoice.Id, coin.Timestamp, paymentData, network).ConfigureAwait(false); var payment = await _InvoiceRepository.AddPayment(invoice.Id, coin.Timestamp, paymentData, network).ConfigureAwait(false);
alreadyAccounted.Add(coin.Coin.Outpoint); alreadyAccounted.Add(coin.Coin.Outpoint);
if (payment != null) if (payment != null)

View File

@@ -181,7 +181,7 @@ namespace BTCPayServer.Services.Wallets
public async Task<Money> GetBalance(DerivationStrategyBase derivationStrategy, CancellationToken cancellation = default(CancellationToken)) public async Task<Money> GetBalance(DerivationStrategyBase derivationStrategy, CancellationToken cancellation = default(CancellationToken))
{ {
UTXOChanges changes = await GetUTXOChanges(derivationStrategy, cancellation); UTXOChanges changes = await GetUTXOChanges(derivationStrategy, cancellation);
return changes.GetUnspentUTXOs().Select(c => c.Value).Sum(); return changes.GetUnspentUTXOs().Select(c => c.Value.GetValue(_Network)).Sum();
} }
} }
} }