Cupcake Tutorial

Turn your old phone
into a hardware wallet

Discover Cupcake by Cake Wallet: the app that turns any smartphone into an air-gapped hardware wallet, at no extra cost.

What is Cupcake?

Cupcake is the latest app in the Cake Wallet family. Its principle is simple: make crypto security accessible to everyone by eliminating the high costs, shipping delays, and data breach risks associated with traditional hardware wallets.

If you have an old smartphone lying around in a drawer, Cupcake turns it into an air-gapped hardware wallet in just a few minutes. The app works as a dedicated signer: it holds the private keys for transaction signing, while Cake Wallet only keeps the view keys (or public keys) needed to check your balance and transaction history.

🔐

Air-gapped

Private keys stay isolated on a device with no internet connection.

📱

Reuse an old phone

No need to buy expensive $200+ hardware.

🔗

Linked to Cake Wallet

Cupcake signs, Cake Wallet broadcasts. Separation of roles.

🛡️

Open Source

Fully auditable code on GitHub. Complete transparency.


Supported Cryptocurrencies

Cupcake currently supports Monero (XMR) and Bitcoin (BTC). Litecoin support (including MWEB) is coming soon. The app is available on iOS and Android.

ɱ XMR ₿ BTC

Download Cupcake

Cupcake is available for free on the following platforms:

⚠️ Recommendation: Install Cupcake on an old phone that you won't use for browsing or communication anymore. Keep airplane mode on at all times for a true air-gap.

Create a Wallet in Cupcake

Once the app is installed on your dedicated device, follow these steps to set up your first wallet:

  1. Walk through the introduction
    Read the onboarding screens or skip them directly.
  2. Choose your cryptocurrency
    Select Monero (XMR) or Bitcoin (BTC) depending on your needs.
  3. Create a new wallet
    Tap "Create new wallet". You can also restore an existing wallet with "Restore wallet".
  4. Set a PIN code or password
    Choose a strong, random PIN code. This is your first line of defense.
  5. Name your wallet
    Give it a custom name or use the button to generate a random one.
  6. Save your seed phrase
    Write down your recovery phrase on paper and verify it. Never store it digitally.
Your Cupcake wallet is ready. The private keys are now safely stored on this isolated device.

Link Cupcake to Cake Wallet

Since Cupcake has no internet access, you need to link it to Cake Wallet on your main phone to see your balance, transaction history, and create new transactions for signing.

📲 On Cupcake (old phone)

  1. Open the Menu
    From the Cupcake home screen, access the side menu.
  2. Select "Link to Cake Wallet"
    A QR code will appear on screen. Keep it displayed for the next step.

🎂 On Cake Wallet (main phone)

  1. Open the Wallets screen
    In Cake Wallet, go to Menu → Wallets or use the button on the bottom bar.
  2. Restore Wallet → Cupcake App
    Select "Restore Wallet", then choose "Cupcake App" as the source.
  3. Scan the QR code
    Scan the QR code displayed on the Cupcake screen.
  4. Name and restore
    Give the wallet a name and tap "Restore".
🔗 Linking complete! Cake Wallet can now display your balance and create transactions. Cupcake remains the only one that can sign them.

How does the separation work?

⚙️ How it works

Cupcake holds the private keys → signs transactions.

Cake Wallet holds the view keys (view keys / public keys) → checks balance, history, and prepares unsigned transactions.

Communication between the two happens exclusively through QR codes, with no network connection between the devices.


Build from Source

Cupcake is an open source project written in Dart (Flutter). Here's how to build it:

# Build native libraries
$ make libs_android_build   # or libs_ios_build
# Alternatively, download pre-built libs
$ make libs_android_download # or libs_ios_download

# Prepare dev signing key (Android only)
$ make prepare_dev

# Build the app
$ make cupcake_android   # or cupcake_ios

The project welcomes new cryptocurrency additions. Simply create a <coin>.dart file in the coins/ directory and add it to coins/list.dart.


Useful Links