jwinterm f08ae897e6 fix(wownero): hold the history mutex while reading transactions
The 1.0.5 build 15 macOS test crashed with SIGSEGV in
WOWNERO_TransactionInfo_amount on the main thread, near the end of a
restore sync. TransactionHistory_refresh runs on a background isolate
under txHistoryMutex and frees the TransactionInfo objects it replaces;
getAllSubaddresses() and getTransaction() read those objects without
the mutex, so a read that overlaps a refresh dereferences freed memory.
The wallet cache had not been stored, so the next launch synced again.

Upstream fixed the same race for Monero in #3188 and in the v6.4.5
coin-control change; this ports both to cw_wownero. getAllSubaddresses()
and getTransaction() take the mutex and become async, which carries
through the subaddress list, its app proxy and the configure interface.
The subaddress list now fetches before clearing, so the observable list
is never empty while the fetch is pending, and addSubaddress and
setLabelSubaddress await the update before callers read the new address.

The coin-control change check compared a Transaction with 1 and was
always false; it now uses the transaction's direction, as Monero does.
2026-10-31 12:50:36 -04:00
2026-10-24 23:49:29 -04:00
2026-10-24 23:49:29 -04:00
2026-10-24 23:49:29 -04:00
2026-10-24 23:49:29 -04:00
2026-10-24 23:49:29 -04:00
2026-10-24 23:49:29 -04:00
2026-10-24 23:49:29 -04:00
2026-10-24 23:49:29 -04:00
2026-10-24 23:49:29 -04:00
2026-10-24 23:49:29 -04:00
2026-10-24 23:49:29 -04:00
2026-09-23 20:11:37 +03:00
2026-03-11 04:26:57 +02:00
2026-10-24 23:49:29 -04:00
2026-07-12 08:40:04 +02:00

Hash Bags

Hash Bags (#) is an open-source, non-custodial, multi-currency crypto wallet for Android, iOS, macOS, Linux, and Windows. It is a fork of Cake Wallet maintained by Such Software LLC.

Why a fork?

Cake Wallet ended Wownero support in early 2026. Hash Bags exists to keep Wownero as a first-class mobile experience, run by the project's founder, while shipping a slimmer, more focused multi-coin wallet without the chains and integrations we don't want to maintain or recommend.

Supported chains

  • Monero (XMR)
  • Wownero (WOW)
  • Bitcoin (BTC)
  • Litecoin (LTC), incl. MWEB
  • Bitcoin Cash (BCH)
  • Dogecoin (DOGE)
  • Nano (XNO)
  • Ethereum (ETH) + ERC-20s
  • Polygon (POL)
  • Base (BASE)
  • Arbitrum (ARB)
  • BNB Smart Chain (BSC)

Hardware wallet support: Ledger, Trezor, BitBox.

What's different from Cake Wallet

Removed:

  • Solana, Tron, Zano, Zcash, Decred (chain support disabled)
  • Lightning Network (deferred — running Greenlight infra is out of scope for now)
  • Cake Pay gift cards (Cake Labs–operated service)
  • All direct swap-provider integrations except Trocador, which already aggregates ChangeNow, FixedFloat, LetsExchange, Exolix, StealthEx, Quantex, and ~16 others under one privacy-friendly API

Replaced or planned:

  • Default Monero/Wownero/BTC node lists augmented with community nodes (don't rely on Cake Labs–operated nodes alone)
  • Fiat price API replacement (Cake's API → public source) — pending
  • Tor / Arti integration improvements — pending

Build instructions

The build system is unchanged from upstream Cake Wallet. See docs/ for per-platform instructions:

  • Android: docs/builds/ANDROID.md
  • iOS: docs/builds/IOS.md
  • macOS: docs/builds/MACOS.md
  • Linux: docs/builds/LINUX.md
  • Windows: docs/builds/WINDOWS.md

Required Flutter version is pinned in Dockerfile (currently 3.32.0) and .tool-versions. Newer Flutter SDKs (3.5+) drop the _macros pseudo-package that Cake's pinned hive_generator + build_resolvers transitively require — flutter pub get will fail until you switch to 3.32.0. If using asdf or mise, the version will be picked up automatically; otherwise:

git clone --depth 1 --branch 3.32.0 https://github.com/flutter/flutter.git ~/sdks/flutter/3.32.0
export PATH="$HOME/sdks/flutter/3.32.0/bin:$PATH"
flutter --version    # confirm 3.32.0 / Dart 3.8.0

Before the first flutter pub get, you must run the prep scripts to clone external native dependencies:

./scripts/prepare_torch.sh
./scripts/prepare_moneroc.sh
./scripts/build_bitbox_flutter.sh
# Then fetch the prebuilt reown_flutter tarball (CI does this; reproduce locally
# with the URL in .github/workflows/build-linux.yml).

Then run the platform-specific configure script, e.g.:

APP_LINUX_TYPE=cakewallet ./configure_hash_wallet.sh linux

Contributing

Issues and PRs welcome at https://github.com/Such-Software/hash-wallet. See CONTRIBUTING.md for ground rules.

License

Hash Bags' own application code is distributed under the MIT License, inherited from Cake Wallet. It also bundles third-party open-source components under their own licenses — including the Monero and Wownero wallet cores (BSD-3-Clause) and additional components under Apache-2.0 and LGPL-3.0 — so the app as a whole is not solely MIT-licensed. See the LICENSE files in the repository.

Copyright (C) 2018–2025 Cake Labs LLC
Copyright (C) 2026      Such Software LLC

Cake Wallet, the Cake Wallet logo, and related marks are trademarks of Cake Labs LLC and are not used by Hash Bags.

S
Description
No description provided
Readme
88 MiB
Languages
Dart 94.7%
Shell 2.9%
Python 0.7%
CMake 0.5%
C++ 0.4%
Other 0.6%