From 4db4b283691722c087293b0c1d0349dac2ca2e79 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Mon, 11 Jan 2021 22:47:32 +0900 Subject: [PATCH] Fix crash if DerivationSchemeSettings.Parse parse a 2-of scheme --- BTCPayServer/DerivationSchemeSettings.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/BTCPayServer/DerivationSchemeSettings.cs b/BTCPayServer/DerivationSchemeSettings.cs index d915ee818..3124ef79f 100644 --- a/BTCPayServer/DerivationSchemeSettings.cs +++ b/BTCPayServer/DerivationSchemeSettings.cs @@ -71,9 +71,11 @@ namespace BTCPayServer { derivationSchemeSettings.AccountOriginal = xpub.Trim(); derivationSchemeSettings.AccountDerivation = electrum ? derivationSchemeParser.ParseElectrum(derivationSchemeSettings.AccountOriginal) : derivationSchemeParser.Parse(derivationSchemeSettings.AccountOriginal); - derivationSchemeSettings.AccountKeySettings = new AccountKeySettings[1]; - derivationSchemeSettings.AccountKeySettings[0] = new AccountKeySettings(); - derivationSchemeSettings.AccountKeySettings[0].AccountKey = derivationSchemeSettings.AccountDerivation.GetExtPubKeys().Single().GetWif(derivationSchemeParser.Network); + derivationSchemeSettings.AccountKeySettings = derivationSchemeSettings.AccountDerivation.GetExtPubKeys() + .Select(key => new AccountKeySettings() + { + AccountKey = key.GetWif(derivationSchemeParser.Network) + }).ToArray(); if (derivationSchemeSettings.AccountDerivation is DirectDerivationStrategy direct && !direct.Segwit) derivationSchemeSettings.AccountOriginal = null; // Saving this would be confusing for user, as xpub of electrum is legacy derivation, but for btcpay, it is segwit derivation return true;