From a3ae694048a44833c8aabee3078c075bbcb9085a Mon Sep 17 00:00:00 2001 From: Benjamin Nitschke Date: Fri, 27 Jul 2018 21:06:19 +0200 Subject: [PATCH 1/3] Added Dash support for BTCPayServer --- BTCPayServer.Tests/RateRulesTest.cs | 2 ++ BTCPayServer/BTCPayNetworkProvider.Dash.cs | 35 +++++++++++++++++++++ BTCPayServer/BTCPayNetworkProvider.cs | 1 + BTCPayServer/wwwroot/imlegacy/dash.png | Bin 0 -> 7256 bytes 4 files changed, 38 insertions(+) create mode 100644 BTCPayServer/BTCPayNetworkProvider.Dash.cs create mode 100644 BTCPayServer/wwwroot/imlegacy/dash.png diff --git a/BTCPayServer.Tests/RateRulesTest.cs b/BTCPayServer.Tests/RateRulesTest.cs index f5265a1c0..95aa435f0 100644 --- a/BTCPayServer.Tests/RateRulesTest.cs +++ b/BTCPayServer.Tests/RateRulesTest.cs @@ -18,6 +18,7 @@ namespace BTCPayServer.Tests builder.AppendLine("// Some cool comments"); builder.AppendLine("DOGE_X = DOGE_BTC * BTC_X * 1.1"); builder.AppendLine("DOGE_BTC = Bittrex(DOGE_BTC)"); + builder.AppendLine("DASH_BTC = Bittrex(DASH_BTC)"); builder.AppendLine("// Some other cool comments"); builder.AppendLine("BTC_usd = GDax(BTC_USD)"); builder.AppendLine("BTC_X = Coinbase(BTC_X);"); @@ -29,6 +30,7 @@ namespace BTCPayServer.Tests "// Some cool comments\n" + "DOGE_X = DOGE_BTC * BTC_X * 1.1;\n" + "DOGE_BTC = bittrex(DOGE_BTC);\n" + + "DASH_BTC = bittrex(DASH_BTC);\n" + "// Some other cool comments\n" + "BTC_USD = gdax(BTC_USD);\n" + "BTC_X = coinbase(BTC_X);\n" + diff --git a/BTCPayServer/BTCPayNetworkProvider.Dash.cs b/BTCPayServer/BTCPayNetworkProvider.Dash.cs new file mode 100644 index 000000000..62e95b4fb --- /dev/null +++ b/BTCPayServer/BTCPayNetworkProvider.Dash.cs @@ -0,0 +1,35 @@ +using NBitcoin; + +namespace BTCPayServer +{ + public partial class BTCPayNetworkProvider + { + public void InitDash() + { + //not needed: NBitcoin.Altcoins.Dash.Instance.EnsureRegistered(); + var nbxplorerNetwork = NBXplorerNetworkProvider.GetFromCryptoCode("DASH"); + Add(new BTCPayNetwork() + { + CryptoCode = nbxplorerNetwork.CryptoCode, + DisplayName = "Dash", + BlockExplorerLink = NetworkType == NetworkType.Mainnet + ? "https://insight.dash.org/insight/tx/{0}" + : "https://testnet-insight.dashevo.org/insight/tx/{0}", + NBitcoinNetwork = nbxplorerNetwork.NBitcoinNetwork, + NBXplorerNetwork = nbxplorerNetwork, + UriScheme = "dash", + DefaultRateRules = new[] + { + "DASH_X = DASH_BTC * BTC_X", + "DASH_BTC = bittrex(DASH_BTC)" + }, + 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'") + : new KeyPath("1'"), + MinFee = Money.Satoshis(1m) + }); + } + } +} diff --git a/BTCPayServer/BTCPayNetworkProvider.cs b/BTCPayServer/BTCPayNetworkProvider.cs index 8c7e8b1e2..b31f2f7c2 100644 --- a/BTCPayServer/BTCPayNetworkProvider.cs +++ b/BTCPayServer/BTCPayNetworkProvider.cs @@ -50,6 +50,7 @@ namespace BTCPayServer InitDogecoin(); InitBitcoinGold(); InitMonacoin(); + InitDash(); InitPolis(); InitFeathercoin(); InitGroestlcoin(); diff --git a/BTCPayServer/wwwroot/imlegacy/dash.png b/BTCPayServer/wwwroot/imlegacy/dash.png new file mode 100644 index 0000000000000000000000000000000000000000..38efd5b6276b7be6962c32ada66d96a191ad0dab GIT binary patch literal 7256 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 md8_ls>WF>}Zp-B>jQu~yw$EfN^}$^L0000 Date: Fri, 27 Jul 2018 21:07:43 +0200 Subject: [PATCH 2/3] Added Dash to readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index b0bbb22f2..cf0823d5e 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ In addition to Bitcoin, we support the following crypto currencies: * Feathercoin * Groestlcoin * Litecoin +* Dash * Monacoin * Polis * UFO From 16f5def24546aa4ec47a0627188030b9c5ce10d4 Mon Sep 17 00:00:00 2001 From: Benjamin Nitschke Date: Sat, 28 Jul 2018 16:11:02 +0200 Subject: [PATCH 3/3] Reverted Dash_btc rule parsing check on request --- BTCPayServer.Tests/RateRulesTest.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/BTCPayServer.Tests/RateRulesTest.cs b/BTCPayServer.Tests/RateRulesTest.cs index 95aa435f0..f5265a1c0 100644 --- a/BTCPayServer.Tests/RateRulesTest.cs +++ b/BTCPayServer.Tests/RateRulesTest.cs @@ -18,7 +18,6 @@ namespace BTCPayServer.Tests builder.AppendLine("// Some cool comments"); builder.AppendLine("DOGE_X = DOGE_BTC * BTC_X * 1.1"); builder.AppendLine("DOGE_BTC = Bittrex(DOGE_BTC)"); - builder.AppendLine("DASH_BTC = Bittrex(DASH_BTC)"); builder.AppendLine("// Some other cool comments"); builder.AppendLine("BTC_usd = GDax(BTC_USD)"); builder.AppendLine("BTC_X = Coinbase(BTC_X);"); @@ -30,7 +29,6 @@ namespace BTCPayServer.Tests "// Some cool comments\n" + "DOGE_X = DOGE_BTC * BTC_X * 1.1;\n" + "DOGE_BTC = bittrex(DOGE_BTC);\n" + - "DASH_BTC = bittrex(DASH_BTC);\n" + "// Some other cool comments\n" + "BTC_USD = gdax(BTC_USD);\n" + "BTC_X = coinbase(BTC_X);\n" +