Skip to content

qubic/wallet-app

Repository files navigation

Qubic Wallet

An official self-custody wallet for the Qubic Network, empowering users to securely hold and manage their QUBIC tokens and assets locally on their device — no third-party custody.


About


Supported Platforms

  • iOS – Available in the App Store
  • Android – Available in the Play Store
  • macOS – Available in the Releases
  • Windows – Build from source code
  • Linux – Build from source code

Features

Core Functionality

  • Multi-account – Add and manage multiple accounts
  • Transfers – Send and receive QUBIC
  • Manual resend – Retry failed transfers
  • Blockchain Explorer – View complete ticks, transactions, and account details
  • Assets – View tokens and Smart Contract shares in your accounts
  • Asset transfers – Send and receive tokens or Smart Contract shares
  • WalletConnect support – Connect with dApps
  • Support multiple networks – Switch between predefined networks (mainnet, testnet) or add a custom RPC and explorer URL

Security & Privacy

  • Local-only key storage – Private keys never leave the device
  • Biometric authentication – Fingerprint, Face ID, or password protection for seed access and transaction execution

Functional Information

1. Wallet Creation

The wallet app supports:

  • New empty wallets – Start fresh
  • Import from vault file – Load an existing encrypted wallet backup

You can add accounts to a wallet by:

  • Generating a new account – Creates a new key pair and stores it securely
  • Importing by private seed – Restore access to an existing account
  • Adding a watch-only account – View balances using a public address (no transactions allowed)

2. Transactions & Asset Transfers

  • Qubic transfers have 0 fees
  • Asset transfers are performed via smart contract execution and cost 100 QU
  • Qubic currently does not have a transaction memory pool (WIP). Because of this, only one concurrent transaction per sending account can exist in the network. Do not send a new transaction from the same source address until the previous transaction's target tick has passed. If multiple transactions are sent before that tick, only the last one will be processed — earlier ones will be ignored and the app will display them as failed once it knows the tick execution is completed.

3. WalletConnect Integration

  • Works with dApps via QR codes or deep links
  • Supports:
    • Session creation
    • Transaction signing
    • Message signing
  • Sample integration: qubic/wallet-app-dapp
  • Security note: A WalletConnect session grants the dApp access to all accounts in the wallet.
    • dApps should implement account selection UI for each transaction or signing request.

4. Vault Import & Export

  • Vault files contain encrypted wallets and keys for backup/migration
  • Encrypted with AES-256 using a password provided by the user
  • Minimum password length: 8 characters (no recovery possible if forgotten)
  • When exporting, the vault password can be the same as or different from the wallet password
  • Vaults can also be imported into the Qubic Web Wallet

RPC Communication

Qubic Wallet interacts with the network using the following RPC endpoints:

RPC Type Purpose Documentation
Live RPC Sends transactions and retrieves the latest blockchain data in real-time (ticks, account balances, unconfirmed transactions). https://qubic.github.io/integration/Partners/qubic-rpc-doc.html?urls.primaryName=Qubic%20RPC%20Live%20Tree
Stats RPC Provides network statistics, supply data, validator lists, and performance metrics. https://qubic.github.io/integration/Partners/qubic-rpc-doc.html?urls.primaryName=Qubic%20Stats%20API
Archiver RPC Allows access to historical blockchain data — older ticks, past transactions, and archived account states. https://qubic.github.io/integration/Partners/qubic-rpc-doc.html?urls.primaryName=Qubic%20RPC%20Archive%20Tree

The wallet automatically routes requests to the appropriate RPC type depending on the feature in use.
For example:

  • Sending a transaction → Live RPC
  • Viewing latest balances → Live RPC
  • Checking historical transactions → Archiver RPC
  • Displaying market data → Stats RPC

RPC Security: All communication is performed over TLS.
Note: Certificate pinning is not currently implemented.


Cryptography Implementation

Qubic Wallet uses ts-library-wrapper, which packages the core Qubic TypeScript cryptographic library for use across:

  • Desktop platforms (Windows, Linux, macOS)
  • Packaged web environments

All cryptographic operations — including key generation, signing, and verification — are performed by the ts-library.
The wrapper ensures compatibility and consistent cryptographic handling across all supported platforms.


Data Storage

Qubic Wallet stores all sensitive data — including private keys — exclusively in secure, platform-native keystores:

  • Mobile (iOS / Android) → Stored in OS-provided secure storage (Keychain / Keystore)
  • Desktop → Encrypted and stored locally using platform-specific secure storage APIs
  • Web → Encrypted in browser storage with keys derived from the user’s password (never stored in plain text)

Important:

  • Private keys never leave the device.
  • There is no remote backup or recovery — users must securely store their vault export.
  • The vault export file is encrypted with AES-256 using the password provided by the user.

DApp Explorer

  • Loads DApp metadata from JSON files stored in the qubic/dapps-explorer repository.
  • Presents a curated catalog of DApps, but also lets users open any DApp by URL, even if it’s not in the catalog.
  • Supports WalletConnect, allowing DApps to request account information and ask the user to sign transactions/messages.

Testing Coverage

There are currently no automated unit or integration tests.


Building & Compiling

Prerequisites

To build Qubic Wallet, you will need:

  • Flutter SDK (3.22.2 or later)

  • Dart SDK (included with Flutter)

  • Platform-specific tools:

    • Android: Android Studio with Android SDK tools installed
    • iOS: Xcode, CocoaPods, and an active Apple Developer account
    • macOS: Xcode and macOS 12 or later
    • Windows: Windows 10 or later with Visual Studio (Desktop Development with C++ workload)

Step 1: Clone the Repository

git clone https://github.com/qubic/wallet-app.git
cd wallet-app

Step 2: Install Dependencies

flutter pub get

Step 3: Run in Development Mode

# Android
flutter run android

# iOS
flutter run ios

# macOS
flutter run macos

# Windows
flutter run windows

Step 4: Build for Release

Android (APK):

flutter build apk --release

Android (App Bundle):

flutter build appbundle --release

iOS:

flutter build ios --release

macOS:

flutter build macos --release

Windows:

flutter build windows --release

Limited Support & Contributions

We do not provide direct support in all cases.
However, your contributions to the project are very welcome and appreciated.

You can help by:

  • Adding new issues on the Issues page to report bugs or request new features/improvements.
  • Providing updates, bug fixes, or other code changes via pull requests.

License

See LICENSE.md.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published