diff --git a/cw_bitcoin/lib/bitcoin_wallet.dart b/cw_bitcoin/lib/bitcoin_wallet.dart index 54d7e5a51..1c9ad8220 100644 --- a/cw_bitcoin/lib/bitcoin_wallet.dart +++ b/cw_bitcoin/lib/bitcoin_wallet.dart @@ -352,7 +352,7 @@ abstract class BitcoinWalletBase extends ElectrumWallet with Store { as PendingBitcoinTransaction; final payjoinUri = credentials.payjoinUri; - if (payjoinUri == null) return tx; + if (payjoinUri == null && !tx.shouldCommitUR()) return tx; final transaction = await buildPsbt( utxos: tx.utxos, @@ -372,7 +372,7 @@ abstract class BitcoinWalletBase extends ElectrumWallet with Store { publicKeys: tx.publicKeys!, masterFingerprint: Uint8List(0)); - if (tx.isViewOnly) { + if (tx.shouldCommitUR()) { tx.unsignedPsbt = transaction.serialize(); return tx; } @@ -381,8 +381,8 @@ abstract class BitcoinWalletBase extends ElectrumWallet with Store { await signPsbt(base64.encode(transaction.asPsbtV0()), getUtxoWithPrivateKeys()); tx.commitOverride = () async { - final sender = await payjoinManager.initSender( - payjoinUri, originalPsbt, int.parse(tx.feeRate)); + final sender = + await payjoinManager.initSender(payjoinUri!, originalPsbt, int.parse(tx.feeRate)); payjoinManager.spawnNewSender( sender: sender, pjUrl: payjoinUri, amount: BigInt.from(tx.amount)); }; diff --git a/cw_bitcoin/lib/electrum_wallet.dart b/cw_bitcoin/lib/electrum_wallet.dart index 70e20813e..ff075d916 100644 --- a/cw_bitcoin/lib/electrum_wallet.dart +++ b/cw_bitcoin/lib/electrum_wallet.dart @@ -681,7 +681,7 @@ abstract class ElectrumWalletBase ); spendsSilentPayment = true; isSilentPayment = true; - } else if (!isHardwareWallet) { + } else if (!isHardwareWallet && false) { privkey = generateECPrivate(hd: hd, index: utx.bitcoinAddressRecord.index, network: network); } @@ -1154,6 +1154,7 @@ abstract class ElectrumWalletBase bool hasTaprootInputs = false; final transaction = txb.buildTransaction((txDigest, utxo, publicKey, sighash) { + return ""; String error = "Cannot find private key."; ECPrivateInfo? key; diff --git a/cw_bitcoin/lib/pending_bitcoin_transaction.dart b/cw_bitcoin/lib/pending_bitcoin_transaction.dart index b5906ae97..500c4776f 100644 --- a/cw_bitcoin/lib/pending_bitcoin_transaction.dart +++ b/cw_bitcoin/lib/pending_bitcoin_transaction.dart @@ -179,13 +179,21 @@ class PendingBitcoinTransaction with PendingTransaction { outputAddresses: outputAddresses, fee: fee); + @override + bool shouldCommitUR() => isViewOnly; + @override Future commitUR() { var sourceBytes = unsignedPsbt!; var cborEncoder = CBOREncoder(); cborEncoder.encodeBytes(sourceBytes); - var ur = UR("psbt", cborEncoder.getBytes()); - var encoded = UREncoder.encode(ur); - return Future.value(encoded); + var ur = UR("psbt", cborEncoder.getBytes()); + // var ur = UR("psbt", Uint8List.fromList(List.generate(64*1024, (int x) => x % 256))); + var encoded = UREncoder(ur, 120); + List values = []; + while (!encoded.isComplete) { + values.add(encoded.nextPart()); + } + return Future.value(values.join("\n")); } } diff --git a/cw_monero/lib/pending_monero_transaction.dart b/cw_monero/lib/pending_monero_transaction.dart index 9909a3021..f2459b225 100644 --- a/cw_monero/lib/pending_monero_transaction.dart +++ b/cw_monero/lib/pending_monero_transaction.dart @@ -39,6 +39,7 @@ class PendingMoneroTransaction with PendingTransaction { String get feeFormatted => AmountConverter.amountIntToString( CryptoCurrency.xmr, pendingTransactionDescription.fee); + @override bool shouldCommitUR() => isViewOnly; @override