protected override async Task PostStartInitAsync() { var infoResponse = await daemon.ExecuteCmdAnyAsync(MC.GetInfo); if (infoResponse.Error != null) { logger.ThrowLogPoolStartupException($"Init RPC failed: {infoResponse.Error.Message} (Code {infoResponse.Error.Code})", LogCat); } if (clusterConfig.PaymentProcessing?.Enabled == true && poolConfig.PaymentProcessing?.Enabled == true) { var addressResponse = await walletDaemon.ExecuteCmdAnyAsync <GetAddressResponse>(MWC.GetAddress); // ensure pool owns wallet if (clusterConfig.PaymentProcessing?.Enabled == true && addressResponse.Response?.Address != poolConfig.Address) { logger.ThrowLogPoolStartupException($"Wallet-Daemon does not own pool-address '{poolConfig.Address}'", LogCat); } } var info = infoResponse.Response.ToObject <GetInfoResponse>(); // chain detection networkType = info.IsTestnet ? MoneroNetworkType.Test : MoneroNetworkType.Main; // address validation poolAddressBase58Prefix = LibCryptonote.DecodeAddress(poolConfig.Address); if (poolAddressBase58Prefix == 0) { logger.ThrowLogPoolStartupException("Unable to decode pool-address", LogCat); } switch (networkType) { case MoneroNetworkType.Main: if (poolAddressBase58Prefix != MoneroConstants.AddressPrefix[poolConfig.Coin.Type]) { logger.ThrowLogPoolStartupException($"Invalid pool address prefix. Expected {MoneroConstants.AddressPrefix[poolConfig.Coin.Type]}, got {poolAddressBase58Prefix}", LogCat); } break; case MoneroNetworkType.Test: if (poolAddressBase58Prefix != MoneroConstants.AddressPrefixTestnet[poolConfig.Coin.Type]) { logger.ThrowLogPoolStartupException($"Invalid pool address prefix. Expected {MoneroConstants.AddressPrefix[poolConfig.Coin.Type]}, got {poolAddressBase58Prefix}", LogCat); } break; } // if (clusterConfig.PaymentProcessing?.Enabled == true && poolConfig.PaymentProcessing?.Enabled == true) // ConfigureRewards(); // update stats BlockchainStats.RewardType = "POW"; BlockchainStats.NetworkType = networkType.ToString(); await UpdateNetworkStatsAsync(); SetupJobUpdates(); }
protected override async Task PostStartInitAsync() { var infoResponse = await daemon.ExecuteCmdAnyAsync(MC.GetInfo); var addressResponse = await walletDaemon.ExecuteCmdAnyAsync <GetAddressResponse>(MWC.GetAddress); if (infoResponse.Error != null) { logger.ThrowLogPoolStartupException($"Init RPC failed: {infoResponse.Error.Message} (Code {infoResponse.Error.Code})", LogCat); } // ensure pool owns wallet if (addressResponse.Response?.Address != poolConfig.Address) { logger.ThrowLogPoolStartupException($"Wallet-Daemon does not own pool-address '{poolConfig.Address}'", LogCat); } var info = infoResponse.Response.ToObject <GetInfoResponse>(); // chain detection networkType = info.IsTestnet ? MoneroNetworkType.Test : MoneroNetworkType.Main; ConfigureRewards(); // update stats BlockchainStats.RewardType = "POW"; BlockchainStats.NetworkType = networkType.ToString(); await UpdateNetworkStatsAsync(); SetupJobUpdates(); }
protected override async Task PostStartInitAsync(CancellationToken ct) { var infoResponse = await daemon.ExecuteCmdAnyAsync(MC.GetInfo); if (infoResponse.Error != null) { logger.ThrowLogPoolStartupException($"Init RPC failed: {infoResponse.Error.Message} (Code {infoResponse.Error.Code})"); } if (clusterConfig.PaymentProcessing?.Enabled == true && poolConfig.PaymentProcessing?.Enabled == true) { var addressResponse = await walletDaemon.ExecuteCmdAnyAsync <GetAddressResponse>(MWC.GetAddress); // ensure pool owns wallet if (clusterConfig.PaymentProcessing?.Enabled == true && addressResponse.Response?.Address != poolConfig.Address) { logger.ThrowLogPoolStartupException($"Wallet-Daemon does not own pool-address '{poolConfig.Address}'"); } } var info = infoResponse.Response.ToObject <GetInfoResponse>(); // chain detection networkType = info.IsTestnet ? MoneroNetworkType.Test : MoneroNetworkType.Main; // address validation poolAddressBase58Prefix = LibCryptonote.DecodeAddress(poolConfig.Address); if (poolAddressBase58Prefix == 0) { logger.ThrowLogPoolStartupException("Unable to decode pool-address"); } switch (networkType) { case MoneroNetworkType.Main: if (poolAddressBase58Prefix != MoneroConstants.AddressPrefix[poolConfig.Coin.Type]) { logger.ThrowLogPoolStartupException($"Invalid pool address prefix. Expected {MoneroConstants.AddressPrefix[poolConfig.Coin.Type]}, got {poolAddressBase58Prefix}"); } break; case MoneroNetworkType.Test: if (poolAddressBase58Prefix != MoneroConstants.AddressPrefixTestnet[poolConfig.Coin.Type]) { logger.ThrowLogPoolStartupException($"Invalid pool address prefix. Expected {MoneroConstants.AddressPrefix[poolConfig.Coin.Type]}, got {poolAddressBase58Prefix}"); } break; } if (clusterConfig.PaymentProcessing?.Enabled == true && poolConfig.PaymentProcessing?.Enabled == true) { ConfigureRewards(); } // update stats BlockchainStats.RewardType = "POW"; BlockchainStats.NetworkType = networkType.ToString(); await UpdateNetworkStatsAsync(); // Periodically update network stats Observable.Interval(TimeSpan.FromMinutes(1)) .Select(via => Observable.FromAsync(async() => { try { await UpdateNetworkStatsAsync(); } catch (Exception ex) { logger.Error(ex); } })) .Concat() .Subscribe(); SetupJobUpdates(); }