Files
hash-wallet/cw_bitcoin
db00a0214a v6.0.2 Release candidate (#3080)
* v6.0.2 Release candidate

* v6.0.2 Release candidate

* move btc ln up in the currency picker

* disable bsc for swapsxyz

* minor [skip ci]

* hide dex/rate selection on swap screen

* temp fix for evm tokens swaps icons until hive migration is done

* minor [skip ci]

* disable force dex providers for existing users and let them pick it from settings preference

* Show bitcoin address types in swap picker (#3096)

* Show bitcoin address types in swap picker

* remove wrong conversion to bolt11 [skip ci]

* feat: add Lightning invoice resolution and address normalization

* automatically select contact wallet address based on the selected swap currency (whether it's bitcoin or lightning)

* minor [skip ci]

* default to bolt11 invoice for lightning swaps

---------

Co-authored-by: Konstantin Ullrich <konstantinullrich12@gmail.com>

---------

Co-authored-by: Konstantin Ullrich <konstantinullrich12@gmail.com>
2026-03-16 14:21:16 +01:00
..
2026-03-16 14:21:16 +01:00
2026-03-11 04:26:57 +02:00
2026-03-11 04:26:57 +02:00
2026-03-11 04:26:57 +02:00

cw_bitcoin

Bitcoin-family Electrum wallet implementation used by Cake Wallet (BTC, LTC and derivatives).

Features

  • Electrum client and wallet with address/UTXO management and snapshots.
  • Derivation via BIP‑39; receive/change chains with per-coin configs.
  • Create/sign/broadcast transactions; PSBT helpers and payjoin support.
  • Transaction history, priorities, and size-based fee calculations.
  • Hardware wallet support for BTC/LTC.

Getting started

Use the module via app services (see bitcoin_wallet_service.dart, litecoin_wallet_service.dart). Ensure Electrum nodes are configured for the target coin.

final wallet = await BitcoinWallet.create(
  mnemonic: '...',
  password: 'secret',
  walletInfo: walletInfo,
  unspentCoinsInfo: unspentCoinsBox,
  encryptionFileUtils: encryption,
);

Usage

Send BTC with medium priority:

final feeRate = wallet.feeRate(BitcoinTransactionPriority.medium);
final pending = await wallet.createTransaction(
  outputs: [BitcoinTransactionOutput(address: 'bc1...', amount: 50000)],
  feeRate: feeRate,
);
final txHash = await pending.commit();

See lib/ for wallet/services, PSBT, and payjoin utilities.