public static void Run()
        {
            var            network = new NBXplorerNetworkProvider(ChainType.Main).GetBTC();
            ExplorerClient client  = new ExplorerClient(network, new Uri(Config.Instance.NBXplorer.ServerUrl));
            Dictionary <int, GetTransactionsResponse> lastResponseDict = new Dictionary <int, GetTransactionsResponse>();

            using (Way.Lib.CLog log = new Way.Lib.CLog("runForTransactions"))
            {
                while (true)
                {
                    try
                    {
                        //程序刚启动,把所有交易拿出来检验一遍
                        checkAllTransactionForInit(network, client, log);
                        break;
                    }
                    catch (Exception ex)
                    {
                        System.Threading.Thread.Sleep(3000);
                        using (Way.Lib.CLog logErr = new Way.Lib.CLog("handleAllTransactionForInit error", false))
                        {
                            logErr.Log(ex.ToString());
                        }
                    }
                }

                while (true)
                {
                    try
                    {
                        var events = client.CreateNotificationSession();
                        events.ListenAllDerivationSchemes();
                        log.Log($"init");
                        while (true)
                        {
                            log.Log($"waiting event...");

                            var txEvent = events.NextEvent();
                            log.Log($"received event,type:{txEvent?.GetType().FullName}");
                            if (txEvent is NBXplorer.Models.NewTransactionEvent)
                            {
                                using (var db = new MainDB())
                                {
                                    var tranEvent = txEvent as NBXplorer.Models.NewTransactionEvent;
                                    checkTransaction(db, tranEvent.TransactionData.Transaction, tranEvent.TransactionData.Confirmations, log);
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        System.Threading.Thread.Sleep(2000);
                        using (Way.Lib.CLog logErr = new Way.Lib.CLog("runForTransactions error", false))
                        {
                            logErr.Log(ex.ToString());
                        }
                    }
                }
            }
        }
 public PayjoinReceiverContext(InvoiceRepository invoiceRepository, ExplorerClient explorerClient, PayJoinRepository payJoinRepository, BTCPayServer.Logging.Logs logs)
 {
     this.BTCPayLogs    = logs;
     _invoiceRepository = invoiceRepository;
     _explorerClient    = explorerClient;
     _payJoinRepository = payJoinRepository;
 }
Пример #3
0
 public NbxChainWatchInterface(ExplorerClient nbxplorerClient, ILogger <NbxChainWatchInterface> logger, NRustLightningNetwork network)
 {
     _logger         = logger;
     _network        = network;
     NbxplorerClient = nbxplorerClient;
     util            = new ChainWatchInterfaceUtil(network.NBitcoinNetwork);
 }
Пример #4
0
        public ServerTester(string scope)
        {
            _Directory = scope;
            if (Directory.Exists(_Directory))
            {
                Utils.DeleteDirectory(_Directory);
            }
            if (!Directory.Exists(_Directory))
            {
                Directory.CreateDirectory(_Directory);
            }

            NetworkProvider = new BTCPayNetworkProvider(NetworkType.Regtest);
            ExplorerNode    = new RPCClient(RPCCredentialString.Parse(GetEnvironment("TESTS_BTCRPCCONNECTION", "server=http://127.0.0.1:43782;ceiwHEbqWI83:DwubwWsoo3")), NetworkProvider.GetNetwork <BTCPayNetwork>("BTC").NBitcoinNetwork);
            ExplorerNode.ScanRPCCapabilities();

            ExplorerClient = new ExplorerClient(NetworkProvider.GetNetwork <BTCPayNetwork>("BTC").NBXplorerNetwork, new Uri(GetEnvironment("TESTS_BTCNBXPLORERURL", "http://127.0.0.1:32838/")));

            PayTester = new BTCPayServerTester(Path.Combine(_Directory, "pay"))
            {
                NBXplorerUri = ExplorerClient.Address,
                TestDatabase = Enum.Parse <TestDatabases>(GetEnvironment("TESTS_DB", TestDatabases.Postgres.ToString()), true),
                Postgres     = GetEnvironment("TESTS_POSTGRES", "User ID=postgres;Host=127.0.0.1;Port=39372;Database=btcpayserver"),
                MySQL        = GetEnvironment("TESTS_MYSQL", "User ID=root;Host=127.0.0.1;Port=33036;Database=btcpayserver")
            };
            PayTester.Port        = int.Parse(GetEnvironment("TESTS_PORT", Utils.FreeTcpPort().ToString(CultureInfo.InvariantCulture)), CultureInfo.InvariantCulture);
            PayTester.HostName    = GetEnvironment("TESTS_HOSTNAME", "127.0.0.1");
            PayTester.InContainer = bool.Parse(GetEnvironment("TESTS_INCONTAINER", "false"));

            PayTester.SSHPassword   = GetEnvironment("TESTS_SSHPASSWORD", "opD3i2282D");
            PayTester.SSHKeyFile    = GetEnvironment("TESTS_SSHKEYFILE", "");
            PayTester.SSHConnection = GetEnvironment("TESTS_SSHCONNECTION", "[email protected]:21622");
        }
Пример #5
0
 public NBXplorerWaiter(NBXplorerDashboard dashboard, BTCPayNetwork network, ExplorerClient client, EventAggregator aggregator)
 {
     _Network    = network;
     _Client     = client;
     _Aggregator = aggregator;
     _Dashboard  = dashboard;
 }
        public ExplorerClient GetClient(string cryptoCode)
        {
            if (_clients.ContainsKey(cryptoCode))
            {
                return(_clients[cryptoCode]);
            }

            _logger.LogWarning($"Creating NBXplorer Client {cryptoCode}");
            var client = new ExplorerClient(_nbXplorerNetworkProvider.GetFromCryptoCode(cryptoCode), _options.Uri);

            if (string.IsNullOrEmpty(_options.CookieFile) && !_options.UseDefaultCookie)
            {
                _logger.LogWarning($"Connecting to NBXplorer @{_options.Uri} with no auth");
                client.SetNoAuth();
            }
            else if (string.IsNullOrEmpty(_options.CookieFile) && _options.UseDefaultCookie)
            {
                _logger.LogWarning(
                    $"Connecting to NBXplorer @{_options.Uri} with default cookie {client.Network.DefaultSettings.DefaultCookieFile}");
                client.SetCookieAuth(client.Network.DefaultSettings.DefaultCookieFile);
            }
            else
            {
                _logger.LogWarning(
                    $"Connecting to NBXplorer @{_options.Uri} with auth cookie {_options.CookieFile}");

                client.SetCookieAuth(_options.CookieFile);
            }

            _clients.AddOrReplace(cryptoCode, client);
            return(client);
        }
Пример #7
0
        public void Start()
        {
            if (Directory.Exists(_Directory))
            {
                Utils.DeleteDirectory(_Directory);
            }
            if (!Directory.Exists(_Directory))
            {
                Directory.CreateDirectory(_Directory);
            }


            NetworkProvider = new BTCPayNetworkProvider(ChainType.Regtest);
            ExplorerNode    = new RPCClient(RPCCredentialString.Parse(GetEnvironment("TESTS_BTCRPCCONNECTION", "server=http://127.0.0.1:43782;ceiwHEbqWI83:DwubwWsoo3")), NetworkProvider.GetNetwork("BTC").NBitcoinNetwork);
            LTCExplorerNode = new RPCClient(RPCCredentialString.Parse(GetEnvironment("TESTS_LTCRPCCONNECTION", "server=http://127.0.0.1:43783;ceiwHEbqWI83:DwubwWsoo3")), NetworkProvider.GetNetwork("LTC").NBitcoinNetwork);

            ExplorerClient    = new ExplorerClient(NetworkProvider.GetNetwork("BTC").NBXplorerNetwork, new Uri(GetEnvironment("TESTS_BTCNBXPLORERURL", "http://127.0.0.1:32838/")));
            LTCExplorerClient = new ExplorerClient(NetworkProvider.GetNetwork("LTC").NBXplorerNetwork, new Uri(GetEnvironment("TESTS_LTCNBXPLORERURL", "http://127.0.0.1:32838/")));

            PayTester = new BTCPayServerTester(Path.Combine(_Directory, "pay"))
            {
                NBXplorerUri    = ExplorerClient.Address,
                LTCNBXplorerUri = LTCExplorerClient.Address,
                Postgres        = GetEnvironment("TESTS_POSTGRES", "User ID=postgres;Host=127.0.0.1;Port=39372;Database=btcpayserver")
            };
            PayTester.Port     = int.Parse(GetEnvironment("TESTS_PORT", Utils.FreeTcpPort().ToString(CultureInfo.InvariantCulture)), CultureInfo.InvariantCulture);
            PayTester.HostName = GetEnvironment("TESTS_HOSTNAME", "127.0.0.1");
            PayTester.Start();

            var btc = NetworkProvider.GetNetwork("BTC").NBitcoinNetwork;

            CustomerEclair = new EclairTester(this, "TEST_ECLAIR", "http://*****:*****@127.0.0.1:30992/", "eclair", btc);
            MerchantCharge = new ChargeTester(this, "TEST_CHARGE", "http://*****:*****@127.0.0.1:54938/", "lightning-charged", btc);
        }
Пример #8
0
 public void ActivateLBTC()
 {
     LBTCExplorerNode   = new RPCClient(RPCCredentialString.Parse(GetEnvironment("TESTS_LBTCRPCCONNECTION", "server=http://127.0.0.1:19332;liquid:liquid")), NetworkProvider.GetNetwork <BTCPayNetwork>("LBTC").NBitcoinNetwork);
     LBTCExplorerClient = new ExplorerClient(NetworkProvider.GetNetwork <BTCPayNetwork>("LBTC").NBXplorerNetwork, new Uri(GetEnvironment("TESTS_LBTCNBXPLORERURL", "http://127.0.0.1:32838/")));
     PayTester.Chains.Add("LBTC");
     PayTester.LBTCNBXplorerUri = LBTCExplorerClient.Address;
 }
 public PayjoinReceiverContext(InvoiceRepository invoiceRepository, ExplorerClient explorerClient, PayJoinRepository payJoinRepository, InvoiceLogsService invoiceLogsService)
 {
     _invoiceRepository  = invoiceRepository;
     _explorerClient     = explorerClient;
     _payJoinRepository  = payJoinRepository;
     _invoiceLogsService = invoiceLogsService;
 }
Пример #10
0
        public void Start()
        {
            if (Directory.Exists(_Directory))
            {
                Utils.DeleteDirectory(_Directory);
            }
            if (!Directory.Exists(_Directory))
            {
                Directory.CreateDirectory(_Directory);
            }


            ExplorerNode   = new RPCClient(RPCCredentialString.Parse(GetEnvironment("TESTS_RPCCONNECTION", "server=http://127.0.0.1:43782;ceiwHEbqWI83:DwubwWsoo3")), Network);
            ExplorerClient = new ExplorerClient(Network, new Uri(GetEnvironment("TESTS_NBXPLORERURL", "http://127.0.0.1:32838/")));
            PayTester      = new BTCPayServerTester(Path.Combine(_Directory, "pay"))
            {
                NBXplorerUri = ExplorerClient.Address,
                Postgres     = GetEnvironment("TESTS_POSTGRES", "User ID=postgres;Host=127.0.0.1;Port=39372;Database=btcpayserver")
            };
            PayTester.Port     = int.Parse(GetEnvironment("TESTS_PORT", Utils.FreeTcpPort().ToString()));
            PayTester.HostName = GetEnvironment("TESTS_HOSTNAME", "127.0.0.1");
            PayTester.Start();

            MerchantEclair = new EclairTester(this, "TEST_ECLAIR1", "http://127.0.0.1:30992/", "eclair1");
            CustomerEclair = new EclairTester(this, "TEST_ECLAIR2", "http://127.0.0.1:30993/", "eclair2");
        }
Пример #11
0
 public NBXplorerFeeProviderFactory(ExplorerClient explorerClient)
 {
     if (explorerClient == null)
     {
         throw new ArgumentNullException(nameof(explorerClient));
     }
     _ExplorerClient = explorerClient;
 }
Пример #12
0
 public NBXplorerListener(ExplorerClient explorerClient, PeerManager peerManager, ILogger <NBXplorerListener> logger,
                          ChannelWriter <FeeRateSet> feeRateWriter)
 {
     _explorerClient = explorerClient;
     _peerManager    = peerManager;
     _logger         = logger;
     _feeRateWriter  = feeRateWriter;
 }
Пример #13
0
 public BitcoinConnector(string oracleAddress, string endpoint, Channel <Deposit> depositStream, Channel <WithdrawInfo> withdrawStream)
 {
     this.depositStream  = depositStream;
     this.withdrawStream = withdrawStream;
     this.oracleAddress  = TrackedSource.Create(new BitcoinPubKeyAddress(oracleAddress));
     client = new ExplorerClient(new NBXplorerNetworkProvider(NetworkType.Testnet).GetBTC(), new Uri(endpoint));
     client.SetNoAuth();
 }
 public BitcoinOracleConnector(string network, string endpoint, string pkcsUser, string hsmKey)
 {
     this.pkcsUser = pkcsUser;
     this.hsmKey   = hsmKey;
     this.network  = network == "testnet" ? NetworkType.Testnet : NetworkType.Mainnet;
     client        = new ExplorerClient(new NBXplorerNetworkProvider(this.network).GetBTC(), new Uri(endpoint));
     pubKey        = new NBitcoin.PubKey("045138d46c0e99a3b94a49551581097bae7162bdbd70dbddc580963f98b2771bbee5ecf367dfa34b2c9952269691f87153cbf2a1589c177dfd66ac6735b92f6cf7");
 }
Пример #15
0
 public NBXplorerWaiter(NBXplorerDashboard dashboard, BTCPayNetwork network, ExplorerClient client, EventAggregator aggregator, Logs logs)
 {
     this.Logs   = logs;
     _Network    = network;
     _Client     = client;
     _Aggregator = aggregator;
     _Dashboard  = dashboard;
     _Dashboard.Publish(_Network, State, null, null);
 }
Пример #16
0
        public void TestMethod1()
        {
            var            network = new NBXplorerNetworkProvider(ChainType.Main).GetBTC();
            ExplorerClient client  = new ExplorerClient(network, new System.Uri("http://47.75.159.73:24444"));


            //获取一个没有使用的收款地址
            var info = client.GetFeeRate(2);
        }
Пример #17
0
 public CallbackController(SettingsRepository repo,
                           ExplorerClient explorer,
                           InvoiceWatcher watcher,
                           Network network)
 {
     _Settings = repo;
     _Network  = network;
     _Watcher  = watcher;
     _Explorer = explorer;
 }
Пример #18
0
        private static ExplorerClient CreateExplorerClient(BTCPayNetwork n, Uri uri, string cookieFile)
        {
            var explorer = new ExplorerClient(n.NBitcoinNetwork, uri);

            if (!explorer.SetCookieAuth(cookieFile))
            {
                explorer.SetNoAuth();
            }
            return(explorer);
        }
Пример #19
0
 public BTCPayWallet(ExplorerClient client, TransactionCache cache, BTCPayNetwork network)
 {
     if (client == null)
     {
         throw new ArgumentNullException(nameof(client));
     }
     _Client  = client;
     _Network = network;
     _Cache   = cache;
 }
Пример #20
0
 ExplorerClient GetClient()
 {
     if (_client == null)
     {
         // create NBXplorer client
         _client = new ExplorerClient(GetNbxNetwork(), nbxplorerAddress);
         _client.Track(pubkey);
     }
     return(_client);
 }
Пример #21
0
        private void StartNBXplorer()
        {
            var port = CustomServer.FreeTcpPort();
            List <(string key, string value)> keyValues = new List <(string key, string value)>();

            keyValues.Add(("conf", Path.Combine(datadir, "settings.config")));
            keyValues.Add(("datadir", datadir));
            keyValues.Add(("port", port.ToString()));
            keyValues.Add(("network", "regtest"));
            keyValues.Add(("chains", CryptoCode.ToLowerInvariant()));
            keyValues.Add(("verbose", "1"));
            keyValues.Add(($"{CryptoCode.ToLowerInvariant()}rpcauth", Explorer.GetRPCAuth()));
            keyValues.Add(($"{CryptoCode.ToLowerInvariant()}rpcurl", Explorer.CreateRPCClient().Address.AbsoluteUri));
            keyValues.Add(("cachechain", "0"));
            keyValues.Add(("rpcnotest", "1"));
            keyValues.Add(("mingapsize", "3"));
            keyValues.Add(("maxgapsize", "8"));
            keyValues.Add(($"{CryptoCode.ToLowerInvariant()}startheight", Explorer.CreateRPCClient().GetBlockCount().ToString()));
            keyValues.Add(($"{CryptoCode.ToLowerInvariant()}nodeendpoint", $"{Explorer.Endpoint.Address}:{Explorer.Endpoint.Port}"));
            keyValues.Add(("asbcnstr", AzureServiceBusTestConfig.ConnectionString));
            keyValues.Add(("asbblockq", AzureServiceBusTestConfig.NewBlockQueue));
            keyValues.Add(("asbtranq", AzureServiceBusTestConfig.NewTransactionQueue));
            keyValues.Add(("asbblockt", AzureServiceBusTestConfig.NewBlockTopic));
            keyValues.Add(("asbtrant", AzureServiceBusTestConfig.NewTransactionTopic));

            var args = keyValues.SelectMany(kv => new[] { $"--{kv.key}", kv.value }
                                            .Concat(new[] { $"--{CryptoCode.ToLowerInvariant()}hastxindex" })).ToArray();

            Host = new WebHostBuilder()
                   .UseConfiguration(new DefaultConfiguration().CreateConfiguration(args))
                   .UseKestrel()
                   .ConfigureLogging(l =>
            {
                l.SetMinimumLevel(LogLevel.Information)
                .AddFilter("System.Net.Http.HttpClient", LogLevel.Error)
                .AddFilter("Microsoft", LogLevel.Error)
                .AddFilter("Hangfire", LogLevel.Error)
                .AddFilter("NBXplorer.Authentication.BasicAuthenticationHandler", LogLevel.Critical)
                .AddProvider(Logs.LogProvider);
            })
                   .UseStartup <Startup>()
                   .Build();

            RPC = ((RPCClientProvider)Host.Services.GetService(typeof(RPCClientProvider))).GetRPCClient(CryptoCode);
            var nbxnetwork = ((NBXplorerNetworkProvider)Host.Services.GetService(typeof(NBXplorerNetworkProvider))).GetFromCryptoCode(CryptoCode);

            Network = nbxnetwork.NBitcoinNetwork;
            var conf = (ExplorerConfiguration)Host.Services.GetService(typeof(ExplorerConfiguration));

            Host.Start();
            Configuration = conf;
            _Client       = new ExplorerClient(nbxnetwork, Address);
            _Client.SetCookieAuth(Path.Combine(conf.DataDir, ".cookie"));
            Notifications = _Client.CreateLongPollingNotificationSession();
        }
Пример #22
0
 public BlockSourceTests(DockerFixture dockerFixture, ITestOutputHelper output)
 {
     _dockerFixture = dockerFixture;
     _output        = output;
     _loggerFactory = LoggerFactory.Create(builder =>
     {
         builder.AddConsole();
         builder.AddDebug();
     });
     _cli = _dockerFixture.StartExplorerFixtureAsync(nameof(BlockSourceTests)).GetAwaiter().GetResult();
 }
Пример #23
0
 public async Task <FeeRate> GetFeeRateAsync()
 {
     try
     {
         return((await ExplorerClient.GetFeeRateAsync(BlockTarget).ConfigureAwait(false)).FeeRate);
     }
     catch (NBXplorerException ex) when(ex.Error.HttpCode == 400 && ex.Error.Code == "fee-estimation-unavailable")
     {
         return(Fallback);
     }
 }
Пример #24
0
 public BTCPayWallet(ExplorerClient client, IMemoryCache memoryCache, BTCPayNetwork network,
                     ApplicationDbContextFactory dbContextFactory, Logs logs)
 {
     ArgumentNullException.ThrowIfNull(client);
     ArgumentNullException.ThrowIfNull(memoryCache);
     Logs              = logs;
     _Client           = client;
     _Network          = network;
     _dbContextFactory = dbContextFactory;
     _MemoryCache      = memoryCache;
 }
Пример #25
0
        private async Task UpdateSummaryContinuously(ExplorerClient explorerClient, CancellationToken cancellationToken)
        {
            await explorerClient.WaitServerStartedAsync(cancellationToken);

            while (!cancellationToken.IsCancellationRequested)
            {
                await _nbXplorerSummaryProvider.UpdateClientState(explorerClient, cancellationToken);

                var summary = _nbXplorerSummaryProvider.GetSummary(explorerClient.CryptoCode);
                await Task.Delay(TimeSpan.FromSeconds(summary.State == NBXplorerState.Ready ? 30 : 5),
                                 cancellationToken);
            }
        }
 public NBXplorerListener(
     ExplorerClient explorerClient,
     PeerManagerProvider peerManagerProvider,
     ILogger <NBXplorerListener> logger,
     ChannelWriter <FeeRateSet> feeRateWriter,
     NRustLightningNetwork network)
 {
     _explorerClient      = explorerClient;
     _peerManagerProvider = peerManagerProvider;
     _logger        = logger;
     _feeRateWriter = feeRateWriter;
     _network       = network;
 }
Пример #27
0
 public InvoiceWatcher(ExplorerClient explorerClient,
                       InvoiceRepository invoiceRepository,
                       BTCPayWallet wallet,
                       InvoiceNotificationManager notificationManager)
 {
     LongPollingMode      = explorerClient.Network == Network.RegTest;
     PollInterval         = explorerClient.Network == Network.RegTest ? TimeSpan.FromSeconds(10.0) : TimeSpan.FromMinutes(1.0);
     _Wallet              = wallet ?? throw new ArgumentNullException(nameof(wallet));
     _ExplorerClient      = explorerClient ?? throw new ArgumentNullException(nameof(explorerClient));
     _DerivationFactory   = new DerivationStrategyFactory(_ExplorerClient.Network);
     _InvoiceRepository   = invoiceRepository ?? throw new ArgumentNullException(nameof(invoiceRepository));
     _NotificationManager = notificationManager ?? throw new ArgumentNullException(nameof(notificationManager));
 }
        public NBXplorerClientProvider(IOptions <Config> config, IOptionsMonitor <ChainConfiguration> chainConfig, NRustLightningNetworkProvider networkProvider, IHttpClientFactory httpClientFactory, ILogger <NBXplorerClientProvider> logger)
        {
            _logger = logger;
            foreach (var n in networkProvider.GetAll())
            {
                var chainConf = chainConfig.Get(n.CryptoCode);
                if (!(chainConf is null))
                {
                    var c = new ExplorerClient(n.NbXplorerNetwork, config.Value.NBXplorerUri);
                    if (!string.IsNullOrEmpty(config.Value.NBXCookieFile))
                    {
                        c.SetCookieAuth(config.Value.NBXCookieFile);
                    }
                    c.SetClient(httpClientFactory.CreateClient(nameof(NBXplorerClientProvider)));
                    // check the connection by getting status.
                    // TODO: Prepare HostedService for waiting NBXplorer and bitcoind gets ready?

                    int       sleepMs  = 50;
                    Exception e        = null;
                    int       maxRetry = 6;
                    for (int count = 0; count <= maxRetry; count++)
                    {
                        try
                        {
                            var _ = c.GetStatus();
                            e = null;
                        }
                        catch (Exception ex)
                        {
                            _logger.LogWarning($"Failed to connect to nbxplorer. retrying in {sleepMs} milliseconds...");
                            e = ex;
                            Thread.Sleep(sleepMs);
                            sleepMs *= 2;
                        }
                    }

                    if (e != null)
                    {
                        _logger.LogCritical($"Failed to connect nbxplorer. check your settings.");
                        throw e;
                    }

                    explorerClients.Add(n.CryptoCode, c);
                }
            }

            if (explorerClients.Count == 0)
            {
                throw new NRustLightningException("Found zero valid nbxplorer instance to connect");
            }
        }
Пример #29
0
        public async Task UpdateClientState(ExplorerClient client, CancellationToken cancellation)
        {
            _logger.LogInformation($"Updating summary for {client.CryptoCode}");
            var          state  = (NBXplorerState?)null;
            string       error  = null;
            StatusResult status = null;

            try
            {
                status = await client.GetStatusAsync(cancellation);

                if (status == null)
                {
                    state = NBXplorerState.NotConnected;
                }
                else if (status.IsFullySynched)
                {
                    state = NBXplorerState.Ready;
                }
                else if (!status.IsFullySynched)
                {
                    state = NBXplorerState.Synching;
                }
            }
            catch (Exception ex) when(!cancellation.IsCancellationRequested)
            {
                _logger.LogWarning($"Could not update summary for {client.CryptoCode} because {ex.Message}");
                error = ex.Message;
            }

            if (status != null && error == null && status.NetworkType != _options.NetworkType)
            {
                error =
                    $"{client.CryptoCode}: NBXplorer is on a different ChainType (actual: {status.NetworkType}, expected: {_options.NetworkType})";
            }

            if (error != null)
            {
                state = NBXplorerState.NotConnected;
            }

            var summary = new NBXplorerSummary()
            {
                Status = status,
                State  = state.GetValueOrDefault(NBXplorerState.NotConnected),
                Error  = error
            };

            _logger.LogInformation($"summary updated {client.CryptoCode}");
            _summaries.AddOrReplace(client.CryptoCode.ToUpperInvariant(), summary);
        }
Пример #30
0
 public BTCPayWallet(ExplorerClient client, IMemoryCache memoryCache, BTCPayNetwork network)
 {
     if (client == null)
     {
         throw new ArgumentNullException(nameof(client));
     }
     if (memoryCache == null)
     {
         throw new ArgumentNullException(nameof(memoryCache));
     }
     _Client      = client;
     _Network     = network;
     _MemoryCache = memoryCache;
 }