Date: 2026-08-02
Type: UX Research + Technical Architecture
Status: Implemented (August 2-3, 2026)
Phase: Phase 0 - Wallet UI Enhancement
Goal: Research how production BCH wallets handle multiple wallet/account management to inform Asgayaβs wallet switching UI design.
Key Findings:
m/44'/145'/account') for multiple wallets from single seedAsgaya Implementation:
Status: β Implemented August 2-3, 2026. Multi-wallet switching working with instant balance updates.
See: Wallet Component for complete implementation documentation.
Problem: Asgaya needs multi-wallet switching to enable:
Research Question: How do production BCH wallets implement multi-wallet/account management, and what UX patterns work best?
Sources:
Standard Hierarchy:
m / purpose' / coin_type' / account' / change / address_index
For Bitcoin Cash:
m / 44' / 145' / account' / 0 / 0
ββBCHβββ ββaccountββ
Account Switching:
m/44'/145'/0'/0/0 (default wallet)m/44'/145'/1'/0/0 (second wallet)m/44'/145'/2'/0/0 (third wallet)Key Benefit: Single seed phrase recovers ALL accounts. User can switch between wallets while maintaining single backup.
Sources:
MetaMask Mobile Pattern:
βββββββββββββββββββββββββββββββββββ
β [β°] Account 1 βΌ [βοΈ] β β Tap to open selector
β ββSelectorββ β
βββββββββββββββββββββββββββββββββββ€
β Balance: 0.5 ETH β
β β $1,234.56 β
βββββββββββββββββββββββββββββββββββ
Trust Wallet Pattern:
βββββββββββββββββββββββββββββββββββ
β πΌ My Wallets βΌ β β Wallet selector
βββββββββββββββββββββββββββββββββββ€
β Balance: $1,234.56 β
βββββββββββββββββββββββββββββββββββ
Common UX Principles:
Source: Bitcoin.com Wallet GitHub
Key Architecture:
m/44'/coin'/account')Multi-Wallet Implementation:
Key Insight: Uses Bitcore Wallet Service as abstraction layer between app and blockchain, enabling clean separation of wallet logic from UI.
Key Management:
Storage Options Evaluated:
Option A: HD Wallet Only
Option B: Imported Keys Only
Option C: Hybrid (RECOMMENDED & IMPLEMENTED)
Data Model:
sealed class WalletSource {
data class HDDerived(val accountIndex: Int) // From BIP39 seed (Phase 1+)
data class ImportedKey(val wif: String) // From covenant-params (Phase 0)
}
data class Wallet(
val id: String,
val label: String,
val role: WalletRole, // SENDER, RECIPIENT, MERCHANT
val source: WalletSource,
val address: String,
val publicKey: String,
val isActive: Boolean = false
)
Benefits:
Asgaya Wallet Selector:
βββββββββββββββββββββββββββββββββββ
β [β°] Asgaya πΌ Sender βΌ [βοΈ] β β Tap to switch
β βββββββ β
βββββββββββββββββββββββββββββββββββ€
β Balance: 0.05234 BCH β
β β β¬52.34 β
βββββββββββββββββββββββββββββββββββ
Selector Dialog:
βββββββββββββββββββββββββββββββββββ
β Select Wallet β
βββββββββββββββββββββββββββββββββββ€
β β π€ Sender β β Active (checkmark)
β bchtest:qrw5nu... β
β 0.052 BCH β
β β
β π₯ Recipient (Isabel) β
β bchtest:qq2uxg... β
β 0.007 BCH β
β β
β πͺ Merchant (Bob) β
β bchtest:qz4lla... β
β 0.000 BCH β
βββββββββββββββββββββββββββββββββββ
Role Icons:
Note: Role labels are testing convenience only, not enforced. Production users can label wallets however they want (βMerchant hot walletβ, βPersonal savingsβ, βBCH seller fundingβ, etc.)
Covenant Claim Test (All on One Device):
1. Switch to "Sender" wallet πΌ
2. Fund covenant with 0.00749 BCH
3. Send Telegram notification
4. Switch to "Recipient (Isabel)" wallet πΌ
5. Tap "Claim Now" β WebView executes claim
6. Success! Balance updates instantly
Impact: Complete covenant testing on single device with instant role switching. Development velocity increased significantly.
Immediate Benefits (Phase 0):
Long-term Benefits (Phase 1+):
Security Considerations:
Option 1: Separate Apps
Option 2: Contact-Based Switching (No Real Wallets)
Option 3: HD Wallet ONLY
Option 4: Imported Keys ONLY
Option 5: Hybrid (HD + Imported) β IMPLEMENTED
Wallet Architecture:
BIP Standards:
UX Patterns:
Bitcoin Cash Specifics:
Implementation:
User Journeys:
Design Decisions:
Status: β
Research Complete β Implementation Complete (August 2-3, 2026)
Implementation Time: ~90 minutes (as estimated)
Result: Multi-wallet switching working with instant balance updates, 3 pre-seeded test wallets