The open source repository for Cake Wallet, a noncustodial multi-currency wallet, and Monero.com, a noncustodial Monero-only wallet. Need help? Check out https://guides.cakewallet.com
Find a file
Omar Hatem a34cf24897
Remove haven ()
* decred: Add decred. ()

* multi: Add initial decred screens. ()

Use a mock libwallet for now.

* cw_decred: add libdcrwallet dependency and link library for android, ios and macos ()

* change cw_decred from package to plugin

* add libdcrwallet dependency and link library for android, ios and macos

* remove spvwallet, make some libdcrwallet fns async, light refactor

* libdcrwallet: use json payload returns

* use specific libwallet commit hash

* decred: fix Rename wallet.

---------

Co-authored-by: JoeGruff <joegruffins@gmail.com>

* decred: Add sync.

* decred: Add send transaction.

* decred: Fix fee estimation.

* decred: List transactions.

* decred: Add rescan.

* decred: Sign message.

* decred: Add new addr and addrs.

* decred: Add change wallet pass.

* decred: Add restore from seed.

* decred: Add watching only wallets.

* decred: Enable mainnet.

* decred: Allow using blank node address.

This allows a persistent peer to be unset, falling back to decred
seeders.

* decred: Rescan from wallet birthday.

* add and update macos build scripts, update build readme, gitignore macos project.pbxproj

Signed-off-by: Philemon Ukane <ukanephilemon@gmail.com>

* multi: hide decred rescan page if it's not ready

-  move hasRescan method to WalletBase and implement for decred

Signed-off-by: Philemon Ukane <ukanephilemon@gmail.com>

* cw_decred: fix bug where decred wallets are not loaded after app restart

Signed-off-by: Philemon Ukane <ukanephilemon@gmail.com>

* add buy and sell for decred via onramp

Signed-off-by: Philemon Ukane <ukanephilemon@gmail.com>

* bug-fix: account for other send outputs that are part of the same tx

Signed-off-by: Philemon Ukane <ukanephilemon@gmail.com>

* decred: Return address with no peers.

* decred: Update pubspec.

* decred: Add verify message.

* upgrade hive_generator dep in cw_decred

* decred: Clean up code.

---------

Signed-off-by: Philemon Ukane <ukanephilemon@gmail.com>
Co-authored-by: Wisdom Arerosuoghene <wisdom.arerosuoghene@gmail.com>
Co-authored-by: Philemon Ukane <ukanephilemon@gmail.com>

* fix extracted addresses not used
fix conflicts with main

* remove print [skip ci]

* minor formatting

* fix initial migration version

* add build decred script to workflow

* install go before build decred
fix switch cases

* trial 2 to fix decred build

* re-install go

* revert build script change

* refactor/clean nodes functions

* Fix address book issue
Fix send ALL (to be continued with the fees point)

* Fix transactions display issues
Add missing file

* Fix unconfirmed balance not displayed
Change Wallet order
Minor cleanup

* Fix workflow

* Fix workflow

* Fix workflow

* test

* hardcode path for now

* fix + cleanup decred build script to work on mac and linux

* Update decred build script

* Run actions on pull requests, extract commit message

* run after checkout

* add safe directory

* Get commit message from base.sha instead of last commit

* base -> head

* Do not merge main branch into pr

* [skip slack] [run tests] clone by sha

* Proper name for decred library in the build script

* Throw an error when ANDROID_HOME or ANDROID_NDK_VERSION is missing

* Fix conflicts with main

* minor code enhancement

* decred: Add used address history.  ()

* decred: Update pubspec.

* decred testnet

* decred: Add used address history.

* decred: Remove default node list.

* populate transaction history before sync begins

* decred: Add some awaits.

* decred: Fix send all.

* decred: Add clang export to build script.

* decred: Update logo colors.

* cleanup cw_decred.dart

* make decred wallet addresses selectable in receive page

* decred: Always set default addr when used.

* decred: Add back default node list.

* decred: Allow creating addresses manually.

---------

