Important
Lab Project — This is an experimental/research project and is not intended for production use. Use at your own risk. Do not use with significant funds.
A cross-platform mobile wallet for the Qubic network, built with .NET MAUI Blazor Hybrid.
- Vault Management — Encrypted vault with multiple seeds, contacts address book, import/export, biometric unlock (fingerprint/face)
- Networks — Switch between Mainnet, a local AIO Dev Kit and your own networks (More → Networks); each network uses Bob, RPC and/or direct node connections, chosen per operation, with no silent fallback to other servers (guide)
- Signing review — Every signature shows the network, the decoded contract call, the target tick and warnings (replay risk across networks, public dev keys on Mainnet) before anything is signed (guide)
- Send QU — Transfer QU tokens with transaction tracking, auto-resend, a fixed tick offset or "execute in ~N seconds", and pasted
qubic:payment links - Receive / QR Code — Generate and share QR codes for your wallet address, or a payment request with amount and message
- Asset Management — View owned assets with details and transfer capability
- DeFi Hub — Access QEarn staking, QSwap, MSVault multi-sig, and QX exchange
- Transaction History — Merged view of tracked and synced transactions with status badges, filters, and pagination
- Log Events — Browse synced log events (transfers, asset operations, contract messages) with type filters
- Sync Manager — Real-time sync status, stream diagnostics, database stats, and watermark management
- QR Scanner — Native camera-based QR scanning on all address input fields
- Settings — Network profiles, transaction parameters, data import/export
- Optional features (More → Features, all off by default): Developer tools with dev accounts, faucet and Contract Console; Sign-In with Qubic; WalletConnect with QR pairing (guide)
Developing on a local testnet? See the AIO tutorial. On the emulator use host 10.0.2.2; on a USB phone run adb reverse tcp:40420 tcp:40420 && adb reverse tcp:41841 tcp:41841.
The app uses a Blazor Hybrid approach: native MAUI shell with a BlazorWebView rendering the UI. All business logic lives in the shared Qubic.Services library (included as a git submodule), which is the same codebase used by the desktop wallet.
Qubic.Net.Wallet.Mobile/
├── Components/
│ ├── Layout/ # MobileLayout (nav bar, tab bar)
│ ├── Pages/ # Blazor pages (Home, Send, Assets, DeFi, Vault, ...)
│ └── Shared/ # Reusable components (AddressInput, ConfirmModal, ...)
├── Services/ # Mobile-specific services (QrScannerService)
├── Pages/ # Native MAUI pages (ScanPage for camera)
├── Platforms/android/ # Android manifest, MainActivity
├── Resources/ # App icon, splash screen, fonts
├── wwwroot/ # Static assets (CSS, JS, SVG logos)
└── deps/Qubic.Net/ # Git submodule → shared library
| Package | Purpose |
|---|---|
Microsoft.Maui.Controls |
.NET MAUI framework |
Microsoft.AspNetCore.Components.WebView.Maui |
Blazor Hybrid WebView |
Oscore.Maui.Biometric |
Fingerprint/face authentication |
BarcodeScanning.Native.Maui |
Native QR code scanning (ML Kit) |
QRCoder |
QR code generation |
SQLitePCLRaw.bundle_e_sqlcipher |
Encrypted SQLite storage |
- .NET 10 SDK with the
maui-androidworkload (dotnet workload install maui-android) - Android SDK (API 24+, build tools for API 35)
- Java 11 JDK
dotnet publish -f net10.0-android -c ReleaseThe signed APK is output to:
bin/Release/net10.0-android/publish/org.qubic.lab.wallet-Signed.apk
adb install -r bin/Release/net10.0-android/publish/org.qubic.lab.wallet-Signed.apkThe shared library is a git submodule. After cloning, initialize it:
git submodule update --init --recursive