use fee provider instead of core fee provider for coord

This commit is contained in:
Kukks
2024-06-15 07:57:53 +02:00
parent b570fe0555
commit 218c694190
2 changed files with 24 additions and 8 deletions

View File

@@ -13,7 +13,7 @@
<PropertyGroup> <PropertyGroup>
<Product>Coinjoin</Product> <Product>Coinjoin</Product>
<Description>Allows you to integrate your btcpayserver store with coinjoins.</Description> <Description>Allows you to integrate your btcpayserver store with coinjoins.</Description>
<Version>1.0.87</Version> <Version>1.0.88</Version>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies> <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup> </PropertyGroup>

View File

@@ -40,6 +40,8 @@ namespace WalletWasabi.Backend.Controllers;
public class WabisabiCoordinatorService : PeriodicRunner public class WabisabiCoordinatorService : PeriodicRunner
{ {
private readonly BTCPayNetworkProvider _networkProvider;
private readonly IFeeProviderFactory _feeProviderFactory;
private readonly ISettingsRepository _settingsRepository; private readonly ISettingsRepository _settingsRepository;
private readonly IOptions<DataDirectories> _dataDirectories; private readonly IOptions<DataDirectories> _dataDirectories;
private readonly IExplorerClientProvider _clientProvider; private readonly IExplorerClientProvider _clientProvider;
@@ -54,13 +56,21 @@ public class WabisabiCoordinatorService : PeriodicRunner
private HostedServices HostedServices { get; } = new(); private HostedServices HostedServices { get; } = new();
public WabiSabiCoordinator WabiSabiCoordinator { get; private set; } public WabiSabiCoordinator WabiSabiCoordinator { get; private set; }
public WabisabiCoordinatorService(ISettingsRepository settingsRepository, public WabisabiCoordinatorService(
IOptions<DataDirectories> dataDirectories, IExplorerClientProvider clientProvider, IMemoryCache memoryCache, BTCPayNetworkProvider networkProvider,
IFeeProviderFactory feeProviderFactory,
ISettingsRepository settingsRepository,
IOptions<DataDirectories> dataDirectories,
IExplorerClientProvider clientProvider,
IMemoryCache memoryCache,
WabisabiCoordinatorClientInstanceManager instanceManager, WabisabiCoordinatorClientInstanceManager instanceManager,
IHttpClientFactory httpClientFactory, IHttpClientFactory httpClientFactory,
IServiceProvider serviceProvider, IServiceProvider serviceProvider,
ILogger<WabisabiCoordinatorService> logger, WabiSabiConfig.CoordinatorScriptResolver coordinatorScriptResolver) : base(TimeSpan.FromMinutes(15)) ILogger<WabisabiCoordinatorService> logger,
WabiSabiConfig.CoordinatorScriptResolver coordinatorScriptResolver) : base(TimeSpan.FromMinutes(15))
{ {
_networkProvider = networkProvider;
_feeProviderFactory = feeProviderFactory;
_settingsRepository = settingsRepository; _settingsRepository = settingsRepository;
_dataDirectories = dataDirectories; _dataDirectories = dataDirectories;
_clientProvider = clientProvider; _clientProvider = clientProvider;
@@ -128,9 +138,11 @@ public class WabisabiCoordinatorService : PeriodicRunner
{ {
private readonly ExplorerClient _explorerClient; private readonly ExplorerClient _explorerClient;
private readonly Stopwatch _uptime; private readonly Stopwatch _uptime;
private readonly IFeeProvider _feeProvider;
public BtcPayRpcClient(RPCClient rpc, IMemoryCache cache, ExplorerClient explorerClient) : base(rpc, cache) public BtcPayRpcClient(IFeeProvider feeProvider, RPCClient rpc, IMemoryCache cache, ExplorerClient explorerClient) : base(rpc, cache)
{ {
_feeProvider = feeProvider;
_explorerClient = explorerClient; _explorerClient = explorerClient;
_uptime = Stopwatch.StartNew(); _uptime = Stopwatch.StartNew();
} }
@@ -180,8 +192,11 @@ public class WabisabiCoordinatorService : PeriodicRunner
cacheKey, cacheKey,
action: async (_, cancellationToken) => action: async (_, cancellationToken) =>
{ {
var result = await _explorerClient.GetFeeRateAsync(confirmationTarget, new FeeRate(100m), cancellationToken);
return new EstimateSmartFeeResponse() {FeeRate = result.FeeRate, Blocks = result.BlockCount}; var rate = await _feeProvider.GetFeeRateAsync(confirmationTarget);
// var result = await _explorerClient.GetFeeRateAsync(confirmationTarget, new FeeRate(100m), cancellationToken);
return new EstimateSmartFeeResponse() {FeeRate = rate};
}, },
options: CacheOptionsWithExpirationToken(size: 1, expireInSeconds: 60), options: CacheOptionsWithExpirationToken(size: 1, expireInSeconds: 60),
cancellationToken).ConfigureAwait(false); cancellationToken).ConfigureAwait(false);
@@ -211,12 +226,13 @@ public class WabisabiCoordinatorService : PeriodicRunner
public override async Task StartAsync(CancellationToken cancellationToken) public override async Task StartAsync(CancellationToken cancellationToken)
{ {
var explorerClient = _clientProvider.GetExplorerClient("BTC"); var explorerClient = _clientProvider.GetExplorerClient("BTC");
var network = _networkProvider.GetNetwork<BTCPayNetwork>("BTC");
var coordinatorParameters = var coordinatorParameters =
new CoordinatorParameters(Path.Combine(_dataDirectories.Value.DataDir, "Plugins", "Coinjoin")); new CoordinatorParameters(Path.Combine(_dataDirectories.Value.DataDir, "Plugins", "Coinjoin"));
var coinJoinIdStore = var coinJoinIdStore =
CoinJoinIdStore.Create( coordinatorParameters.CoinJoinIdStoreFilePath); CoinJoinIdStore.Create( coordinatorParameters.CoinJoinIdStoreFilePath);
var coinJoinScriptStore = CoinJoinScriptStore.LoadFromFile(coordinatorParameters.CoinJoinScriptStoreFilePath); var coinJoinScriptStore = CoinJoinScriptStore.LoadFromFile(coordinatorParameters.CoinJoinScriptStoreFilePath);
var rpc = new BtcPayRpcClient(explorerClient.RPCClient, _memoryCache, explorerClient); var rpc = new BtcPayRpcClient(_feeProviderFactory.CreateFeeProvider(network),explorerClient.RPCClient, _memoryCache, explorerClient);
WabiSabiCoordinator = new WabiSabiCoordinator(coordinatorParameters, rpc, coinJoinIdStore, coinJoinScriptStore, WabiSabiCoordinator = new WabiSabiCoordinator(coordinatorParameters, rpc, coinJoinIdStore, coinJoinScriptStore,
_httpClientFactory, _coordinatorScriptResolver); _httpClientFactory, _coordinatorScriptResolver);