Added verification for unspent coins while transaction creation.

M committed Jul 23, 2021 at 19:10 UTC b0724348a1e556d1d2eebc04e3ebb8524eec2fd9
1 file changed +5 -4
lib/bitcoin/electrum_wallet.dart
+5 -4
@@ -158,6 +158,9 @@ abstract class ElectrumWalletBase extends WalletBase<ElectrumBalance,
158 const minAmount = 546;
159 final transactionCredentials = credentials as BitcoinTransactionCredentials;
160 final inputs = <BitcoinUnspent>[];
161 + final credentialsAmount = transactionCredentials.amount != null
162 + ? stringDoubleToBitcoinAmount(transactionCredentials.amount)
163 + : 0;
164 var allInputsAmount = 0;
165
166 if (unspentCoins.isEmpty) {
@@ -171,7 +174,8 @@ abstract class ElectrumWalletBase extends WalletBase<ElectrumBalance,
174 }
175 }
176
174 - if (inputs.isEmpty) {
177 + if (inputs.isEmpty ||
178 + (credentialsAmount > 0 && allInputsAmount < credentialsAmount)) {
179 throw BitcoinTransactionNoInputsException();
180 }
181
@@ -179,9 +183,6 @@ abstract class ElectrumWalletBase extends WalletBase<ElectrumBalance,
183 feeAmountForPriority(transactionCredentials.priority, inputs.length, 1);
184 final allAmount = allInputsAmount - allAmountFee;
185
182 - final credentialsAmount = transactionCredentials.amount != null
183 - ? stringDoubleToBitcoinAmount(transactionCredentials.amount)
184 - : 0;
186 final amount = transactionCredentials.amount == null ||
187 allAmount - credentialsAmount < minAmount
188 ? allAmount