From 71671b9e164e5a181781774e22bdee68d1ed4fc5 Mon Sep 17 00:00:00 2001 From: Kukks Date: Wed, 18 Sep 2019 18:26:24 +0300 Subject: [PATCH] Add sats as a native currency This will allow you to create an invoice where its primary currency is denominated in sats --- .../Altcoins/BTCPayNetworkProvider.Bitcoin.cs | 5 +++++ .../Lightning/LightningLikePaymentHandler.cs | 1 + BTCPayServer/Services/Rates/CurrencyNameTable.cs | 15 +++++++++++++++ 3 files changed, 21 insertions(+) diff --git a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Bitcoin.cs b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Bitcoin.cs index f03652ceb..10abe336a 100644 --- a/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Bitcoin.cs +++ b/BTCPayServer.Common/Altcoins/BTCPayNetworkProvider.Bitcoin.cs @@ -21,6 +21,11 @@ namespace BTCPayServer UriScheme = "bitcoin", CryptoImagePath = "imlegacy/bitcoin.svg", LightningImagePath = "imlegacy/bitcoin-lightning.svg", + DefaultRateRules = new[] + { + "SATS_X = SATS_BTC * BTC_X", + "BTC_SATS = sats(BTC_SATS);", + }, DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType), CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("0'") : new KeyPath("1'"), SupportRBF = true, diff --git a/BTCPayServer/Payments/Lightning/LightningLikePaymentHandler.cs b/BTCPayServer/Payments/Lightning/LightningLikePaymentHandler.cs index ca085c4f6..6668e2d17 100644 --- a/BTCPayServer/Payments/Lightning/LightningLikePaymentHandler.cs +++ b/BTCPayServer/Payments/Lightning/LightningLikePaymentHandler.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Globalization; using System.Linq; using System.Threading; using System.Threading.Tasks; diff --git a/BTCPayServer/Services/Rates/CurrencyNameTable.cs b/BTCPayServer/Services/Rates/CurrencyNameTable.cs index ee3a72a09..54098c094 100644 --- a/BTCPayServer/Services/Rates/CurrencyNameTable.cs +++ b/BTCPayServer/Services/Rates/CurrencyNameTable.cs @@ -98,6 +98,12 @@ namespace BTCPayServer.Services.Rates { AddCurrency(_CurrencyProviders, network.CryptoCode, 8, network.CryptoCode); } + + _CurrencyProviders.TryAdd("SATS", + new NumberFormatInfo() + { + CurrencySymbol = "sats", CurrencyDecimalDigits = 0, CurrencyPositivePattern = 3 + }); } return _CurrencyProviders.TryGet(currency.ToUpperInvariant()); } @@ -189,6 +195,15 @@ namespace BTCPayServer.Services.Rates } } + dico.TryAdd("SATS", new CurrencyData() + { + Code = "SATS", + Crypto = true, + Divisibility = 0, + Name = "Satoshis", + Symbol = "Sats", + }); + return dico.Values.ToArray(); }