From db0854f20346dfde8d680a753b253afe76e6109a Mon Sep 17 00:00:00 2001 From: Nicolas Dorier Date: Wed, 27 Jan 2021 14:39:38 +0900 Subject: [PATCH] Update NBitcoin, NetworkType => ChainName, signet support (#2224) --- .../BTCPayServer.Client.csproj | 2 +- .../Models/CreateLightningInvoiceRequest.cs | 2 +- .../BTCPayNetworkProvider.Argoneum.cs | 4 +- .../Altcoins/BTCPayNetworkProvider.BGold.cs | 4 +- .../Altcoins/BTCPayNetworkProvider.BPlus.cs | 4 +- .../Altcoins/BTCPayNetworkProvider.Bitcore.cs | 4 +- .../BTCPayNetworkProvider.Chaincoin.cs | 4 +- .../Altcoins/BTCPayNetworkProvider.Dash.cs | 4 +- .../BTCPayNetworkProvider.Dogecoin.cs | 4 +- .../BTCPayNetworkProvider.Feathercoin.cs | 4 +- .../BTCPayNetworkProvider.Groestlcoin.cs | 4 +- .../BTCPayNetworkProvider.Litecoin.cs | 6 +-- .../BTCPayNetworkProvider.Monacoin.cs | 4 +- .../BTCPayNetworkProvider.MonetaryUnit.cs | 4 +- .../Altcoins/BTCPayNetworkProvider.Polis.cs | 4 +- .../Altcoins/BTCPayNetworkProvider.Ufo.cs | 4 +- .../Altcoins/BTCPayNetworkProvider.Viacoin.cs | 4 +- .../BTCPayNetworkProvider.Ethereum.cs | 14 +++---- .../Liquid/BTCPayNetworkProvider.Liquid.cs | 6 +-- .../BTCPayNetworkProvider.LiquidAssets.cs | 12 +++--- .../Monero/BTCPayNetworkProvider.Monero.cs | 2 +- BTCPayServer.Common/BTCPayNetwork.cs | 26 +++++++----- .../BTCPayNetworkProvider.Bitcoin.cs | 8 ++-- BTCPayServer.Common/BTCPayNetworkProvider.cs | 4 +- .../BTCPayServer.Common.csproj | 4 +- .../BTCPayServer.Rating.csproj | 2 +- .../AltcoinTests/AltcoinTests.cs | 8 ++-- BTCPayServer.Tests/BTCPayServerTester.cs | 2 +- BTCPayServer.Tests/GreenfieldAPITests.cs | 4 +- BTCPayServer.Tests/ServerTester.cs | 2 +- BTCPayServer.Tests/UnitTest1.cs | 40 +++++++++---------- BTCPayServer/BTCPayServer.csproj | 4 +- .../Configuration/BTCPayServerOptions.cs | 4 +- .../Configuration/DefaultConfiguration.cs | 13 +++--- .../Configuration/ExternalConnectionString.cs | 4 +- .../Controllers/NotificationsController.cs | 2 +- .../HostedServices/NBXplorerWaiter.cs | 4 +- BTCPayServer/Hosting/BTCPayServerServices.cs | 2 +- .../Services/BTCPayServerEnvironment.cs | 6 +-- BTCPayServer/Views/Shared/_Layout.cshtml | 2 +- 40 files changed, 125 insertions(+), 116 deletions(-) diff --git a/BTCPayServer.Client/BTCPayServer.Client.csproj b/BTCPayServer.Client/BTCPayServer.Client.csproj index c0b107275..8c78ba5df 100644 --- a/BTCPayServer.Client/BTCPayServer.Client.csproj +++ b/BTCPayServer.Client/BTCPayServer.Client.csproj @@ -27,7 +27,7 @@ - + diff --git a/BTCPayServer.Client/Models/CreateLightningInvoiceRequest.cs b/BTCPayServer.Client/Models/CreateLightningInvoiceRequest.cs index ba38843fa..1fc8cca0b 100644 --- a/BTCPayServer.Client/Models/CreateLightningInvoiceRequest.cs +++ b/BTCPayServer.Client/Models/CreateLightningInvoiceRequest.cs @@ -17,7 +17,7 @@ namespace BTCPayServer.Client.Models Description = description; Expiry = expiry; } - [JsonConverter(typeof(LightMoneyJsonConverter))] + [JsonConverter(typeof(BTCPayServer.Client.JsonConverters.LightMoneyJsonConverter))] public LightMoney Amount { get; set; } public string Description { get; set; } [JsonConverter(typeof(JsonConverters.TimeSpanJsonConverter.Seconds))] diff --git a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Argoneum.cs b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Argoneum.cs index 60112eb4d..7f34f86a7 100644 --- a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Argoneum.cs +++ b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Argoneum.cs @@ -11,7 +11,7 @@ namespace BTCPayServer { CryptoCode = nbxplorerNetwork.CryptoCode, DisplayName = "Argoneum", - BlockExplorerLink = NetworkType == NetworkType.Mainnet + BlockExplorerLink = NetworkType == ChainName.Mainnet ? "https://chainz.cryptoid.info/agm/tx.dws?{0}" : "https://chainz.cryptoid.info/agm-test/tx.dws?{0}", NBXplorerNetwork = nbxplorerNetwork, @@ -23,7 +23,7 @@ namespace BTCPayServer }, CryptoImagePath = "imlegacy/argoneum.png", DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType), - CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("421'") + CoinType = NetworkType == ChainName.Mainnet ? new KeyPath("421'") : new KeyPath("1'") }); } diff --git a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.BGold.cs b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.BGold.cs index ef3156c41..475283e7f 100644 --- a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.BGold.cs +++ b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.BGold.cs @@ -11,7 +11,7 @@ namespace BTCPayServer { CryptoCode = nbxplorerNetwork.CryptoCode, DisplayName = "BGold", - BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://btgexplorer.com/tx/{0}" : "https://testnet.btgexplorer.com/tx/{0}", + BlockExplorerLink = NetworkType == ChainName.Mainnet ? "https://btgexplorer.com/tx/{0}" : "https://testnet.btgexplorer.com/tx/{0}", NBXplorerNetwork = nbxplorerNetwork, UriScheme = "bitcoingold", DefaultRateRules = new[] @@ -22,7 +22,7 @@ namespace BTCPayServer CryptoImagePath = "imlegacy/btg.svg", LightningImagePath = "imlegacy/btg-lightning.svg", DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType), - CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("156'") : new KeyPath("1'") + CoinType = NetworkType == ChainName.Mainnet ? new KeyPath("156'") : new KeyPath("1'") }); } } diff --git a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.BPlus.cs b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.BPlus.cs index 8a17d1881..d8b35309c 100644 --- a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.BPlus.cs +++ b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.BPlus.cs @@ -12,7 +12,7 @@ namespace BTCPayServer { CryptoCode = nbxplorerNetwork.CryptoCode, DisplayName = "BPlus", - BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://chainz.cryptoid.info/xbc/tx.dws?{0}" : "https://chainz.cryptoid.info/xbc/tx.dws?{0}", + BlockExplorerLink = NetworkType == ChainName.Mainnet ? "https://chainz.cryptoid.info/xbc/tx.dws?{0}" : "https://chainz.cryptoid.info/xbc/tx.dws?{0}", NBXplorerNetwork = nbxplorerNetwork, UriScheme = "bplus-fix-it", DefaultRateRules = new[] @@ -22,7 +22,7 @@ namespace BTCPayServer }, CryptoImagePath = "imlegacy/xbc.png", DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType), - CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("65'") : new KeyPath("1'") + CoinType = NetworkType == ChainName.Mainnet ? new KeyPath("65'") : new KeyPath("1'") }); } } diff --git a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Bitcore.cs b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Bitcore.cs index 5a4eac655..b6597ea5a 100644 --- a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Bitcore.cs +++ b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Bitcore.cs @@ -12,7 +12,7 @@ namespace BTCPayServer { CryptoCode = nbxplorerNetwork.CryptoCode, DisplayName = "Bitcore", - BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://insight.bitcore.cc/tx/{0}" : "https://insight.bitcore.cc/tx/{0}", + BlockExplorerLink = NetworkType == ChainName.Mainnet ? "https://insight.bitcore.cc/tx/{0}" : "https://insight.bitcore.cc/tx/{0}", NBXplorerNetwork = nbxplorerNetwork, UriScheme = "bitcore", DefaultRateRules = new[] @@ -23,7 +23,7 @@ namespace BTCPayServer CryptoImagePath = "imlegacy/bitcore.svg", LightningImagePath = "imlegacy/bitcore-lightning.svg", DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType), - CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("160'") : new KeyPath("1'") + CoinType = NetworkType == ChainName.Mainnet ? new KeyPath("160'") : new KeyPath("1'") }); } } diff --git a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Chaincoin.cs b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Chaincoin.cs index 894c44212..a04e003ff 100644 --- a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Chaincoin.cs +++ b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Chaincoin.cs @@ -11,7 +11,7 @@ namespace BTCPayServer { CryptoCode = nbxplorerNetwork.CryptoCode, DisplayName = "Chaincoin", - BlockExplorerLink = NetworkType == NetworkType.Mainnet + BlockExplorerLink = NetworkType == ChainName.Mainnet ? "https://explorer.chaincoin.org/Explorer/Transaction/{0}" : "https://test.explorer.chaincoin.org/Explorer/Transaction/tx/{0}", NBXplorerNetwork = nbxplorerNetwork, @@ -24,7 +24,7 @@ namespace BTCPayServer CryptoImagePath = "imlegacy/chaincoin.png", DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType), //https://github.com/satoshilabs/slips/blob/master/slip-0044.md - CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("711'") + CoinType = NetworkType == ChainName.Mainnet ? new KeyPath("711'") : new KeyPath("1'") }); } diff --git a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Dash.cs b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Dash.cs index d293c0f4a..23ec81a56 100644 --- a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Dash.cs +++ b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Dash.cs @@ -12,7 +12,7 @@ namespace BTCPayServer { CryptoCode = nbxplorerNetwork.CryptoCode, DisplayName = "Dash", - BlockExplorerLink = NetworkType == NetworkType.Mainnet + BlockExplorerLink = NetworkType == ChainName.Mainnet ? "https://insight.dash.org/insight/tx/{0}" : "https://testnet-insight.dashevo.org/insight/tx/{0}", NBXplorerNetwork = nbxplorerNetwork, @@ -25,7 +25,7 @@ namespace BTCPayServer CryptoImagePath = "imlegacy/dash.png", DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType), //https://github.com/satoshilabs/slips/blob/master/slip-0044.md - CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("5'") + CoinType = NetworkType == ChainName.Mainnet ? new KeyPath("5'") : new KeyPath("1'") }); } diff --git a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Dogecoin.cs b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Dogecoin.cs index e76e23a81..758cbddf3 100644 --- a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Dogecoin.cs +++ b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Dogecoin.cs @@ -12,7 +12,7 @@ namespace BTCPayServer { CryptoCode = nbxplorerNetwork.CryptoCode, DisplayName = "Dogecoin", - BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://dogechain.info/tx/{0}" : "https://dogechain.info/tx/{0}", + BlockExplorerLink = NetworkType == ChainName.Mainnet ? "https://dogechain.info/tx/{0}" : "https://dogechain.info/tx/{0}", NBXplorerNetwork = nbxplorerNetwork, UriScheme = "dogecoin", DefaultRateRules = new[] @@ -22,7 +22,7 @@ namespace BTCPayServer }, CryptoImagePath = "imlegacy/dogecoin.png", DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType), - CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("3'") : new KeyPath("1'") + CoinType = NetworkType == ChainName.Mainnet ? new KeyPath("3'") : new KeyPath("1'") }); } } diff --git a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Feathercoin.cs b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Feathercoin.cs index 559e4f911..38ec7b63f 100644 --- a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Feathercoin.cs +++ b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Feathercoin.cs @@ -12,7 +12,7 @@ namespace BTCPayServer { CryptoCode = nbxplorerNetwork.CryptoCode, DisplayName = "Feathercoin", - BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://explorer.feathercoin.com/tx/{0}" : "https://explorer.feathercoin.com/tx/{0}", + BlockExplorerLink = NetworkType == ChainName.Mainnet ? "https://explorer.feathercoin.com/tx/{0}" : "https://explorer.feathercoin.com/tx/{0}", NBXplorerNetwork = nbxplorerNetwork, UriScheme = "feathercoin", DefaultRateRules = new[] @@ -22,7 +22,7 @@ namespace BTCPayServer }, CryptoImagePath = "imlegacy/feathercoin.png", DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType), - CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("8'") : new KeyPath("1'") + CoinType = NetworkType == ChainName.Mainnet ? new KeyPath("8'") : new KeyPath("1'") }); } } diff --git a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Groestlcoin.cs b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Groestlcoin.cs index 69a650744..5a412dff2 100644 --- a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Groestlcoin.cs +++ b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Groestlcoin.cs @@ -11,7 +11,7 @@ namespace BTCPayServer { CryptoCode = nbxplorerNetwork.CryptoCode, DisplayName = "Groestlcoin", - BlockExplorerLink = NetworkType == NetworkType.Mainnet + BlockExplorerLink = NetworkType == ChainName.Mainnet ? "https://chainz.cryptoid.info/grs/tx.dws?{0}.htm" : "https://chainz.cryptoid.info/grs-test/tx.dws?{0}.htm", NBXplorerNetwork = nbxplorerNetwork, @@ -24,7 +24,7 @@ namespace BTCPayServer CryptoImagePath = "imlegacy/groestlcoin.png", LightningImagePath = "imlegacy/groestlcoin-lightning.svg", DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType), - CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("17'") : new KeyPath("1'"), + CoinType = NetworkType == ChainName.Mainnet ? new KeyPath("17'") : new KeyPath("1'"), SupportRBF = true, SupportPayJoin = true }); diff --git a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Litecoin.cs b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Litecoin.cs index a7bd452c5..05798d5ca 100644 --- a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Litecoin.cs +++ b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Litecoin.cs @@ -13,7 +13,7 @@ namespace BTCPayServer { CryptoCode = nbxplorerNetwork.CryptoCode, DisplayName = "Litecoin", - BlockExplorerLink = NetworkType == NetworkType.Mainnet + BlockExplorerLink = NetworkType == ChainName.Mainnet ? "https://live.blockcypher.com/ltc/tx/{0}/" : "http://explorer.litecointools.com/tx/{0}", NBXplorerNetwork = nbxplorerNetwork, @@ -26,9 +26,9 @@ namespace BTCPayServer CryptoImagePath = "imlegacy/litecoin.svg", LightningImagePath = "imlegacy/litecoin-lightning.svg", DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType), - CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("2'") : new KeyPath("1'"), + CoinType = NetworkType == ChainName.Mainnet ? new KeyPath("2'") : new KeyPath("1'"), //https://github.com/pooler/electrum-ltc/blob/0d6989a9d2fb2edbea421c116e49d1015c7c5a91/electrum_ltc/constants.py - ElectrumMapping = NetworkType == NetworkType.Mainnet + ElectrumMapping = NetworkType == ChainName.Mainnet ? new Dictionary() { {0x0488b21eU, DerivationType.Legacy }, diff --git a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Monacoin.cs b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Monacoin.cs index 937373e7a..ab2123f5b 100644 --- a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Monacoin.cs +++ b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Monacoin.cs @@ -12,7 +12,7 @@ namespace BTCPayServer { CryptoCode = nbxplorerNetwork.CryptoCode, DisplayName = "Monacoin", - BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://mona.insight.monaco-ex.org/insight/tx/{0}" : "https://testnet-mona.insight.monaco-ex.org/insight/tx/{0}", + BlockExplorerLink = NetworkType == ChainName.Mainnet ? "https://mona.insight.monaco-ex.org/insight/tx/{0}" : "https://testnet-mona.insight.monaco-ex.org/insight/tx/{0}", NBXplorerNetwork = nbxplorerNetwork, UriScheme = "monacoin", DefaultRateRules = new[] @@ -23,7 +23,7 @@ namespace BTCPayServer CryptoImagePath = "imlegacy/monacoin.png", LightningImagePath = "imlegacy/mona-lightning.svg", DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType), - CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("22'") : new KeyPath("1'") + CoinType = NetworkType == ChainName.Mainnet ? new KeyPath("22'") : new KeyPath("1'") }); } } diff --git a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.MonetaryUnit.cs b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.MonetaryUnit.cs index 20b396f21..b5e12414d 100644 --- a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.MonetaryUnit.cs +++ b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.MonetaryUnit.cs @@ -12,7 +12,7 @@ namespace BTCPayServer { CryptoCode = nbxplorerNetwork.CryptoCode, DisplayName = "MonetaryUnit", - BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://explorer.monetaryunit.org/#/MUE/mainnet/tx/{0}" : "https://explorer.monetaryunit.org/#/MUE/mainnet/tx/{0}", + BlockExplorerLink = NetworkType == ChainName.Mainnet ? "https://explorer.monetaryunit.org/#/MUE/mainnet/tx/{0}" : "https://explorer.monetaryunit.org/#/MUE/mainnet/tx/{0}", NBXplorerNetwork = nbxplorerNetwork, UriScheme = "monetaryunit", DefaultRateRules = new[] @@ -22,7 +22,7 @@ namespace BTCPayServer }, CryptoImagePath = "imlegacy/monetaryunit.png", DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType), - CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("31'") : new KeyPath("1'") + CoinType = NetworkType == ChainName.Mainnet ? new KeyPath("31'") : new KeyPath("1'") }); } } diff --git a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Polis.cs b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Polis.cs index 2fbc99c56..0c7c14d1b 100644 --- a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Polis.cs +++ b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Polis.cs @@ -12,7 +12,7 @@ namespace BTCPayServer { CryptoCode = nbxplorerNetwork.CryptoCode, DisplayName = "Polis", - BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://blockbook.polispay.org/tx/{0}" : "https://blockbook.polispay.org/tx/{0}", + BlockExplorerLink = NetworkType == ChainName.Mainnet ? "https://blockbook.polispay.org/tx/{0}" : "https://blockbook.polispay.org/tx/{0}", NBXplorerNetwork = nbxplorerNetwork, UriScheme = "polis", DefaultRateRules = new[] @@ -22,7 +22,7 @@ namespace BTCPayServer }, CryptoImagePath = "imlegacy/polis.png", DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType), - CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("1997'") : new KeyPath("1'") + CoinType = NetworkType == ChainName.Mainnet ? new KeyPath("1997'") : new KeyPath("1'") }); } } diff --git a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Ufo.cs b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Ufo.cs index 014ec57ec..045fd99d4 100644 --- a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Ufo.cs +++ b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Ufo.cs @@ -12,7 +12,7 @@ namespace BTCPayServer { CryptoCode = nbxplorerNetwork.CryptoCode, DisplayName = "Ufo", - BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://chainz.cryptoid.info/ufo/tx.dws?{0}" : "https://chainz.cryptoid.info/ufo/tx.dws?{0}", + BlockExplorerLink = NetworkType == ChainName.Mainnet ? "https://chainz.cryptoid.info/ufo/tx.dws?{0}" : "https://chainz.cryptoid.info/ufo/tx.dws?{0}", NBXplorerNetwork = nbxplorerNetwork, UriScheme = "ufo", DefaultRateRules = new[] @@ -22,7 +22,7 @@ namespace BTCPayServer }, CryptoImagePath = "imlegacy/ufo.png", DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType), - CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("202'") : new KeyPath("1'") + CoinType = NetworkType == ChainName.Mainnet ? new KeyPath("202'") : new KeyPath("1'") }); } } diff --git a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Viacoin.cs b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Viacoin.cs index 43effbaad..68a29a93f 100644 --- a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Viacoin.cs +++ b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Viacoin.cs @@ -12,7 +12,7 @@ namespace BTCPayServer { CryptoCode = nbxplorerNetwork.CryptoCode, DisplayName = "Viacoin", - BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://explorer.viacoin.org/tx/{0}" : "https://explorer.viacoin.org/tx/{0}", + BlockExplorerLink = NetworkType == ChainName.Mainnet ? "https://explorer.viacoin.org/tx/{0}" : "https://explorer.viacoin.org/tx/{0}", NBXplorerNetwork = nbxplorerNetwork, UriScheme = "viacoin", DefaultRateRules = new[] @@ -22,7 +22,7 @@ namespace BTCPayServer }, CryptoImagePath = "imlegacy/viacoin.png", DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType), - CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("14'") : new KeyPath("1'") + CoinType = NetworkType == ChainName.Mainnet ? new KeyPath("14'") : new KeyPath("1'") }); } } diff --git a/BTCPayServer.Common/Altcoins/Ethereum/BTCPayNetworkProvider.Ethereum.cs b/BTCPayServer.Common/Altcoins/Ethereum/BTCPayNetworkProvider.Ethereum.cs index 1f2ee6da1..9e78db450 100644 --- a/BTCPayServer.Common/Altcoins/Ethereum/BTCPayNetworkProvider.Ethereum.cs +++ b/BTCPayServer.Common/Altcoins/Ethereum/BTCPayNetworkProvider.Ethereum.cs @@ -13,20 +13,20 @@ namespace BTCPayServer DisplayName = "Ethereum", DefaultRateRules = new[] {"ETH_X = ETH_BTC * BTC_X", "ETH_BTC = kraken(ETH_BTC)"}, BlockExplorerLink = - NetworkType == NetworkType.Mainnet + NetworkType == ChainName.Mainnet ? "https://etherscan.io/address/{0}" : "https://ropsten.etherscan.io/address/{0}", CryptoImagePath = "/imlegacy/eth.png", ShowSyncSummary = true, - CoinType = NetworkType == NetworkType.Mainnet? 60 : 1, - ChainId = NetworkType == NetworkType.Mainnet ? 1 : 3, + CoinType = NetworkType == ChainName.Mainnet? 60 : 1, + ChainId = NetworkType == ChainName.Mainnet ? 1 : 3, Divisibility = 18, }); } public void InitERC20() { - if (NetworkType != NetworkType.Mainnet) + if (NetworkType != ChainName.Mainnet) { Add(new ERC20BTCPayNetwork() { @@ -60,13 +60,13 @@ namespace BTCPayServer "USDT20_BTC = bitfinex(UST_BTC)", }, BlockExplorerLink = - NetworkType == NetworkType.Mainnet + NetworkType == ChainName.Mainnet ? "https://etherscan.io/address/{0}#tokentxns" : "https://ropsten.etherscan.io/address/{0}#tokentxns", CryptoImagePath = "/imlegacy/liquid-tether.svg", ShowSyncSummary = false, - CoinType = NetworkType == NetworkType.Mainnet? 60 : 1, - ChainId = NetworkType == NetworkType.Mainnet ? 1 : 3, + CoinType = NetworkType == ChainName.Mainnet? 60 : 1, + ChainId = NetworkType == ChainName.Mainnet ? 1 : 3, SmartContractAddress = "0xdAC17F958D2ee523a2206206994597C13D831ec7", Divisibility = 6 }); diff --git a/BTCPayServer.Common/Altcoins/Liquid/BTCPayNetworkProvider.Liquid.cs b/BTCPayServer.Common/Altcoins/Liquid/BTCPayNetworkProvider.Liquid.cs index 28537869c..1f744bf6a 100644 --- a/BTCPayServer.Common/Altcoins/Liquid/BTCPayNetworkProvider.Liquid.cs +++ b/BTCPayServer.Common/Altcoins/Liquid/BTCPayNetworkProvider.Liquid.cs @@ -13,7 +13,7 @@ namespace BTCPayServer var nbxplorerNetwork = NBXplorerNetworkProvider.GetFromCryptoCode("LBTC"); Add(new ElementsBTCPayNetwork() { - AssetId = NetworkType == NetworkType.Mainnet ? ElementsParams.PeggedAssetId : ElementsParams.PeggedAssetId, + AssetId = NetworkType == ChainName.Mainnet ? ElementsParams.PeggedAssetId : ElementsParams.PeggedAssetId, CryptoCode = "LBTC", NetworkCryptoCode = "LBTC", DisplayName = "Liquid Bitcoin", @@ -22,12 +22,12 @@ namespace BTCPayServer "LBTC_X = LBTC_BTC * BTC_X", "LBTC_BTC = 1", }, - BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://blockstream.info/liquid/tx/{0}" : "https://blockstream.info/testnet/liquid/tx/{0}", + BlockExplorerLink = NetworkType == ChainName.Mainnet ? "https://blockstream.info/liquid/tx/{0}" : "https://blockstream.info/testnet/liquid/tx/{0}", NBXplorerNetwork = nbxplorerNetwork, UriScheme = "liquidnetwork", CryptoImagePath = "imlegacy/liquid.png", DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType), - CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("1776'") : new KeyPath("1'"), + CoinType = NetworkType == ChainName.Mainnet ? new KeyPath("1776'") : new KeyPath("1'"), SupportRBF = true }); } diff --git a/BTCPayServer.Common/Altcoins/Liquid/BTCPayNetworkProvider.LiquidAssets.cs b/BTCPayServer.Common/Altcoins/Liquid/BTCPayNetworkProvider.LiquidAssets.cs index ac729caac..30edda94d 100644 --- a/BTCPayServer.Common/Altcoins/Liquid/BTCPayNetworkProvider.LiquidAssets.cs +++ b/BTCPayServer.Common/Altcoins/Liquid/BTCPayNetworkProvider.LiquidAssets.cs @@ -21,12 +21,12 @@ namespace BTCPayServer }, AssetId = new uint256("ce091c998b83c78bb71a632313ba3760f1763d9cfcffae02258ffa9865a37bd2"), DisplayName = "Liquid Tether", - BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://blockstream.info/liquid/tx/{0}" : "https://blockstream.info/testnet/liquid/tx/{0}", + BlockExplorerLink = NetworkType == ChainName.Mainnet ? "https://blockstream.info/liquid/tx/{0}" : "https://blockstream.info/testnet/liquid/tx/{0}", NBXplorerNetwork = nbxplorerNetwork, UriScheme = "liquidnetwork", CryptoImagePath = "imlegacy/liquid-tether.svg", DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType), - CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("1776'") : new KeyPath("1'"), + CoinType = NetworkType == ChainName.Mainnet ? new KeyPath("1776'") : new KeyPath("1'"), SupportRBF = true, SupportLightning = false }); @@ -45,12 +45,12 @@ namespace BTCPayServer Divisibility = 2, AssetId = new uint256("aa775044c32a7df391902b3659f46dfe004ccb2644ce2ddc7dba31e889391caf"), DisplayName = "Ethiopian Birr", - BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://blockstream.info/liquid/tx/{0}" : "https://blockstream.info/testnet/liquid/tx/{0}", + BlockExplorerLink = NetworkType == ChainName.Mainnet ? "https://blockstream.info/liquid/tx/{0}" : "https://blockstream.info/testnet/liquid/tx/{0}", NBXplorerNetwork = nbxplorerNetwork, UriScheme = "liquidnetwork", CryptoImagePath = "imlegacy/etb.png", DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType), - CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("1776'") : new KeyPath("1'"), + CoinType = NetworkType == ChainName.Mainnet ? new KeyPath("1776'") : new KeyPath("1'"), SupportRBF = true, SupportLightning = false }); @@ -68,12 +68,12 @@ namespace BTCPayServer }, AssetId = new uint256("0e99c1a6da379d1f4151fb9df90449d40d0608f6cb33a5bcbfc8c265f42bab0a"), DisplayName = "Liquid CAD", - BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://blockstream.info/liquid/tx/{0}" : "https://blockstream.info/testnet/liquid/tx/{0}", + BlockExplorerLink = NetworkType == ChainName.Mainnet ? "https://blockstream.info/liquid/tx/{0}" : "https://blockstream.info/testnet/liquid/tx/{0}", NBXplorerNetwork = nbxplorerNetwork, UriScheme = "liquidnetwork", CryptoImagePath = "imlegacy/lcad.png", DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType), - CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("1776'") : new KeyPath("1'"), + CoinType = NetworkType == ChainName.Mainnet ? new KeyPath("1776'") : new KeyPath("1'"), SupportRBF = true, SupportLightning = false }); diff --git a/BTCPayServer.Common/Altcoins/Monero/BTCPayNetworkProvider.Monero.cs b/BTCPayServer.Common/Altcoins/Monero/BTCPayNetworkProvider.Monero.cs index 6ad4ceadb..42d3d5c93 100644 --- a/BTCPayServer.Common/Altcoins/Monero/BTCPayNetworkProvider.Monero.cs +++ b/BTCPayServer.Common/Altcoins/Monero/BTCPayNetworkProvider.Monero.cs @@ -12,7 +12,7 @@ namespace BTCPayServer DisplayName = "Monero", Divisibility = 12, BlockExplorerLink = - NetworkType == NetworkType.Mainnet + NetworkType == ChainName.Mainnet ? "https://www.exploremonero.com/transaction/{0}" : "https://testnet.xmrchain.net/tx/{0}", DefaultRateRules = new[] diff --git a/BTCPayServer.Common/BTCPayNetwork.cs b/BTCPayServer.Common/BTCPayNetwork.cs index d43b599f3..c5a275fdf 100644 --- a/BTCPayServer.Common/BTCPayNetwork.cs +++ b/BTCPayServer.Common/BTCPayNetwork.cs @@ -18,25 +18,29 @@ namespace BTCPayServer { static BTCPayDefaultSettings() { - _Settings = new Dictionary(); - foreach (var chainType in new[] { NetworkType.Mainnet, NetworkType.Testnet, NetworkType.Regtest }) + _Settings = new Dictionary(); + } + + static readonly Dictionary _Settings; + + 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 == NetworkType.Mainnet ? 23000 : - chainType == NetworkType.Regtest ? 23002 : - chainType == NetworkType.Testnet ? 23001 : throw new NotSupportedException(chainType.ToString())); + settings.DefaultPort = (chainType == ChainName.Mainnet ? 23000 : + chainType == ChainName.Regtest ? 23002 + : 23001); } - } - - static readonly Dictionary _Settings; - - public static BTCPayDefaultSettings GetDefaultSettings(NetworkType chainType) - { return _Settings[chainType]; } diff --git a/BTCPayServer.Common/BTCPayNetworkProvider.Bitcoin.cs b/BTCPayServer.Common/BTCPayNetworkProvider.Bitcoin.cs index 26bce2f00..4e16b106d 100644 --- a/BTCPayServer.Common/BTCPayNetworkProvider.Bitcoin.cs +++ b/BTCPayServer.Common/BTCPayNetworkProvider.Bitcoin.cs @@ -13,17 +13,19 @@ namespace BTCPayServer { CryptoCode = nbxplorerNetwork.CryptoCode, DisplayName = "Bitcoin", - BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://blockstream.info/tx/{0}" : "https://blockstream.info/testnet/tx/{0}", + BlockExplorerLink = NetworkType == ChainName.Mainnet ? "https://blockstream.info/tx/{0}" : + NetworkType == Bitcoin.Instance.Signet.ChainName ? "https://explorer.bc-2.jp/" + : "https://blockstream.info/testnet/tx/{0}", NBXplorerNetwork = nbxplorerNetwork, UriScheme = "bitcoin", CryptoImagePath = "imlegacy/bitcoin.svg", LightningImagePath = "imlegacy/bitcoin-lightning.svg", DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType), - CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("0'") : new KeyPath("1'"), + CoinType = NetworkType == ChainName.Mainnet ? new KeyPath("0'") : new KeyPath("1'"), SupportRBF = true, SupportPayJoin = true, //https://github.com/spesmilo/electrum/blob/11733d6bc271646a00b69ff07657119598874da4/electrum/constants.py - ElectrumMapping = NetworkType == NetworkType.Mainnet + ElectrumMapping = NetworkType == ChainName.Mainnet ? new Dictionary() { {0x0488b21eU, DerivationType.Legacy }, // xpub diff --git a/BTCPayServer.Common/BTCPayNetworkProvider.cs b/BTCPayServer.Common/BTCPayNetworkProvider.cs index 8e975798f..e2990f52b 100644 --- a/BTCPayServer.Common/BTCPayNetworkProvider.cs +++ b/BTCPayServer.Common/BTCPayNetworkProvider.cs @@ -35,8 +35,8 @@ namespace BTCPayServer } - public NetworkType NetworkType { get; private set; } - public BTCPayNetworkProvider(NetworkType networkType) + public ChainName NetworkType { get; private set; } + public BTCPayNetworkProvider(ChainName networkType) { _NBXplorerNetworkProvider = new NBXplorerNetworkProvider(networkType); NetworkType = networkType; diff --git a/BTCPayServer.Common/BTCPayServer.Common.csproj b/BTCPayServer.Common/BTCPayServer.Common.csproj index c9009bcf3..40780e0bc 100644 --- a/BTCPayServer.Common/BTCPayServer.Common.csproj +++ b/BTCPayServer.Common/BTCPayServer.Common.csproj @@ -1,10 +1,10 @@ - + - + diff --git a/BTCPayServer.Rating/BTCPayServer.Rating.csproj b/BTCPayServer.Rating/BTCPayServer.Rating.csproj index 0bc6e86b1..d16f6625a 100644 --- a/BTCPayServer.Rating/BTCPayServer.Rating.csproj +++ b/BTCPayServer.Rating/BTCPayServer.Rating.csproj @@ -6,7 +6,7 @@ - + diff --git a/BTCPayServer.Tests/AltcoinTests/AltcoinTests.cs b/BTCPayServer.Tests/AltcoinTests/AltcoinTests.cs index 4a6270e8f..9e2ffac22 100644 --- a/BTCPayServer.Tests/AltcoinTests/AltcoinTests.cs +++ b/BTCPayServer.Tests/AltcoinTests/AltcoinTests.cs @@ -872,7 +872,7 @@ normal: { #pragma warning disable CS0618 var dummy = new Key().PubKey.GetAddress(ScriptPubKeyType.Legacy, Network.RegTest).ToString(); - var networkProvider = new BTCPayNetworkProvider(NetworkType.Regtest); + var networkProvider = new BTCPayNetworkProvider(ChainName.Regtest); var paymentMethodHandlerDictionary = new PaymentMethodHandlerDictionary(new IPaymentMethodHandler[] { new BitcoinLikePaymentHandler(null, networkProvider, null, null, null), @@ -952,9 +952,9 @@ normal: [Trait("Altcoins", "Altcoins")] public void CanParseDerivationScheme() { - var testnetNetworkProvider = new BTCPayNetworkProvider(NetworkType.Testnet); - var regtestNetworkProvider = new BTCPayNetworkProvider(NetworkType.Regtest); - var mainnetNetworkProvider = new BTCPayNetworkProvider(NetworkType.Mainnet); + var testnetNetworkProvider = new BTCPayNetworkProvider(ChainName.Testnet); + var regtestNetworkProvider = new BTCPayNetworkProvider(ChainName.Regtest); + var mainnetNetworkProvider = new BTCPayNetworkProvider(ChainName.Mainnet); var testnetParser = new DerivationSchemeParser(testnetNetworkProvider.GetNetwork("BTC")); var mainnetParser = new DerivationSchemeParser(mainnetNetworkProvider.GetNetwork("BTC")); NBXplorer.DerivationStrategy.DerivationStrategyBase result; diff --git a/BTCPayServer.Tests/BTCPayServerTester.cs b/BTCPayServer.Tests/BTCPayServerTester.cs index 2ceeca809..580777678 100644 --- a/BTCPayServer.Tests/BTCPayServerTester.cs +++ b/BTCPayServer.Tests/BTCPayServerTester.cs @@ -91,7 +91,7 @@ namespace BTCPayServer.Tests { if (!Directory.Exists(_Directory)) Directory.CreateDirectory(_Directory); - string chain = NBXplorerDefaultSettings.GetFolderName(NetworkType.Regtest); + string chain = NBXplorerDefaultSettings.GetFolderName(ChainName.Regtest); string chainDirectory = Path.Combine(_Directory, chain); if (!Directory.Exists(chainDirectory)) Directory.CreateDirectory(chainDirectory); diff --git a/BTCPayServer.Tests/GreenfieldAPITests.cs b/BTCPayServer.Tests/GreenfieldAPITests.cs index dbd135baf..bf1bd56d8 100644 --- a/BTCPayServer.Tests/GreenfieldAPITests.cs +++ b/BTCPayServer.Tests/GreenfieldAPITests.cs @@ -1080,7 +1080,7 @@ namespace BTCPayServer.Tests } } - [Fact(Timeout = 60 * 2 * 1000)] + [Fact(Timeout = 60 * 20 * 1000)] [Trait("Integration", "Integration")] [Trait("Lightning", "Lightning")] public async Task CanUseLightningAPI() @@ -1098,7 +1098,7 @@ namespace BTCPayServer.Tests merchant.GrantAccess(true); merchant.RegisterLightningNode("BTC", LightningConnectionType.LndREST); var merchantClient = await merchant.CreateClient($"{Policies.CanUseLightningNodeInStore}:{merchant.StoreId}"); - var merchantInvoice = await merchantClient.CreateLightningInvoice(merchant.StoreId, "BTC", new CreateLightningInvoiceRequest(new LightMoney(1_000), "hey", TimeSpan.FromSeconds(60))); + var merchantInvoice = await merchantClient.CreateLightningInvoice(merchant.StoreId, "BTC", new CreateLightningInvoiceRequest(LightMoney.Satoshis(1_000), "hey", TimeSpan.FromSeconds(60))); tester.PayTester.GetService().DevelopmentOverride = false; // The default client is using charge, so we should not be able to query channels var client = await user.CreateClient(Policies.CanUseInternalLightningNode); diff --git a/BTCPayServer.Tests/ServerTester.cs b/BTCPayServer.Tests/ServerTester.cs index 3e72f9ba5..69e8d497f 100644 --- a/BTCPayServer.Tests/ServerTester.cs +++ b/BTCPayServer.Tests/ServerTester.cs @@ -33,7 +33,7 @@ namespace BTCPayServer.Tests if (!Directory.Exists(_Directory)) Directory.CreateDirectory(_Directory); - NetworkProvider = new BTCPayNetworkProvider(NetworkType.Regtest); + NetworkProvider = new BTCPayNetworkProvider(ChainName.Regtest); ExplorerNode = new RPCClient(RPCCredentialString.Parse(GetEnvironment("TESTS_BTCRPCCONNECTION", "server=http://127.0.0.1:43782;ceiwHEbqWI83:DwubwWsoo3")), NetworkProvider.GetNetwork("BTC").NBitcoinNetwork); ExplorerNode.ScanRPCCapabilities(); diff --git a/BTCPayServer.Tests/UnitTest1.cs b/BTCPayServer.Tests/UnitTest1.cs index 66d9cfb60..c3fb9f0b9 100644 --- a/BTCPayServer.Tests/UnitTest1.cs +++ b/BTCPayServer.Tests/UnitTest1.cs @@ -407,7 +407,7 @@ namespace BTCPayServer.Tests [Trait("Fast", "Fast")] public void CanCalculateCryptoDue() { - var networkProvider = new BTCPayNetworkProvider(NetworkType.Regtest); + var networkProvider = new BTCPayNetworkProvider(ChainName.Regtest); var paymentMethodHandlerDictionary = new PaymentMethodHandlerDictionary(new IPaymentMethodHandler[] { new BitcoinLikePaymentHandler(null, networkProvider, null, null, null), @@ -695,7 +695,7 @@ namespace BTCPayServer.Tests [Trait("Fast", "Fast")] public void CanAcceptInvoiceWithTolerance() { - var networkProvider = new BTCPayNetworkProvider(NetworkType.Regtest); + var networkProvider = new BTCPayNetworkProvider(ChainName.Regtest); var paymentMethodHandlerDictionary = new PaymentMethodHandlerDictionary(new IPaymentMethodHandler[] { new BitcoinLikePaymentHandler(null, networkProvider, null, null, null), @@ -873,7 +873,7 @@ namespace BTCPayServer.Tests [Trait("Fast", "Fast")] public async Task CanEnumerateTorServices() { - var tor = new TorServices(new BTCPayNetworkProvider(NetworkType.Regtest), + var tor = new TorServices(new BTCPayNetworkProvider(ChainName.Regtest), new BTCPayServerOptions() { TorrcFile = TestUtils.GetTestDataFullPath("Tor/torrc") }); await tor.Refresh(); @@ -1170,7 +1170,7 @@ namespace BTCPayServer.Tests [Trait("Integration", "Integration")] public void CanSolveTheDogesRatesOnKraken() { - var provider = new BTCPayNetworkProvider(NetworkType.Mainnet); + var provider = new BTCPayNetworkProvider(ChainName.Mainnet); var factory = CreateBTCPayRateFactory(); var fetcher = new RateFetcher(factory); @@ -2048,7 +2048,7 @@ namespace BTCPayServer.Tests [Trait("Fast", "Fast")] public void HasCurrencyDataForNetworks() { - var btcPayNetworkProvider = new BTCPayNetworkProvider(NetworkType.Regtest); + var btcPayNetworkProvider = new BTCPayNetworkProvider(ChainName.Regtest); foreach (var network in btcPayNetworkProvider.GetAll()) { var cd = CurrencyNameTable.Instance.GetCurrencyData(network.CryptoCode, false); @@ -2986,7 +2986,7 @@ namespace BTCPayServer.Tests [Trait("Integration", "Integration")] public void CanGetRateCryptoCurrenciesByDefault() { - var provider = new BTCPayNetworkProvider(NetworkType.Mainnet); + var provider = new BTCPayNetworkProvider(ChainName.Mainnet); var factory = CreateBTCPayRateFactory(); var fetcher = new RateFetcher(factory); var pairs = @@ -3058,35 +3058,35 @@ namespace BTCPayServer.Tests var unusedUri = new Uri("https://toto.com"); Assert.True(ExternalConnectionString.TryParse("server=/test", out var connStr, out var error)); var expanded = await connStr.Expand(new Uri("https://toto.com"), ExternalServiceTypes.Charge, - NetworkType.Mainnet); + ChainName.Mainnet); Assert.Equal(new Uri("https://toto.com/test"), expanded.Server); expanded = await connStr.Expand(new Uri("http://toto.onion"), ExternalServiceTypes.Charge, - NetworkType.Mainnet); + ChainName.Mainnet); Assert.Equal(new Uri("http://toto.onion/test"), expanded.Server); await Assert.ThrowsAsync(() => - connStr.Expand(new Uri("http://toto.com"), ExternalServiceTypes.Charge, NetworkType.Mainnet)); - await connStr.Expand(new Uri("http://toto.com"), ExternalServiceTypes.Charge, NetworkType.Testnet); + connStr.Expand(new Uri("http://toto.com"), ExternalServiceTypes.Charge, ChainName.Mainnet)); + await connStr.Expand(new Uri("http://toto.com"), ExternalServiceTypes.Charge, ChainName.Testnet); // Make sure absolute paths are not expanded Assert.True(ExternalConnectionString.TryParse("server=https://tow/test", out connStr, out error)); expanded = await connStr.Expand(new Uri("https://toto.com"), ExternalServiceTypes.Charge, - NetworkType.Mainnet); + ChainName.Mainnet); Assert.Equal(new Uri("https://tow/test"), expanded.Server); // Error if directory not exists Assert.True(ExternalConnectionString.TryParse($"server={unusedUri};macaroondirectorypath=pouet", out connStr, out error)); await Assert.ThrowsAsync(() => - connStr.Expand(unusedUri, ExternalServiceTypes.LNDGRPC, NetworkType.Mainnet)); + connStr.Expand(unusedUri, ExternalServiceTypes.LNDGRPC, ChainName.Mainnet)); await Assert.ThrowsAsync(() => - connStr.Expand(unusedUri, ExternalServiceTypes.LNDRest, NetworkType.Mainnet)); - await connStr.Expand(unusedUri, ExternalServiceTypes.Charge, NetworkType.Mainnet); + connStr.Expand(unusedUri, ExternalServiceTypes.LNDRest, ChainName.Mainnet)); + await connStr.Expand(unusedUri, ExternalServiceTypes.Charge, ChainName.Mainnet); var macaroonDirectory = CreateDirectory(); Assert.True(ExternalConnectionString.TryParse( $"server={unusedUri};macaroondirectorypath={macaroonDirectory}", out connStr, out error)); - await connStr.Expand(unusedUri, ExternalServiceTypes.LNDGRPC, NetworkType.Mainnet); - expanded = await connStr.Expand(unusedUri, ExternalServiceTypes.LNDRest, NetworkType.Mainnet); + await connStr.Expand(unusedUri, ExternalServiceTypes.LNDGRPC, ChainName.Mainnet); + expanded = await connStr.Expand(unusedUri, ExternalServiceTypes.LNDRest, ChainName.Mainnet); Assert.NotNull(expanded.Macaroons); Assert.Null(expanded.MacaroonFilePath); Assert.Null(expanded.Macaroons.AdminMacaroon); @@ -3096,7 +3096,7 @@ namespace BTCPayServer.Tests File.WriteAllBytes($"{macaroonDirectory}/admin.macaroon", new byte[] { 0xaa }); File.WriteAllBytes($"{macaroonDirectory}/invoice.macaroon", new byte[] { 0xab }); File.WriteAllBytes($"{macaroonDirectory}/readonly.macaroon", new byte[] { 0xac }); - expanded = await connStr.Expand(unusedUri, ExternalServiceTypes.LNDRest, NetworkType.Mainnet); + expanded = await connStr.Expand(unusedUri, ExternalServiceTypes.LNDRest, ChainName.Mainnet); Assert.NotNull(expanded.Macaroons.AdminMacaroon); Assert.NotNull(expanded.Macaroons.InvoiceMacaroon); Assert.Equal("ab", expanded.Macaroons.InvoiceMacaroon.Hex); @@ -3106,7 +3106,7 @@ namespace BTCPayServer.Tests Assert.True(ExternalConnectionString.TryParse( $"server={unusedUri};cookiefilepath={macaroonDirectory}/charge.cookie", out connStr, out error)); File.WriteAllText($"{macaroonDirectory}/charge.cookie", "apitoken"); - expanded = await connStr.Expand(unusedUri, ExternalServiceTypes.Charge, NetworkType.Mainnet); + expanded = await connStr.Expand(unusedUri, ExternalServiceTypes.Charge, ChainName.Mainnet); Assert.Equal("apitoken", expanded.APIToken); } @@ -3191,7 +3191,7 @@ namespace BTCPayServer.Tests [Trait("Fast", "Fast")] public void ParseDerivationSchemeSettings() { - var mainnet = new BTCPayNetworkProvider(NetworkType.Mainnet).GetNetwork("BTC"); + var mainnet = new BTCPayNetworkProvider(ChainName.Mainnet).GetNetwork("BTC"); var root = new Mnemonic( "usage fever hen zero slide mammal silent heavy donate budget pulse say brain thank sausage brand craft about save attract muffin advance illegal cabbage") .DeriveExtKey(); @@ -3209,7 +3209,7 @@ namespace BTCPayServer.Tests Assert.Equal(root.Derive(new KeyPath("m/49'/0'/0'")).Neuter().PubKey.WitHash.ScriptPubKey.Hash.ScriptPubKey, settings.AccountDerivation.GetDerivation().ScriptPubKey); - var testnet = new BTCPayNetworkProvider(NetworkType.Testnet).GetNetwork("BTC"); + var testnet = new BTCPayNetworkProvider(ChainName.Testnet).GetNetwork("BTC"); // Should be legacy Assert.True(DerivationSchemeSettings.TryParseFromWalletFile( diff --git a/BTCPayServer/BTCPayServer.csproj b/BTCPayServer/BTCPayServer.csproj index 561b8d327..ce868a7ab 100644 --- a/BTCPayServer/BTCPayServer.csproj +++ b/BTCPayServer/BTCPayServer.csproj @@ -1,4 +1,4 @@ - + @@ -45,7 +45,7 @@ - + diff --git a/BTCPayServer/Configuration/BTCPayServerOptions.cs b/BTCPayServer/Configuration/BTCPayServerOptions.cs index 51462482f..a8330e394 100644 --- a/BTCPayServer/Configuration/BTCPayServerOptions.cs +++ b/BTCPayServer/Configuration/BTCPayServerOptions.cs @@ -13,7 +13,7 @@ namespace BTCPayServer.Configuration { public class BTCPayServerOptions { - public NetworkType NetworkType + public ChainName NetworkType { get; set; } @@ -61,7 +61,7 @@ namespace BTCPayServer.Configuration Logs.Configuration.LogInformation("Network: " + NetworkType.ToString()); - if (conf.GetOrDefault("launchsettings", false) && NetworkType != NetworkType.Regtest) + if (conf.GetOrDefault("launchsettings", false) && NetworkType != ChainName.Regtest) throw new ConfigException($"You need to run BTCPayServer with the run.sh or run.ps1 script"); diff --git a/BTCPayServer/Configuration/DefaultConfiguration.cs b/BTCPayServer/Configuration/DefaultConfiguration.cs index 4db973f4c..f9fd2464d 100644 --- a/BTCPayServer/Configuration/DefaultConfiguration.cs +++ b/BTCPayServer/Configuration/DefaultConfiguration.cs @@ -12,7 +12,7 @@ namespace BTCPayServer.Configuration { protected override CommandLineApplication CreateCommandLineApplicationCore() { - var provider = new BTCPayNetworkProvider(NetworkType.Mainnet); + var provider = new BTCPayNetworkProvider(ChainName.Mainnet); var chains = string.Join(",", provider.GetAll().Select(n => n.CryptoCode.ToLowerInvariant()).ToArray()); CommandLineApplication app = new CommandLineApplication(true) { @@ -23,6 +23,7 @@ namespace BTCPayServer.Configuration app.Option("-n | --network", $"Set the network among (mainnet,testnet,regtest) (default: mainnet)", CommandOptionType.SingleValue); app.Option("--testnet | -testnet", $"Use testnet (deprecated, use --network instead)", CommandOptionType.BoolValue); app.Option("--regtest | -regtest", $"Use regtest (deprecated, use --network instead)", CommandOptionType.BoolValue); + app.Option("--signet | -signet", $"Use signet (deprecated, use --network instead)", CommandOptionType.BoolValue); app.Option("--allow-admin-registration", $"For debug only, will show a checkbox when a new user register to add himself as admin. (default: false)", CommandOptionType.BoolValue); app.Option("--chains | -c", $"Chains to support as a comma separated (default: btc; available: {chains})", CommandOptionType.SingleValue); app.Option("--postgres", $"Connection string to a PostgreSQL database", CommandOptionType.SingleValue); @@ -89,7 +90,7 @@ namespace BTCPayServer.Configuration return Path.Combine(chainDir, fileName); } - public static NetworkType GetNetworkType(IConfiguration conf) + public static ChainName GetNetworkType(IConfiguration conf) { var network = conf.GetOrDefault("network", null); if (network != null) @@ -99,10 +100,12 @@ namespace BTCPayServer.Configuration { throw new ConfigException($"Invalid network parameter '{network}'"); } - return n.NetworkType; + return n.ChainName; } - var net = conf.GetOrDefault("regtest", false) ? NetworkType.Regtest : - conf.GetOrDefault("testnet", false) ? NetworkType.Testnet : NetworkType.Mainnet; + var net = conf.GetOrDefault("regtest", false) ? ChainName.Regtest : + conf.GetOrDefault("testnet", false) ? ChainName.Testnet : + conf.GetOrDefault("signet", false) ? Bitcoin.Instance.Signet.ChainName : + ChainName.Mainnet; return net; } diff --git a/BTCPayServer/Configuration/ExternalConnectionString.cs b/BTCPayServer/Configuration/ExternalConnectionString.cs index 7c67e3362..61748a96e 100644 --- a/BTCPayServer/Configuration/ExternalConnectionString.cs +++ b/BTCPayServer/Configuration/ExternalConnectionString.cs @@ -30,12 +30,12 @@ namespace BTCPayServer.Configuration /// Return a connectionString which does not depends on external resources or information like relative path or file path /// /// - public async Task Expand(Uri absoluteUrlBase, ExternalServiceTypes serviceType, NetworkType network) + public async Task 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 != NetworkType.Mainnet || + var isSecure = network != ChainName.Mainnet || serviceUri.Scheme == "https" || serviceUri.DnsSafeHost.EndsWith(".onion", StringComparison.OrdinalIgnoreCase) || Extensions.IsLocalNetwork(serviceUri.DnsSafeHost); diff --git a/BTCPayServer/Controllers/NotificationsController.cs b/BTCPayServer/Controllers/NotificationsController.cs index 900446031..e8a1f0b59 100644 --- a/BTCPayServer/Controllers/NotificationsController.cs +++ b/BTCPayServer/Controllers/NotificationsController.cs @@ -119,7 +119,7 @@ namespace BTCPayServer.Controllers [HttpGet] public async Task Generate(string version) { - if (_env.NetworkType != NBitcoin.NetworkType.Regtest) + if (_env.NetworkType != NBitcoin.ChainName.Regtest) return NotFound(); await _notificationSender.SendNotification(new AdminScope(), new NewVersionNotification(version)); return RedirectToAction(nameof(Index)); diff --git a/BTCPayServer/HostedServices/NBXplorerWaiter.cs b/BTCPayServer/HostedServices/NBXplorerWaiter.cs index cb93b187b..58b719b4f 100644 --- a/BTCPayServer/HostedServices/NBXplorerWaiter.cs +++ b/BTCPayServer/HostedServices/NBXplorerWaiter.cs @@ -189,8 +189,8 @@ namespace BTCPayServer.HostedServices if (status != null && error == null) { - if (status.NetworkType != _Network.NBitcoinNetwork.NetworkType) - error = $"{_Network.CryptoCode}: NBXplorer is on a different ChainType (actual: {status.NetworkType}, expected: {_Network.NBitcoinNetwork.NetworkType})"; + if (status.NetworkType != _Network.NBitcoinNetwork.ChainName) + error = $"{_Network.CryptoCode}: NBXplorer is on a different ChainType (actual: {status.NetworkType}, expected: {_Network.NBitcoinNetwork.ChainName})"; } if (error != null) diff --git a/BTCPayServer/Hosting/BTCPayServerServices.cs b/BTCPayServer/Hosting/BTCPayServerServices.cs index 273d5c90b..9b60a36ba 100644 --- a/BTCPayServer/Hosting/BTCPayServerServices.cs +++ b/BTCPayServer/Hosting/BTCPayServerServices.cs @@ -363,7 +363,7 @@ namespace BTCPayServer.Hosting services.TryAddSingleton(); services.TryAddSingleton(o => { - if (o.GetRequiredService().NetworkType == NetworkType.Mainnet) + if (o.GetRequiredService().NetworkType == ChainName.Mainnet) return new Bitpay(new Key(), new Uri("https://bitpay.com/")); else return new Bitpay(new Key(), new Uri("https://test.bitpay.com/")); diff --git a/BTCPayServer/Services/BTCPayServerEnvironment.cs b/BTCPayServer/Services/BTCPayServerEnvironment.cs index ba8e9624a..8cf27d74d 100644 --- a/BTCPayServer/Services/BTCPayServerEnvironment.cs +++ b/BTCPayServer/Services/BTCPayServerEnvironment.cs @@ -43,7 +43,7 @@ namespace BTCPayServer.Services public string OnionUrl => this.torServices.Services.Where(s => s.ServiceType == TorServiceType.BTCPayServer) .Select(s => $"http://{s.OnionHost}").FirstOrDefault(); - public NetworkType NetworkType { get; set; } + public ChainName NetworkType { get; set; } public string Version { get; set; @@ -58,7 +58,7 @@ namespace BTCPayServer.Services { get { - return DevelopmentOverride?? NetworkType == NetworkType.Regtest && Environment.IsDevelopment(); + return DevelopmentOverride?? NetworkType == ChainName.Regtest && Environment.IsDevelopment(); } } @@ -66,7 +66,7 @@ namespace BTCPayServer.Services { get { - return NetworkType != NetworkType.Mainnet || + return NetworkType != ChainName.Mainnet || httpContext.HttpContext.Request.Scheme == "https" || httpContext.HttpContext.Request.Host.Host.EndsWith(".onion", StringComparison.OrdinalIgnoreCase) || Extensions.IsLocalNetwork(httpContext.HttpContext.Request.Host.Host); diff --git a/BTCPayServer/Views/Shared/_Layout.cshtml b/BTCPayServer/Views/Shared/_Layout.cshtml index 3443820e6..30b54e37b 100644 --- a/BTCPayServer/Views/Shared/_Layout.cshtml +++ b/BTCPayServer/Views/Shared/_Layout.cshtml @@ -30,7 +30,7 @@ - @if (env.NetworkType != NBitcoin.NetworkType.Mainnet) + @if (env.NetworkType != NBitcoin.ChainName.Mainnet) { @env.NetworkType.ToString() }