Co-authored-by: Wisdom Arerosuoghene <wisdom.arerosuoghene@gmail.com>
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>

* minor fixes and cleanup

* minor fix, feel free to test now

* - Fix transaction details
- Fix Nodes
- Add processing sync status

* Add decred info card

* push missing file

* Add missing text for decred info card

* minor: change docs link [skip ci]

* decred: Update derivation info. ()

* decred: Update derivation info.

* decred: Allow unsynced unused addresses.

* decred: Update dcrwallet dep to 4.3.0.

* Merge main and fix conflicts

* Merge main and fix conflicts

* decred: Fix background sync panic. ()

* decred: Run libwallet in isolate. ()

* decred: Fix contact save inquiry. ()

Also fix tx time and the fee shown on pending transactions.

* Disable send button in view only decred wallets

* - Fix frozen coins
- Add URI support
- Fix fees in tx details
- Handle empty coins send
- Handle wallets in address book

* Merge main

* remove print [skip ci]

* Fix restore from QR

* minor improvement for QR restore

* Remove Haven Wallet

* Remove haven scripts

* minor fixes [skip ci]

* decred: Get slip44 addrs before sync completes. ()

* - Fix loading wallet more than one time
- Fix minor UI issue

* fix merge issue

* fix merge issue

---------

Signed-off-by: Philemon Ukane <ukanephilemon@gmail.com>
Co-authored-by: JoeGruffins <34998433+JoeGruffins@users.noreply.github.com>
Co-authored-by: Wisdom Arerosuoghene <wisdom.arerosuoghene@gmail.com>
Co-authored-by: Philemon Ukane <ukanephilemon@gmail.com>
Co-authored-by: Czarek Nakamoto <cyjan@mrcyjanek.net>
2025-03-21 04:52:05 +02:00
.github Add decred () 2025-03-21 04:18:47 +02:00
android Add decred () 2025-03-21 04:18:47 +02:00
assets Add decred () 2025-03-21 04:18:47 +02:00
cw_bitcoin Add decred () 2025-03-21 04:18:47 +02:00
cw_bitcoin_cash CW-843: Enhance Wallet Groups Implementation () 2025-03-06 02:25:38 +02:00
cw_core Add decred () 2025-03-21 04:18:47 +02:00
cw_decred Add decred () 2025-03-21 04:18:47 +02:00
cw_ethereum Add Chainflip exchange provider () () 2025-01-24 20:17:37 +02:00
cw_evm Fix not saving passphrase 2025-03-16 04:45:46 +02:00
cw_monero Add decred () 2025-03-21 04:18:47 +02:00
cw_mweb Migrate to .xcframework () 2025-02-17 15:53:10 +02:00
cw_nano Fix not saving passphrase 2025-03-16 04:45:46 +02:00
cw_polygon minor fix [skip ci] 2025-03-09 00:59:55 +02:00
cw_shared_external fix building with haven 2024-11-25 21:05:36 +02:00
cw_solana Fix not saving passphrase 2025-03-16 04:45:46 +02:00
cw_tron Fix not saving passphrase 2025-03-16 04:45:46 +02:00
cw_wownero Add decred () 2025-03-21 04:18:47 +02:00
cw_zano update only zano on 4.23.3 () 2025-03-18 17:33:38 +02:00
docs Improve build docs and optimize Dockerfile for Android and Linux builds () 2025-03-09 23:10:12 +02:00
integration_test Remove haven () 2025-03-21 04:52:05 +02:00
ios Add decred () 2025-03-21 04:18:47 +02:00
lib Remove haven () 2025-03-21 04:52:05 +02:00
linux Improve build docs and optimize Dockerfile for Android and Linux builds () 2025-03-09 23:10:12 +02:00
macos Add decred () 2025-03-21 04:18:47 +02:00
res/values Add decred () 2025-03-21 04:18:47 +02:00
scripts Remove haven () 2025-03-21 04:52:05 +02:00
test Fixes 2020-09-28 18:47:43 +03:00
test_driver CW-727/728-Automated-Integrated-Tests () 2024-09-22 05:46:51 +03:00
tool Remove haven () 2025-03-21 04:52:05 +02:00
windows Zano with passphrase () 2025-01-24 20:33:24 +02:00
.dockerignore Improve build docs and optimize Dockerfile for Android and Linux builds () 2025-03-09 23:10:12 +02:00
.gitignore Add decred () 2025-03-21 04:18:47 +02:00
.gitmodules TMP 4 2020-06-20 10:10:00 +03:00
.metadata CW-676 Add Linux scripts to build monero_c for linux platform () 2024-08-13 01:18:14 +03:00
analysis_options.yaml Zano with passphrase () 2025-01-24 20:33:24 +02:00
cakewallet.bat Wownero () 2024-07-04 22:43:17 +03:00
com.cakewallet.CakeWallet.yml CW-676 Add Linux scripts to build monero_c for linux platform () 2024-08-13 01:18:14 +03:00
configure_cake_wallet.sh CW-798 Fix macos 15 issues () 2024-11-25 16:08:30 +02:00
devtools_options.yaml CW-653-Migrate-Tron-And-Solana-To-NowNodes () 2024-06-29 00:36:12 +03:00
Dockerfile Improve build docs and optimize Dockerfile for Android and Linux builds () 2025-03-09 23:10:12 +02:00
env.json Wownero () 2024-07-04 22:43:17 +03:00
integration_test_runner.sh CW-827 CI/CD update () 2025-01-15 13:09:59 +02:00
LICENSE.md Update LICENSE.md () 2025-01-28 14:57:53 +02:00
model_generator.sh Remove haven () 2025-03-21 04:52:05 +02:00
PRIVACY.md Docs spelling issues () 2024-11-04 04:51:19 +02:00
pubspec_base.yaml Add decred () 2025-03-21 04:18:47 +02:00
pubspec_description.yaml CW-798 Fix macos 15 issues () 2024-11-25 16:08:30 +02:00
README.md Add APK verification to readme 2024-11-30 15:49:48 -05:00
run-android.sh Zano with passphrase () 2025-01-24 20:33:24 +02:00

