Hi @Jnr6, the 7-day discussion period has ended, and your proposal has reached more than 30 likes, meeting the requirement to proceed to the voting stage. When you’re ready, please go ahead and create the voting thread and share the voting link per the DAO process.
Metaforo currently has wallet unbinding disabled, and voting plus vote verification can be handled under the transitional rules, so it is safe to start the vote now.
接下来,作为过渡期协调员,我将使用 CKB DAO Watchdog 进行投票后验证,将 Metaforo 记录的投票权重与链上 Nervos DAO 的存款权重进行交叉核对,并进行人工核查。我将把验证日志提交给委员会,以便最终确认结果是否符合流程要求。
Pocket Node Proposal Voting has now closed
Preliminary outcome: PASSED (Approval: 98.85%, Total voting weight: 87,273,842 CKB).
Next, as the transitional period coordinator, I will run a post-close verification using CKB DAO Watchdog to cross-check Metaforo-recorded voting weights against on-chain Nervos DAO deposit weights, along with a manual check. I will share the verification logs with the committee for final confirmation of whether the result is valid per the process.
Based on the Metaforo tally at close, the outcome is PASSED. Approval is 98.85% with total voting weight 87,273,842 CKB (Yes 86,273,842, No 1,000,000).
Post-close verification has been completed using CKB DAO Watchdog, together with a manual sanity check. The verification cross-checks Metaforo-recorded voting weights against on-chain Nervos DAO deposit weights. In this run, all entries match and there is no indication of weight inflation or double-counting.
Committee confirmation: the proposal is confirmed as PASSED based on the Metaforo tally at close.
The app got rejected from Google playstore because I was trying to deploy it on my personal developer account and google has a policy against that because it’s a cryptocurrency related app.
Setting up a business account takes time, so i will defer that task to the future
What Next
I have the version 1.1.0 and version 1.2.0 on github release already, so the community can try it out and provide early feedback.
I planned on put it on F-Droid also, and work hve already began on that, please try it out and open any issue if you find any.
All six accepted deliverables for M1 have been completed:
#
Deliverable
Status
1
Production mainnet configuration with cell dependencies and bootnode settings
Done
2
BIP39 mnemonic generation with TEE/StrongBox encryption
Done
3
Biometric authentication (fingerprint/face) with PIN fallback
Done
4
Comprehensive mainnet testing with real transactions
Done
5
Open-source repository on GitHub
Done
6
Releases: v1.1.0 (Week 2), v1.2.0 (Week 4)
Done
Feature 1: BIP39 Mnemonic with TEE/StrongBox Encryption
Pocket Node now generates wallets using BIP39 12-word mnemonic seed phrases with CKB’s standard derivation path (m/44'/309'/0'/0/0). The mnemonic and derived private key are encrypted using Android’s Trusted Execution Environment (TEE) or StrongBox hardware security module where available.
What was built:
MnemonicManager — BIP39 mnemonic generation, validation, and BIP32/BIP44 key derivation using the kotlin-bip39 library
MnemonicBackupScreen — 3-step backup flow: display 12 words in a numbered grid (with FLAG_SECURE to prevent screenshots), verify 3 randomly selected words, and success confirmation
MnemonicImportScreen — Recovery flow with word autocomplete from the BIP39 word list and real-time validation
KeyManager upgraded — Mnemonic-aware wallet creation, TEE/StrongBox-backed MasterKey encryption, and support for both mnemonic and raw key wallet types
PRs:#11, #12, #13
Feature 2: Biometric Authentication with PIN Fallback
The app now requires authentication before showing wallet contents. Users authenticate via fingerprint, face recognition, or a 6-digit PIN on devices without biometric hardware.
What was built:
AuthManager — Detects biometric hardware availability and enrollment status using BiometricManager
PinManager — PIN hashing with Blake2b + per-device salt, 5-attempt lockout with 30-second cooldown
AuthScreen — Automatically triggers BiometricPrompt on launch with manual retry and PIN fallback
PinEntryScreen — 6-digit PIN pad with dot indicators, shake animation on wrong entry, lockout timer display
SecuritySettingsScreen — Toggle biometric auth, set/change PIN, view security status
PIN re-verification required before changing security settings
PRs:#15, #16, #21
Feature 3: Mainnet Production Hardening
The wallet has been hardened for real CKB mainnet transactions with proper validation, error handling, and release configuration.
What was built:
NetworkValidator — Validates address-network consistency (rejects ckt testnet addresses on mainnet and vice versa)
Testnet support with network switching — users can toggle between mainnet and testnet, each with isolated data directories and configurations
Release signing and R8 minification configured
ProGuard rules for CKB SDK, BouncyCastle, secp256k1, and Room entities
UI/UX redesign to Material 3 standards with the Nervos team’s feedback incorporated
PRs:#20, #25, #42, #43, #44
Additional Work (Beyond Spec)
Several improvements were shipped beyond the original M1 scope:
Room database caching (Phase 1 & 2) : Transaction history and balance caching with transactions, balance_cache, header_cache, and dao_cells tables for offline-first performance (#49, #50)
CKB/USD price feed : Live CKB price from CoinGecko displayed on the home screen
Test coverage expansion : 232 unit tests covering JNI models, Extensions utilities, TransactionBuilder, TransactionRecord, DAO models, and more (#47, #52)
Sync mode selector after import : Users choose their sync depth (Recent, Full History, Custom) when importing a wallet (#41)
Website : Landing page for the project at the repo’s GitHub Pages