From 102139b0611dc3dceffedea26085eaef89ac31f4 Mon Sep 17 00:00:00 2001 From: Rafael Date: Thu, 15 Aug 2024 22:34:41 -0300 Subject: [PATCH] feat: more info on privkey error (#1612) --- cw_bitcoin/lib/electrum_wallet.dart | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/cw_bitcoin/lib/electrum_wallet.dart b/cw_bitcoin/lib/electrum_wallet.dart index 501d94e54..9dc8de083 100644 --- a/cw_bitcoin/lib/electrum_wallet.dart +++ b/cw_bitcoin/lib/electrum_wallet.dart @@ -993,11 +993,29 @@ abstract class ElectrumWalletBase bool hasTaprootInputs = false; final transaction = txb.buildTransaction((txDigest, utxo, publicKey, sighash) { - final key = estimatedTx.inputPrivKeyInfos - .firstWhereOrNull((element) => element.privkey.getPublic().toHex() == publicKey); + String error = "Cannot find private key."; + + ECPrivateInfo? key; + + if (estimatedTx.inputPrivKeyInfos.isEmpty) { + error += "\nNo private keys generated."; + } else { + error += "\nAddress: ${utxo.ownerDetails.address.toAddress()}"; + + key = estimatedTx.inputPrivKeyInfos.firstWhereOrNull((element) { + final elemPubkey = element.privkey.getPublic().toHex(); + if (elemPubkey == publicKey) { + return true; + } else { + error += "\nExpected: $publicKey"; + error += "\nPubkey: $elemPubkey"; + return false; + } + }); + } if (key == null) { - throw Exception("Cannot find private key"); + throw Exception(error); } if (utxo.utxo.isP2tr()) {