diff --git a/BTCPayServer.Tests/GreenfieldAPITests.cs b/BTCPayServer.Tests/GreenfieldAPITests.cs index 9e573f920..ceb0f3118 100644 --- a/BTCPayServer.Tests/GreenfieldAPITests.cs +++ b/BTCPayServer.Tests/GreenfieldAPITests.cs @@ -3412,8 +3412,8 @@ namespace BTCPayServer.Tests }); Assert.Empty(await adminClient.GetStoreLightningAutomatedPayoutProcessors(admin.StoreId, "BTC_LightningNetwork")); await adminClient.UpdateStoreLightningAutomatedPayoutProcessors(admin.StoreId, "BTC_LightningNetwork", - new LightningAutomatedPayoutSettings() { IntervalSeconds = TimeSpan.FromSeconds(2) }); - Assert.Equal(2, Assert.Single(await adminClient.GetStoreLightningAutomatedPayoutProcessors(admin.StoreId, "BTC_LightningNetwork")).IntervalSeconds.TotalSeconds); + new LightningAutomatedPayoutSettings() { IntervalSeconds = TimeSpan.FromSeconds(600) }); + Assert.Equal(600, Assert.Single(await adminClient.GetStoreLightningAutomatedPayoutProcessors(admin.StoreId, "BTC_LightningNetwork")).IntervalSeconds.TotalSeconds); await TestUtils.EventuallyAsync(async () => { var payoutC = @@ -3513,7 +3513,7 @@ namespace BTCPayServer.Tests Assert.Empty(await adminClient.GetPayoutProcessors(admin.StoreId)); // Send just enough money to cover the smallest of the payouts. - var fee = (await tester.ExplorerClient.GetFeeRateAsync(1000)).FeeRate.GetFee(150); + var fee = (await tester.PayTester.GetService().CreateFeeProvider(tester.DefaultNetwork).GetFeeRateAsync(100)).GetFee(150); await tester.ExplorerNode.SendToAddressAsync(BitcoinAddress.Create((await adminClient.GetOnChainWalletReceiveAddress(admin.StoreId, "BTC", true)).Address, tester.ExplorerClient.Network.NBitcoinNetwork), Money.Coins(0.00001m) + fee); await tester.ExplorerNode.GenerateAsync(1); diff --git a/BTCPayServer.Tests/ServerTester.cs b/BTCPayServer.Tests/ServerTester.cs index 92a4ca143..bbc66d34d 100644 --- a/BTCPayServer.Tests/ServerTester.cs +++ b/BTCPayServer.Tests/ServerTester.cs @@ -248,6 +248,8 @@ namespace BTCPayServer.Tests public List Stores { get; internal set; } = new List(); public bool DeleteStore { get; set; } = true; + public BTCPayNetworkBase DefaultNetwork => NetworkProvider.DefaultNetwork; + public void Dispose() { foreach (var r in this.Resources) diff --git a/BTCPayServer/PayoutProcessors/OnChain/OnChainAutomatedPayoutProcessor.cs b/BTCPayServer/PayoutProcessors/OnChain/OnChainAutomatedPayoutProcessor.cs index c4d078cef..e1db3f313 100644 --- a/BTCPayServer/PayoutProcessors/OnChain/OnChainAutomatedPayoutProcessor.cs +++ b/BTCPayServer/PayoutProcessors/OnChain/OnChainAutomatedPayoutProcessor.cs @@ -43,7 +43,8 @@ namespace BTCPayServer.PayoutProcessors.OnChain PayoutProcessorData payoutProcesserSettings, PullPaymentHostedService pullPaymentHostedService, BTCPayNetworkProvider btcPayNetworkProvider, - IPluginHookService pluginHookService) : + IPluginHookService pluginHookService, + IFeeProviderFactory feeProviderFactory) : base(logger, storeRepository, payoutProcesserSettings, applicationDbContextFactory, pullPaymentHostedService, btcPayNetworkProvider, pluginHookService) { @@ -53,9 +54,11 @@ namespace BTCPayServer.PayoutProcessors.OnChain _bitcoinLikePayoutHandler = bitcoinLikePayoutHandler; _eventAggregator = eventAggregator; WalletRepository = walletRepository; + FeeProvider = feeProviderFactory.CreateFeeProvider(_btcPayNetworkProvider.GetNetwork(PaymentMethodId.CryptoCode)); } public WalletRepository WalletRepository { get; } + public IFeeProvider FeeProvider { get; } protected override async Task Process(ISupportedPaymentMethod paymentMethod, List payouts) { @@ -95,7 +98,7 @@ namespace BTCPayServer.PayoutProcessors.OnChain storePaymentMethod.AccountDerivation, DerivationFeature.Change, 0, true); var processorBlob = GetBlob(_PayoutProcesserSettings); - var feeRate = await explorerClient.GetFeeRateAsync(Math.Max(processorBlob.FeeTargetBlock, 1), new FeeRate(1m)); + var feeRate = await FeeProvider.GetFeeRateAsync(Math.Max(processorBlob.FeeTargetBlock, 1)); var transfersProcessing = new List(); foreach (var transferRequest in payouts) @@ -133,7 +136,7 @@ namespace BTCPayServer.PayoutProcessors.OnChain try { txBuilder.SetChange(changeAddress.Address); - txBuilder.SendEstimatedFees(feeRate.FeeRate); + txBuilder.SendEstimatedFees(feeRate); workingTx = txBuilder.BuildTransaction(true); transfersProcessing.Add(transferRequest); }