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.
- Source Code: Written in Dart with Flutter
- Learn More: Qubic Documentation
- Community: Join us on Discord
- Tutorials:
- 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
- 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
- Local-only key storage – Private keys never leave the device
- Biometric authentication – Fingerprint, Face ID, or password protection for seed access and transaction execution
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)
- 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.
- 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.
- 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
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.
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.
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.
- Loads DApp metadata from JSON files stored in the
qubic/dapps-explorerrepository. - 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.
There are currently no automated unit or integration tests.
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)
git clone https://github.com/qubic/wallet-app.git
cd wallet-appflutter pub get# Android
flutter run android
# iOS
flutter run ios
# macOS
flutter run macos
# Windows
flutter run windowsAndroid (APK):
flutter build apk --releaseAndroid (App Bundle):
flutter build appbundle --releaseiOS:
flutter build ios --releasemacOS:
flutter build macos --releaseWindows:
flutter build windows --releaseWe 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.
See LICENSE.md.