logo

devices

Cake Wallet

Cake Wallet is an open-source, non-custodial, and private multi-currency crypto wallet for Android, iOS, macOS, and Linux.

Cake Wallet includes support for several cryptocurrencies, including:

  • Monero (XMR)
  • Bitcoin (BTC)
  • Ethereum (ETH)
  • Litecoin (LTC)
  • Bitcoin Cash (BCH)
  • Polygon (Pol)
  • Solana (SOL)
  • Nano (XNO)
  • Haven (XHV)

Features

App-Wide Features

  • Completely noncustodial. Your keys, your coins.
  • Built-in exchange for dozens of pairs
  • Easily pay cryptocurrency invoices with fixed rate exchanges
  • Buy cryptocurrency (BTC/LTC/XMR/ETH) with credit/debit/bank
  • Sell cryptocurrency by bank transfer
  • Scan QR codes for easy cryptocurrency transfers
  • Create several wallets
  • Select your own custom nodes/servers
  • Address book
  • Backup to an external location or iCloud
  • Send to OpenAlias, Unstoppable Domains, Yats, and FIO Crypto Handles
  • Set desired network fee level
  • Store local transaction notes
  • Extremely simple user experience
  • Convenient exchange and sending templates for recurring payments
  • Create donation links and invoices in the receive screen
  • Robust privacy settings (eg: Tor-only connections)
  • Robust security settings (eg: Cake 2FA)

Monero Specific Features

  • The Monero view key is retained on the device for maximum privacy
  • Full support for Monero subaddresses and accounts
  • Specify restore height for faster syncing
  • Specify multiple recipients for batch sending
  • Optionally set Monero nodes as trusted for faster syncing
  • Specify a proxy for Monero nodes, compatible with Tor and i2p

Bitcoin Specific Features

  • Bitcoin coin control (specify specific outputs to spend)
  • Automatically generate new addresses
  • Specify multiple recipients for batch sending

