Files
hash-wallet/cw_decred
ef9b0fbae6 Ywallet zcash (#2810)
* feat(zcash): initial commit
- initial work on cw_zcash
  - use single .db for everything zcash to speed up sync and scanning
  - implement silent autoshielding of non-orchard funds
  - use FFI for everything to fetch the data
  - add support for passphrase by adding extra word to seed phrase
  - enforce lints on CI for cw_zcash directory
- use correct zcash name, and call transparent zcash tZEC
- minor cleanups outsite of cw_zcash
  - gitmodules, gitignore
  - db debug
  - fix broken addressPageType in WalletInfo
  - enable debug options in kDebugMode and kProfileMode

* feat: T address rotation (and cache) wip: minor fixes

* wip: shield tx list

* fix fiat amounts fix derrivation of rotation account addresses screen
for zcash block height fix T address shields improvements Amount in
disposable T shields UI improvements
show pending outgoing tx in tx history

* fix null check on passphrase page fix tx showing as pending rename auto
shield txs fixed send all to include fee use rotating address in
addressForExchange wrap all calls of WarpApi.getLatestHeight in try
catch to prevent leaking errors

other minor fixes from notion

* wallet group debug cache sent tx address wallet T address rotation fixes
automatically pick the fee for auto-shield

* fix T address cache deserialization fix autoshield icon fix autoshield
text getCachedDestinationAddress fix send address cache

* address comments from review

* wip: iOS fix

* fix swap

* Allow cakepay payment from zcash wallet

* fix: ios (I'm stupid) fix: reorder addresses to make orchard default
fix: send all balance

* 5.6.6 bump fix: ios apple review add transport error to ignored
exceptions

* fix: leaving dust behind when sweeping all

* Change wallets order

* fix: reflect balance of pending out txs fix: restore height support

* linux support (disabled)

* fix: date picker for zcash on restore screen fix: build script for linux
match WarpApi.warpSync args with upstream

* fix: linter script

* ensure all exchange providers support ZEC (#2802)

* ensure all exchange providers support ZEC

* remove zaddr and tzec currencies and refactor providers

* Update lib/exchange/provider/near_Intents_exchange_provider.dart

* add back old zcash currencies for backward compatibility, thanks Czarek

* minor fix [skip ci]

---------

Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>

* Update android/app/src/main/AndroidManifestBase.xml [skip ci]

* Update ios/Runner/InfoBase.plist [skip ci]

* fix: remove unused code fix: macos fix: disable on linux and macos

* update build numbers [skip ci]

* Add zcash to birdpay

---------

Co-authored-by: Czarek Nakamoto <cyjan@mrcyjanek.net>
Co-authored-by: Serhii <borodenko.sv@gmail.com>
2026-01-16 03:16:41 +01:00
..
2025-03-21 04:18:47 +02:00
2025-03-21 04:18:47 +02:00
2025-10-31 22:37:15 +01:00
2025-03-21 04:18:47 +02:00
2025-03-21 04:18:47 +02:00
2025-03-21 04:18:47 +02:00
2025-03-21 04:18:47 +02:00
2025-03-21 04:18:47 +02:00
2025-03-21 04:18:47 +02:00
2026-01-16 03:16:41 +01:00

cw_decred

Decred wallet module that bridges to the native libdcrwallet via FFI. Provides high‑level methods to create/load wallets, sync, query balances/transactions, build and broadcast transactions, and sign/verify messages.

Features

  • FFI bindings to libdcrwallet with an isolate‑based request/response model.
  • Initialize, create, load, close wallets; watch‑only creation.
  • Start sync with optional peer list; query sync status and best block.
  • Query balances, list transactions and unspents, rescan from height.
  • Create signed transactions and broadcast raw transactions.
  • Export wallet seed; change wallet password.
  • Address management (new external address, default pubkey, address lists).
  • Message signing and verification.

Getting started

Ensure the platform library is available:

  • Android/Linux: libdcrwallet.so
  • Apple: embedded cw_decred.framework/cw_decred

Initialize and load a wallet:

final lib = await Libwallet.spawn();
await lib.initLibdcrwallet('', 'info');
await lib.loadWallet(jsonEncode({ /* libdcrwallet config */ }));
await lib.startSync('wallet.db', '');
final status = await lib.syncStatus('wallet.db');

Usage

Create, sign, and broadcast a transaction:

final signed = await lib.createSignedTransaction('wallet.db', jsonEncode({
  // inputs/outputs and policy for libdcrwallet
}));
final txid = await lib.sendRawTransaction('wallet.db', signed);

Additional information

  • See lib/api/ for the isolate wrapper (libdcrwallet.dart) and low‑level bindings.
  • Errors are surfaced via the PayloadResult struct; some calls support throwOnError in higher‑level wrappers.