Add Cove wallet listing#4759
Conversation
|
Update (2026-06-17) — SSL/TLS re-verified Re-checked the TLS setup today; two corrections to the SSL/TLS note above:
HSTS ( |
|
Status update: pausing this PR until the next stable Cove release. I opened this PR and evaluated Cove against managing-wallets.md (iOS 1.2.x / Android 1.2.x). @crwatkins has been doing an in-depth review on top of that. With v1.3.0 currently in beta, bringing a new onboarding flow plus other improvements, and a v1.4.0 following shortly after, it doesn't make sense to finalize the listing against a version that's about to be replaced. Plan: hold this PR as-is until @praveenperera confirms a stable release that's been fully tested, then re-test the key flows on that version and complete the review (including a Pass/Fail table against the Basic Requirements) before moving toward recommendation. Flagging the status here so it's clear the PR is intentionally paused, not stalled. |
Summary
This PR adds Cove (https://covebitcoinwallet.com) to the wallets list. Cove is an open-source, non-custodial, Bitcoin-only mobile wallet for iOS and Android, developed by Praveen Perera (
@praveenperera) under InfraOps LLC and backed by an OpenSats grant. The project is hosted at https://github.com/bitcoinppl/cove under the MIT license.The wallet is built around a shared Rust core (
bitcoin 0.32.9,bdk_wallet 3.0.0stable) with native iOS (Swift) and Android (Kotlin) frontends. Signing relies on BDK's standardwallet.sign()path on top oflibsecp256k1— no custom cryptography. A full grep acrossrust/,ios/, andandroid/for altcoin identifiers (USDT, Tron, Ethereum, ERC-20, etc.) returns zero matches; the project is Bitcoin-only at the code level, and the Terms & Conditions state this explicitly ("Cove supports only Bitcoin (BTC)").Files changed
_wallets/cove.md— new wallet entry_translations/en.yml— new description (walletcove)img/screenshots/coveios.png— 250×350 px iOS screenshot (optimized withoptipng -o7)img/screenshots/coveandroid.png— 250×350 px Android screenshot (optimized withoptipng -o7)img/wallet/cove.png— 144×144 px icon (optimized withoptipng -o7)Testing
Testing was performed hands-on on both platforms. On iOS, a personal iPhone running the latest App Store release, v1.2.3 (build 7014de36c-67), was used. Confirmations received via email from the project maintainer covered the feature flag decisions (multisig, Lightning, Tor — all "non goals" per the maintainer, none claimed in this listing).
The following was exercised hands-on on iOS:
blockstream.info/api/) and offers Mempool.space as a secondary public option, plus Electrum servers (electrum.blockstream.info,electrum.diynodes.com,mempool.space electrum) and full custom Electrum/Esplora configuration. Bitcoin, Testnet, Testnet4, and Signet are all supported.bc1q…, native SegWit P2WPKH) matches thebech32feature claim, and BIP44 address rotation is enforced via BDK's standardKeychainKind::External/Internalseparation in the Rust core.checkpassfeecontroloverrideand validation choices below.rust/src/fee_client.rs) implements dynamic fee estimation from the configured backend (slow/medium/fast tiers refreshed from mempool data), and the iOS UI exposes a custom fee rate input (ios/Cove/.../SendFlowCustomFeeRateView.swift) accepting manual sat/vByte values. The Send flow was reviewed but no outgoing transaction was performed.managing-wallets.md).security@covebitcoinwallet.comaddress, GitHub private vulnerability reporting, and a PGP key with full fingerprint (72A5 93C0 798F AD2B 9BE3 19DA E134 BCAE A4B7 5DBE).The same flows were then exercised hands-on on a physical Android device using the latest Google Play release, v1.2.5 (build 5373060cf-20):
bc1q…) with the derivation path84'/0'/0'/0/1shown in the UI, confirming BIP84 Native SegWit.managing-wallets.md.Both the iOS and Android frontends share the same Rust core (via
uniffibindings), so the cryptographic surface is identical across platforms.Scoring
The scoring follows the criteria documented in
docs/managing-wallets.md.checkgoodcontrolfull: The user has full exclusive control over private keys. No custodial component. The seed is generated and stored locally; no cosigner is required for spending.checkpassvalidationservers: The wallet uses a pre-populated list of public servers (Blockstream Esplora and Mempool.space by default) with first-class support for pointing at user-operated Electrum or Esplora endpoints. This places it firmly in the "passing" tier for validation per the documented criteria.checkpasstransparencyopensource: Source code is public under MIT, hosted on GitHub under version control, with tagged releases (latest tag at time of writing:v1.2.5; the App Store build used for hands-on testing wasv1.2.3). The codebase has been public for over six months. Reproducible builds are not yet documented, so a "good" rating is not claimed.checkpassenvironmentmobile: Runs in iOS and Android sandboxes with platform-level app isolation.checkpassprivacybasic: BIP44 change-address rotation is enforced via BDK'sKeychainKindseparation. The wallet does not collect analytics or telemetry per the Privacy Policy. A "good" rating is not claimed because the wallet currently lacks native Tor routing.checkpassfeecontroloverride: Dynamic fee estimates (slow/medium/fast) with full manual override via the custom fee rate screen.Privacy sub-criteria
checkpassprivacyaddressrotation: Confirmed in code (BDKKeychainKind::External/Internal) and exercised in the wallet UI during testing.checkfailprivacydisclosurecentralized: The default Esplora/Electrum servers see address queries. This is consistent with the classification used for other listed mobile wallets that rely on remote indexers.checkfailprivacynetworknosupporttor: Tor is not natively supported in the current release. The maintainer has confirmed that a Tor PR is open upstream and is expected to be merged and released in the near future; once shipped in a stable App Store / Play Store version, this flag can be updated in a follow-up PR.Features
bech32 hardware_wallet legacy_addresses segwitbc1q…) receive addresses confirmed in the receive flow and the Google Play description ("Native Segwit").ios/metadata/en-US/description.txt): Coldcard, TAPSIGNER, Krux, Jade, SeedSigner, and Foundation Passport are supported. The Import Hardware Wallet flow (verified in app) exposes four PSBT and descriptor exchange methods: QR Code (BBQr & UR), File, NFC, and Paste.Features explicitly not claimed:
"Taproot wallets are not supported yet"). Bech32m (bc1p) addresses are therefore not generated.managing-wallets.md.Notes
strict-transport-security: max-age=31536000; includeSubDomains; preload, meeting the 1-year minimum required for new listings and eligible for the Chrome HSTS preload list.securityheaders.com, with Content-Security-Policy, Permissions-Policy, Referrer-Policy, Strict-Transport-Security, X-Content-Type-Options, and X-Frame-Options all set.Cargo.lockaudit against the RustSec advisory database (497 unique locked dependencies) returned two findings, both classified as "unmaintained" (paste 1.0.15,bincode 1.3.3) — no CVEs.