Ethereum Specific Features

  • Store ETH and all ERc-20 tokens
  • Add custom tokens by contract address
  • Enable or disable Etherscan for transaction history

Litecoin Specific Features

  • Litecoin coin control (specify specific outputs to spend)
  • Automatically generate new addresses
  • Specify multiple recipients for batch sending

Haven Specific Features

  • Send, receive, and store XHV and all xAssets like xUSD, xEUR, xAG, etc.

Monero.com by Cake Wallet for Android and iOS

Open Source Monero-Only Wallet

Exchanging to/from other assets is also supported.

APK Verification

APK releases on GitHub, Accrescent, and F-Droid use the same key. They can easily be verified using apksigner or AppVerifier.

See below for Cake Wallet's SHA-256 signing certificate hash:

com.cakewallet.cake_wallet
C5:40:53:AB:0F:10:D9:54:17:62:A3:DA:76:65:AE:3D:BA:5E:7C:74:3A:B4:F1:08:A5:34:9D:62:AC:10:6E:F5

Support

We have 24/7 free support. Please contact support@cakewallet.com

We have excellent user guides, which are also open-source and open for contributions: https://guides.cakewallet.com

Build Instructions

More instructions to follow

For instructions on how to build for Android: please view file howto-build-android.md

Contributing

Improving translations

Edit the applicable strings_XX.arb file in res/values/ and open a pull request with the changes.

Current list of language files:

  • English
  • Spanish
  • French
  • German
  • Italian
  • Portuguese
  • Dutch
  • Polish
  • Croatian
  • Russian
  • Ukrainian
  • Hindi
  • Japanese
  • Chinese
  • Korean
  • Thai
  • Arabic
  • Turkish
  • Burmese
  • Urdu
  • Bulgarian
  • Czech
  • Indonesian
  • Hausa
  • Yoruba

Add a new language

  1. Create a new strings_XX.arb file in res/values/, replacing XX with the language's ISO 639-1 code.

  2. Edit the strings in this file, replacing XXX below with the translation for each string.

"welcome": "Welcome to", -> "welcome": "XXX",

  1. For strings where there is a variable, denoted by a $ symbol and braces, such as ${status}, the string in braces should not be translated. For example, when editing line 106:

"time" : "${minutes}m ${seconds}s"

The only parts to be translated, if needed, are the values m and s after the variables.

  1. Add the language to lib/entities/language_service.dart under both supportedLocales and localeCountryCode. Use the name of the language in the local language and in English in parentheses after for supportedLocales. Use the ISO 3166-1 alpha-3 code for localeCountryCode. You must choose one country, so choose the country with the most native speakers of this language or is otherwise best associated with this language.

  2. Add a relevant flag to assets/images/flags/XXXX.png, replacing XXXX with the 3 letters localeCountryCode. The image must be 42x26 pixels with 3 pixels of transparent margin on all 4 sides. You can resize the flag with paint.net to 36x20 pixels, expand the canvas to 42x26 pixels with the flag anchored in the middle, and then manually delete the 3 pixels on each side to make it transparent. Or you can use another program like Photoshop.

  3. Add the new language code to tool/utils/translation/translation_constants.dart

Add a new fiat currency

  1. Check with Cake Wallet support to see if the desired new fiat currency is available through our fiat API. Not all fiat currencies are.

  2. If the currency is associated strongly with a specific issuing country, map the ISO 4217 currency code with the applicable ISO 3166-1 alpha-3 code in lib/entities/fiat_currency.dart. If the currency is used in a whole region or organization, then map with a reasonable interpretation of this (eg: eur countryCode for EUR symbol).

  3. Add the raw mapping underneath in lib/entities/fiat_currency.dart following the same format as the others.

  4. Add a flag of the issuing country or organization to assets/images/flags/XXXX.png, replacing XXXX with the ISO 3166-1 alpha-3 code used above (eg: usa.png, eur.png). Do not add this if the flag with the same name already exists. The image must be 42x26 pixels with a 3 pixels of transparent margin on all 4 sides.


Copyright (C) 2018-2023 Cake Labs LLC