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