public async Task StartAsync(CancellationToken cancellationToken) { foreach (var n in _networkProvider.GetAll()) { var nbx = _nbXplorerClientProvider.TryGetClient(n); if (nbx != null) { var b = new NbXplorerBroadcaster(nbx, _loggerFactory.CreateLogger <NbXplorerBroadcaster>(), _eventAggregator); var feeEst = new NbXplorerFeeEstimator(_loggerFactory.CreateLogger <NbXplorerFeeEstimator>(), _channelProvider.GetFeeRateChannel(n).Reader); var chainWatchInterface = new NbxChainWatchInterface(nbx, _loggerFactory.CreateLogger <NbxChainWatchInterface>(), n); var conf = _config.Value.RustLightningConfig; var logger = new NativeLogger(_loggerFactory.CreateLogger <NativeLogger>()); var repo = _repositoryProvider.GetRepository(n); uint currentBlockHeight; int tried0 = 0; retry0: try { currentBlockHeight = (uint)await nbx.RPCClient.GetBlockCountAsync(); } catch when(tried0 < 4) { tried0++; await Task.Delay(1000, cancellationToken); goto retry0; }
public PeerManagerProvider( INBXplorerClientProvider nbXplorerClientProvider, NRustLightningNetworkProvider networkProvider, IKeysRepository keysRepository, ILoggerFactory loggerFactory, ChannelProvider channelProvider, IOptions <Config> config ) { foreach (var n in networkProvider.GetAll()) { var nbx = nbXplorerClientProvider.TryGetClient(n); if (nbx != null) { var b = new NbXplorerBroadcaster(nbx, loggerFactory.CreateLogger <NbXplorerBroadcaster>()); var feeEst = new NbXplorerFeeEstimator(loggerFactory.CreateLogger <NbXplorerFeeEstimator>(), channelProvider.GetFeeRateChannel(n).Reader); var chainWatchInterface = new NbxChainWatchInterface(nbx, loggerFactory.CreateLogger <NbxChainWatchInterface>(), n); var peerManSeed = new byte[32]; RandomUtils.GetBytes(peerManSeed); var logger = new NativeLogger(loggerFactory.CreateLogger <NativeLogger>()); var nbitcoinNetwork = n.NBitcoinNetwork; var conf = config.Value.RustLightningConfig; var peerMan = PeerManager.Create(peerManSeed.AsSpan(), nbitcoinNetwork, conf, chainWatchInterface, keysRepository, b, logger, feeEst, 400000); _peerManagers.Add(n.CryptoCode, peerMan); } } }
public ChannelProvider(INBXplorerClientProvider clientProvider, NRustLightningNetworkProvider networkProvider) { foreach (var n in networkProvider.GetAll()) { var maybeClient = clientProvider.TryGetClient(n.CryptoCode); if (maybeClient != null) { _feeRateChannels.Add(n.CryptoCode, Channel.CreateBounded <FeeRateSet>(50)); } } }
public DataFlowProvider(INBXplorerClientProvider clientProvider, NRustLightningNetworkProvider networkProvider) { foreach (var n in networkProvider.GetAll()) { var maybeClient = clientProvider.TryGetClient(n.CryptoCode); if (maybeClient != null) { var inputBuffer = new BufferBlock <FeeRateSet>(); _feeRateSourceBlock.Add(n.CryptoCode, inputBuffer); throw new NotImplementedException(); } } }
public ChannelProvider(INBXplorerClientProvider clientProvider, NRustLightningNetworkProvider networkProvider) { foreach (var n in networkProvider.GetAll()) { var maybeClient = clientProvider.TryGetClient(n.CryptoCode); if (maybeClient != null) { _feeRateChannels.Add(n.CryptoCode, Channel.CreateBounded <FeeRateSet>(50)); _outboundConnectionRequestChannel.Add(n.CryptoCode, Channel.CreateBounded <PeerConnectionString>(1000)); _spendableOutputDescriptorChannel.Add(n.CryptoCode, Channel.CreateBounded <SpendableOutputDescriptor>(100000)); } } }
public NBXplorerListeners(NRustLightningNetworkProvider networkProvider, INBXplorerClientProvider clientProvider, PeerManagerProvider peerManagerProvider, ILoggerFactory loggerFactory, ChannelProvider channelProvider) { foreach (var n in networkProvider.GetAll()) { var cli = clientProvider.TryGetClient(n); if (cli != null) { var listener = new NBXplorerListener(cli, peerManagerProvider, loggerFactory.CreateLogger <NBXplorerListener>(), channelProvider.GetFeeRateChannel(n).Writer, n); _listeners.TryAdd(n.CryptoCode, listener); } } }
public RustLightningEventReactors(NRustLightningNetworkProvider networkProvider, INBXplorerClientProvider clientProvider, IServiceProvider serviceProvider, ILoggerFactory loggerFactory) { foreach (var n in networkProvider.GetAll()) { var cli = clientProvider.TryGetClient(n); if (cli != null) // it means we want to support that chain. { var reactor = new RustLightningEventReactor( serviceProvider.GetRequiredService <P2PConnectionHandler>(), serviceProvider.GetRequiredService <IPeerManagerProvider>(), serviceProvider.GetRequiredService <IWalletService>(), n, serviceProvider.GetRequiredService <EventAggregator>(), loggerFactory.CreateLogger(nameof(RustLightningEventReactor) + $":{n.CryptoCode}"), serviceProvider.GetRequiredService <IInvoiceRepository>() ); Reactors.Add(n.CryptoCode, reactor); } } }