fix: custom Bitcoin Ledger derivation paths and update ledger-bitcoin dependency (#2798)
* fix: custom Bitcoin Ledger derivation paths and update ledger-bitcoin dependency * fix: remove unused `derivationPath` in `signTransaction` method
Konstantin Ullrich committed
Jan 9, 2026 at 20:47 UTC
98aa1fd6c95d228c692d3fe99d9c3bde0fd183f4
3 files changed
+11
-3
cw_bitcoin/lib/bitcoin_wallet.dart
+6
-2
@@ -13,6 +13,7 @@ import 'package:cw_bitcoin/electrum_derivations.dart';
13
import 'package:cw_bitcoin/electrum_wallet.dart';
14
import 'package:cw_bitcoin/electrum_wallet_snapshot.dart';
15
import 'package:cw_bitcoin/hardware/bitcoin_hardware_wallet_service.dart';
16
+import 'package:cw_bitcoin/hardware/bitcoin_ledger_service.dart';
17
import 'package:cw_bitcoin/payjoin/manager.dart';
18
import 'package:cw_bitcoin/payjoin/storage.dart';
19
import 'package:cw_bitcoin/pending_bitcoin_transaction.dart';
@@ -31,9 +32,7 @@ import 'package:cw_core/wallet_info.dart';
32
import 'package:cw_core/wallet_keys_file.dart';
33
import 'package:flutter/foundation.dart';
34
import 'package:hive/hive.dart';
34
-import 'package:ledger_bitcoin/ledger_bitcoin.dart';
35
import 'package:ledger_bitcoin/psbt.dart';
36
-import 'package:ledger_flutter_plus/ledger_flutter_plus.dart';
36
import 'package:mobx/mobx.dart';
37
import 'package:ur/cbor_lite.dart';
38
import 'package:ur/ur.dart';
@@ -356,6 +355,11 @@ abstract class BitcoinWalletBase extends ElectrumWallet with Store {
355
);
356
357
final psbtStr = base64Encode(psbt.serialize());
358
+ if (hardwareWalletService is BitcoinLedgerService && derivationInfo.derivationPath != null) {
359
+ (hardwareWalletService as BitcoinLedgerService)
360
+ .setAccountDerivationPath(derivationInfo.derivationPath!);
361
+ }
362
+
363
final rawHex = await hardwareWalletService!.signTransaction(transaction: psbtStr);
364
return BtcTransaction.fromRaw(BytesUtils.toHexString(rawHex));
365
}
cw_bitcoin/lib/hardware/bitcoin_ledger_service.dart
+4
@@ -18,6 +18,10 @@ class BitcoinLedgerService extends HardwareWalletService with BitcoinHardwareWal
18
final LedgerConnection ledgerConnection;
19
final BitcoinLedgerApp bitcoinLedgerApp;
20
21
+ void setAccountDerivationPath(String derivationPath) {
22
+ bitcoinLedgerApp.derivationPath = derivationPath;
23
+ }
24
+
25
@override
26
Future<List<HardwareAccountData>> getAvailableAccounts({int index = 0, int limit = 5}) async {
27
final masterFp = await bitcoinLedgerApp.getMasterFingerprint();
cw_bitcoin/pubspec.yaml
+1
-1
@@ -49,7 +49,7 @@ dependencies:
49
git:
50
url: https://github.com/cake-tech/ledger-flutter-plus-plugins
51
path: packages/ledger-bitcoin
52
- ref: dc42621f55702d0732681afc2f90bc0047f26633
52
+ ref: 75bba8632c529debf30ee2b1858530009fa6440b
53
ledger_litecoin:
54
git:
55
url: https://github.com/cake-tech/ledger-flutter-plus-plugins