Building Cake Wallet with Monzero on macOS: what was tested
Everything on this page is ours. We built and tested the Monzero patch on our own machine, an Apple Silicon Mac with an M1 chip running macOS 27, and the results below are the ones the pull request text records. None of the build is published here — not the app and not the libraries. This page describes it; it does not distribute it.
The native library
Cake Wallet's Monero-family coins run on C libraries that monero_c builds from each coin's wallet code. For Monzero that library is libmonzero_wallet2_api_c. We built it from a local monero_c checkout that has the Monzero target, with Apple clang 21, Homebrew's Boost 1.92 and OpenSSL 3, and Trezor support switched off. Its wrapper exports 354 symbols with a MONZERO_ prefix, and the checksums embedded in the library match the ones generated for the Dart side. On the M1, with other work running, the build took about an hour.
A smoke test through the Dart bindings used a throwaway wallet: a 95-character address starting with F, a 25-word seed, a connection to node.monzero.org on port 6175, a sync to the chain tip at height 15,704 within three seconds, a balance of 0, and then the wallet closed and deleted.
Because the library was linked against Homebrew's libraries, the app has to carry them: 21 libraries, 28 MB, rewritten to load from beside the Monzero library with nothing pointing back into Homebrew. Cake Wallet's own build makes monero_c's libraries with its static toolchain, where none of that is needed, and our notes for the pull request say the maintainers may prefer to drop the bundling step.
Dart analysis
With Flutter 3.47.8 and Dart 3.13.7, after Cake Wallet's code generators had run, dart analyze found: cw_monzero, 0 errors and 12 warnings — the same 12 that cw_wownero has; cw_core, 0 errors; the generated Monzero glue, 0 errors and 0 warnings. Across the whole app there was no error or warning on any line the patch changes, none mentioning Monzero, and no switch statement left without a case for the new wallet type. The errors that remain on our machine belong to it: a secrets file that is not generated outside Cake Wallet's own builds, the Decred, Zano and Zcash glue that the macOS flags do not produce, and two places that trip over the newer Flutter.
The analysis found two real bugs, both copied in from Wownero: opening a wallet always threw a deprecation error, and an untyped pointer in the seed restore failed three checks under strict casts. The second commit fixes both.
The tests
flutter test in cw_monzero passes 13 tests on macOS arm64, against the Monzero library built from our monero_c fork. They are Cake Wallet's own BIP39 test and its vectors for Monero, run against Monzero, and nine new tests of the wallet service, modelled on the Monero ones:
Creating Legacy, Polyseed and BIP39 wallets. Restoring Cake Wallet's Monero test phrases, which must give Monero's test addresses with Monzero's prefix — computed separately, by decoding the address, changing prefix 18 to 86 and recomputing the Keccak checksum. Restoring the 25-word seed derived from a BIP39 phrase, which must give the same address. And BIP39 round trips — create, then restore — with 12 words, 24 words and a passphrase, which must give back the same phrase, address and restore height, with the passphrase changing the address.
Three of the nine failed before the last fix, which the BIP39 guide describes. Cake Wallet's CI builds only the Monero and Wownero libraries, so there the nine are skipped; we checked that they skip and that nothing fails.
Inside the app
A macOS Release build, arm64, made with Xcode 27.1 and Flutter 3.47.8 and signed ad hoc under a separate development bundle id. In it we created a Monzero wallet and got a 25-word seed and the seed check; the wallet connected to node.monzero.org, synced and showed a balance of 0 XMZ; the Receive screen showed a valid F… subaddress, with network prefix 88 and a correct checksum. After a restart the wallet reopened and showed as synced straight after the PIN unlock — before the fifth commit it stayed at “Attempting sync”. The sandboxed app loaded the Monzero library and the libraries bundled with it.
That build used tweaks that are not part of the pull request: Flutter 3.47 rather than the 3.41.9 that Cake Wallet's CI uses, two small fixes for the newer Flutter, and no Monero or Wownero libraries in the bundle.
What is not tested
The pull request text lists it: builds for iOS, Android, Linux and Windows; a build with Cake Wallet's own CI toolchain, Flutter 3.41.9; the CI workflows, which the patch does not touch; sending and receiving XMZ; restoring from a seed or keys through the app's screens — the service tests restore from seeds, but not through the screens; wallet groups; and Ledger or Trezor, since Monzero has no hardware-wallet support.
So far the patched app has shown that it can make a Monzero wallet, sync it and reopen it. Whether it moves coins will be known when someone sends XMZ from it and receives XMZ in it.
Building Cake Wallet with Monzero on macOS: what was tested: questions
Has the Monzero Cake Wallet patch been tested on iOS or Android?
Not in the testing the pull request records. That covers a macOS Release build on an Apple Silicon Mac, and lists builds for iOS, Android, Linux and Windows as not tested.
Can the patched Cake Wallet send Monzero?
Monzero is wired into the send, fee and unspent-coin screens, but sending and receiving were not tested: the in-app check created, synced and reopened a wallet with a balance of 0 XMZ.
Which Flutter version was the Monzero build made with?
Flutter 3.47.8 with Dart 3.13.7, and Xcode 27.1 on macOS 27. Cake Wallet's CI uses Flutter 3.41.9, and a build with that toolchain has not been done yet.
Source: Our own build and tests, as recorded in the Monzero pull request text and its build notes (MONZERO.md) checked against the source
More Monzero guides
What the Monzero patch adds to Cake Wallet
A six-commit patch adds Monzero (XMZ) to Cake Wallet as a new wallet type: a copy of the Wownero integration that follows Monero where Wownero falls short.
Monzero BIP39 seeds: one phrase, the same keys as Monero
In Cake Wallet's Monzero patch a BIP39 phrase uses Monero's path, m/44'/128'/0'/0/0, so one phrase gives the same keys on both coins. Why Monzero needs its own.
The Monzero pull request to Cake Wallet
Monzero support for Cake Wallet is a six-commit pull request that rests on a separate monero_c change: the six commits, what has to land first, what is open.