Exemple #1
0
 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'")
     });
 }
Exemple #9
0
 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'")
     });
 }
Exemple #10
0
 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'")
     });
 }
Exemple #11
0
 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'")
     });
 }
Exemple #12
0
 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'")
     });
 }
Exemple #15
0
 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'")
     });
 }
Exemple #18
0
 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)));
 }
Exemple #19
0
        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");
        }
Exemple #21
0
 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");
        }
Exemple #24
0
 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]);
 }
Exemple #25
0
 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);
     }
 }
Exemple #27
0
 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);
 }
Exemple #30
0
        /// <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);
        }