private void InitColossus(ChainName networkType) { Add(new NBXplorerNetwork(NBitcoin.Altcoins.Colossus.Instance, networkType) { MinRPCVersion = 1010000 }); }
public NBXplorerNetworkProvider(ChainName networkType) { NetworkType = networkType; InitArgoneum(networkType); InitBitcoin(networkType); InitBitcore(networkType); InitLitecoin(networkType); InitDogecoin(networkType); InitBCash(networkType); InitGroestlcoin(networkType); InitBGold(networkType); InitDash(networkType); InitTerracoin(networkType); InitPolis(networkType); InitMonacoin(networkType); InitFeathercoin(networkType); InitUfo(networkType); InitVerge(networkType); InitViacoin(networkType); InitMonoeci(networkType); InitGobyte(networkType); InitColossus(networkType); InitChaincoin(networkType); InitLiquid(networkType); InitQtum(networkType); InitMonetaryUnit(networkType); foreach (var chain in _Networks.Values) { chain.DerivationStrategyFactory ??= chain.CreateStrategyFactory(); } }
private void InitMonetaryUnit(ChainName networkType) { Add(new NBXplorerNetwork(NBitcoin.Altcoins.MonetaryUnit.Instance, networkType) { MinRPCVersion = 70702 }); }
public async Task <string> GetLink(Uri absoluteUriNoPathBase, ChainName networkType) { var connectionString = await ConnectionString.Expand(absoluteUriNoPathBase, Type, networkType); var tokenParam = Type == ExternalServiceTypes.ThunderHub ? "token" : "access-key"; return($"{connectionString.Server}?{tokenParam}={connectionString.AccessKey}"); }
private void InitPolis(ChainName networkType) { Add(new NBXplorerNetwork(NBitcoin.Altcoins.Polis.Instance, networkType) { MinRPCVersion = 1030000, CoinType = NetworkType == ChainName.Mainnet ? new KeyPath("1997'") : new KeyPath("1'") }); }
private void InitMonoeci(ChainName networkType) { Add(new NBXplorerNetwork(NBitcoin.Altcoins.Monoeci.Instance, networkType) { MinRPCVersion = 120203, CoinType = NetworkType == ChainName.Mainnet ? new KeyPath("1998'") : new KeyPath("1'") }); }
private void InitFeathercoin(ChainName networkType) { Add(new NBXplorerNetwork(NBitcoin.Altcoins.Feathercoin.Instance, networkType) { MinRPCVersion = 160000, CoinType = networkType == ChainName.Mainnet ? new KeyPath("8'") : new KeyPath("1'") }); }
private void InitArgoneum(ChainName networkType) { Add(new NBXplorerNetwork(NBitcoin.Altcoins.Argoneum.Instance, networkType) { MinRPCVersion = 1040000, CoinType = networkType == ChainName.Mainnet ? new KeyPath("421'") : new KeyPath("1'") }); }
private void InitDash(ChainName networkType) { Add(new NBXplorerNetwork(NBitcoin.Altcoins.Dash.Instance, networkType) { MinRPCVersion = 120000, CoinType = networkType == ChainName.Mainnet ? new KeyPath("5'") : new KeyPath("1'") }); }
private void InitBitcore(ChainName networkType) { Add(new NBXplorerNetwork(NBitcoin.Altcoins.Bitcore.Instance, networkType) { MinRPCVersion = 150100, CoinType = networkType == ChainName.Mainnet ? new KeyPath("160'") : new KeyPath("1'") }); }
private void InitGroestlcoin(ChainName networkType) { Add(new NBXplorerNetwork(NBitcoin.Altcoins.Groestlcoin.Instance, networkType) { MinRPCVersion = 150000, CoinType = NetworkType == ChainName.Mainnet ? new KeyPath("17'") : new KeyPath("1'") }); }
private void InitLiquid(ChainName networkType) { Add(new LiquidNBXplorerNetwork(NBitcoin.Altcoins.Liquid.Instance, networkType) { MinRPCVersion = 150000, CoinType = networkType == ChainName.Mainnet ? new KeyPath("1776'") : new KeyPath("1'"), }); }
private void InitLitecoin(ChainName networkType) { Add(new NBXplorerNetwork(NBitcoin.Altcoins.Litecoin.Instance, networkType) { MinRPCVersion = 140200, CoinType = networkType == ChainName.Mainnet ? new KeyPath("2'") : new KeyPath("1'"), }); }
private void InitTerracoin(ChainName networkType) { Add(new NBXplorerNetwork(NBitcoin.Altcoins.Terracoin.Instance, networkType) { MinRPCVersion = 120204, CoinType = networkType == ChainName.Mainnet ? new KeyPath("83'") : new KeyPath("1'") }); }
private void InitGobyte(ChainName networkType) { Add(new NBXplorerNetwork(NBitcoin.Altcoins.GoByte.Instance, networkType) { MinRPCVersion = 120204, CoinType = NetworkType == ChainName.Mainnet ? new KeyPath("176'") : new KeyPath("1'") }); }
private void InitVerge(ChainName networkType) { Add(new NBXplorerNetwork(NBitcoin.Altcoins.Verge.Instance, networkType) { MinRPCVersion = 6000200, ChainLoadingTimeout = TimeSpan.FromHours(1), ChainCacheLoadingTimeout = TimeSpan.FromMinutes(3), CoinType = networkType == ChainName.Mainnet ? new KeyPath("77'") : new KeyPath("1'"), }); }
private void InitDogecoin(ChainName networkType) { Add(new NBXplorerNetwork(NBitcoin.Altcoins.Dogecoin.Instance, networkType) { MinRPCVersion = 140200, ChainLoadingTimeout = TimeSpan.FromHours(1), ChainCacheLoadingTimeout = TimeSpan.FromMinutes(2), SupportCookieAuthentication = false, CoinType = NetworkType == ChainName.Mainnet ? new KeyPath("3'") : new KeyPath("1'") }); }
public static T ToNetwork <T>(this T obj, ChainName chainName) where T : IBitcoinString { if (obj == null) { throw new ArgumentNullException(nameof(obj)); } if (chainName == null) { throw new ArgumentNullException(nameof(chainName)); } if (obj.Network.ChainName == chainName) { return(obj); } return(obj.ToNetwork(obj.Network.NetworkSet.GetNetwork(chainName))); }
public BTCPayNetworkProvider(ChainName networkType) { _NBXplorerNetworkProvider = new NBXplorerNetworkProvider(networkType); NetworkType = networkType; InitBitcoin(); #if ALTCOINS InitLiquid(); InitLiquidAssets(); InitLitecoin(); InitBitcore(); InitDogecoin(); InitBGold(); InitMonacoin(); InitDash(); InitFeathercoin(); InitAlthash(); InitGroestlcoin(); InitViacoin(); InitMonero(); InitPolis(); InitChaincoin(); // InitArgoneum();//their rate source is down 9/15/20. InitMonetaryUnit(); InitEthereum(); InitERC20(); // Assume that electrum mappings are same as BTC if not specified foreach (var network in _Networks.Values.OfType <BTCPayNetwork>()) { if (network.ElectrumMapping.Count == 0) { network.ElectrumMapping = GetNetwork <BTCPayNetwork>("BTC").ElectrumMapping; if (!network.NBitcoinNetwork.Consensus.SupportSegwit) { network.ElectrumMapping = network.ElectrumMapping .Where(kv => kv.Value == DerivationType.Legacy) .ToDictionary(k => k.Key, k => k.Value); } } } // Disabled because of https://twitter.com/Cryptopia_NZ/status/1085084168852291586 //InitBPlus(); //InitUfo(); #endif }
public EquihashNetworkParams GetNetwork(ChainName chain) { if (chain == ChainName.Mainnet) { return(Networks["main"]); } else if (chain == ChainName.Testnet) { return(Networks["test"]); } else if (chain == ChainName.Regtest) { return(Networks["regtest"]); } throw new NotSupportedException("unsupported network type"); }
public virtual Network GetNetwork(ChainName chainName) { if (chainName == null) { throw new ArgumentNullException(nameof(chainName)); } if (chainName == ChainName.Mainnet) { return(Mainnet); } if (chainName == ChainName.Testnet) { return(Testnet); } if (chainName == ChainName.Regtest) { return(Regtest); } throw new NotSupportedException(chainName.ToString()); }
public static string GetFolderName(ChainName chainName) { if (chainName == null) { throw new ArgumentNullException(nameof(chainName)); } if (chainName == ChainName.Mainnet) { return("Main"); } if (chainName == ChainName.Testnet) { return("TestNet"); } if (chainName == ChainName.Regtest) { return("RegTest"); } return(chainName.ToString()); }
public BitcoinNetworkParams GetNetwork(ChainName chain) { if (Networks == null || Networks.Count == 0) { return(null); } if (chain == ChainName.Mainnet) { return(Networks["main"]); } else if (chain == ChainName.Testnet) { return(Networks["test"]); } else if (chain == ChainName.Regtest) { return(Networks["regtest"]); } throw new NotSupportedException("unsupported network type"); }
public static BTCPayDefaultSettings GetDefaultSettings(ChainName chainType) { if (_Settings.TryGetValue(chainType, out var v)) { return(v); } lock (_Settings) { if (_Settings.TryGetValue(chainType, out v)) { return(v); } var settings = new BTCPayDefaultSettings(); _Settings.Add(chainType, settings); settings.DefaultDataDirectory = StandardConfiguration.DefaultDataDirectory.GetDirectory("BTCPayServer", NBXplorerDefaultSettings.GetFolderName(chainType)); settings.DefaultPluginDirectory = StandardConfiguration.DefaultDataDirectory.GetDirectory("BTCPayServer", "Plugins"); settings.DefaultConfigurationFile = Path.Combine(settings.DefaultDataDirectory, "settings.config"); settings.DefaultPort = (chainType == ChainName.Mainnet ? 23000 : chainType == ChainName.Regtest ? 23002 : 23001); } return(_Settings[chainType]); }
public Network GetNetwork(ChainName chainName) { if (chainName == null) { throw new ArgumentNullException(nameof(chainName)); } if (chainName == ChainName.Mainnet) { return(Mainnet); } if (chainName == ChainName.Testnet) { return(Testnet); } if (chainName == ChainName.Regtest) { return(Regtest); } if (chainName == SignetName) { return(Signet); } return(null); }
public static NBXplorerDefaultSettings GetDefaultSettings(ChainName networkType) { if (_Settings.TryGetValue(networkType, out var v)) { return(v); } lock (_Settings) { if (_Settings.TryGetValue(networkType, out v)) { return(v); } var settings = new NBXplorerDefaultSettings(); settings.DefaultDataDirectory = StandardConfiguration.DefaultDataDirectory.GetDirectory("NBXplorer", GetFolderName(networkType), false); settings.DefaultConfigurationFile = Path.Combine(settings.DefaultDataDirectory, "settings.config"); settings.DefaultCookieFile = Path.Combine(settings.DefaultDataDirectory, ".cookie"); settings.DefaultPort = (networkType == ChainName.Mainnet ? 24444 : networkType == ChainName.Regtest ? 24446 : networkType == ChainName.Testnet ? 24445 : 24447); settings.DefaultUrl = new Uri($"http://127.0.0.1:{settings.DefaultPort}/", UriKind.Absolute); _Settings.Add(networkType, settings); return(settings); } }
internal NBXplorerNetwork(INetworkSet networkSet, ChainName networkType) { NBitcoinNetwork = networkSet.GetNetwork(networkType); CryptoCode = networkSet.CryptoCode; DefaultSettings = NBXplorerDefaultSettings.GetDefaultSettings(networkType); }
public NetworkBuilder SetNetworkType(NetworkType network) { _ChainName = ChainName.FromNetworkType(network); return(this); }
public NetworkBuilder SetChainName(ChainName chainName) { _ChainName = chainName; return(this); }
/// <summary> /// Return a connectionString which does not depends on external resources or information like relative path or file path /// </summary> /// <returns></returns> public async Task <ExternalConnectionString> Expand(Uri absoluteUrlBase, ExternalServiceTypes serviceType, ChainName network) { var connectionString = this.Clone(); // Transform relative URI into absolute URI var serviceUri = connectionString.Server.IsAbsoluteUri ? connectionString.Server : ToRelative(absoluteUrlBase, connectionString.Server.ToString()); var isSecure = network != ChainName.Mainnet || serviceUri.Scheme == "https" || serviceUri.DnsSafeHost.EndsWith(".onion", StringComparison.OrdinalIgnoreCase) || Extensions.IsLocalNetwork(serviceUri.DnsSafeHost); if (!isSecure) { throw new System.Security.SecurityException($"Insecure transport protocol to access this service, please use HTTPS or TOR"); } connectionString.Server = serviceUri; if (serviceType == ExternalServiceTypes.LNDGRPC || serviceType == ExternalServiceTypes.LNDRest || serviceType == ExternalServiceTypes.CLightningRest) { // Read the MacaroonDirectory if (connectionString.MacaroonDirectoryPath != null) { try { connectionString.Macaroons = await Macaroons.GetFromDirectoryAsync(connectionString.MacaroonDirectoryPath); connectionString.MacaroonDirectoryPath = null; } catch (Exception ex) { throw new System.IO.DirectoryNotFoundException("Macaroon directory path not found", ex); } } // Read the MacaroonFilePath if (connectionString.MacaroonFilePath != null) { try { connectionString.Macaroon = await System.IO.File.ReadAllBytesAsync(connectionString.MacaroonFilePath); connectionString.MacaroonFilePath = null; } catch (Exception ex) { throw new System.IO.FileNotFoundException("Macaroon not found", ex); } } } if (new[] { ExternalServiceTypes.Charge, ExternalServiceTypes.RTL, ExternalServiceTypes.ThunderHub, ExternalServiceTypes.Spark, ExternalServiceTypes.Configurator }.Contains(serviceType)) { // Read access key from cookie file if (connectionString.CookieFilePath != null) { bool isFake = connectionString.CookieFilePath == "fake"; // Hacks for testing string cookieFileContent = isFake ? "fake" : null; if (!isFake) { try { cookieFileContent = await System.IO.File.ReadAllTextAsync(connectionString.CookieFilePath); } catch (Exception ex) { throw new System.IO.FileNotFoundException("Cookie file path not found", ex); } } connectionString.CookieFilePath = null; if (serviceType == ExternalServiceTypes.RTL || serviceType == ExternalServiceTypes.Configurator || serviceType == ExternalServiceTypes.ThunderHub) { connectionString.AccessKey = cookieFileContent; } else if (serviceType == ExternalServiceTypes.Spark) { var cookie = (isFake ? "fake:fake:fake" : cookieFileContent).Split(':'); if (cookie.Length >= 3) { connectionString.AccessKey = cookie[2]; } else { throw new FormatException("Invalid cookiefile format"); } } else if (serviceType == ExternalServiceTypes.Charge) { connectionString.APIToken = isFake ? "fake" : cookieFileContent; } } } return(connectionString); }