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));
         }
     }
 }
Example #4
0
 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();
         }
     }
 }
Example #5
0
 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);
         }
     }
 }
Example #7
0
 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);
         }
     }
 }