Add Nunchuk wallet listing#4760
Conversation
Adds Nunchuk wallet (https://nunchuk.io) covering iOS, Android, and Desktop (Windows/Mac/Linux). Coordinated with Hugo Nguyen (Nunchuk Inc CEO) via email. iOS included with closed-source transparency mark per developer preference; libnunchuk core is shared and open source across all platforms.
Listing scope reduced to Android and Desktop per coordination with the developer. Privacy score adjusted from 'good' to 'pass' on both platforms to reflect that the default Electrum server (mainnet.nunchuk.io) sees address queries; users can mitigate by pointing at user-operated Electrum or own-node setups.
Aligns with schema and with precedent from other Electrum-based wallets in the repo (Electrum, Mycelium, Edgewallet). The 'pass basic' classification reflects that Nunchuk satisfies the address-rotation requirement of the 'passing' Privacy criterion in managing-wallets.md, while the default Electrum server (mainnet.nunchuk.io) sees address queries by default.
Removes the Android entry from the wallet file and the now-unused mobile screenshot. The listing scope is reduced to the Desktop platforms (Windows, Mac, Linux), which is the only platform with hands-on testing in this submission. Android may be considered in a follow-up PR if direct testing becomes feasible.
Adds the Android entry (Google Play, github.com/nunchuk-io/nunchuk-android) with a 250x350 screenshot, and adds the taproot feature to both the Android and Desktop entries. Both platforms were exercised hands-on: Android on v2.5.3 (single-sig hot wallet creation, BIP39 seed backup and restore cycle, real on-chain receipt, bech32 and Taproot bc1p address generation, automatic address rotation), and Desktop on v2.5.0. Taproot is offered as a selectable address type on wallet creation on both platforms, generating Bech32m (bc1p) addresses.
f743b06 to
5dc73e1
Compare
|
Update: the PR now also covers Android (in addition to Desktop), and adds the taproot feature to both platforms. Android (v2.5.3) was tested hands-on: hot wallet creation, BIP39 seed backup and restore cycle with real funds, on-chain receipt (22 confirmations), bech32 and Taproot (bc1p) address generation, and automatic address rotation. The branch was rebased onto current master and the description has been updated accordingly. |
Nunchuk — Review for bitcoin.org listingWallet: Nunchuk SummaryNunchuk is an open-source, self-custodial Bitcoin wallet focused on multisig and collaborative custody. It is available on Desktop (Windows, Mac, Linux) and Android, and is built around This review is based on hands-on testing of the Desktop client (v2.5.0) and the Android client (v2.5.3, build 330), combined with source-code verification of Recommend listing under Mobile (Android) + Desktop (Windows, Mac, Linux), Level 2. Level 2 follows repository precedent: multisig-capable self-custodial wallets are listed at Level 2 (e.g. Sparrow, with the same feature set; also Electrum, Green, Coldcard, Jade, and others). Level 3 is reserved for hybrid/custodial cases. Level 1 is for full nodes that validate blocks by default, which Nunchuk does not. Platform notesNunchuk's wallet logic, key handling, signing, and storage live in
Both clients were exercised hands-on. Nunchuk released v2.6.0 on both platforms during the review window (Android ArchitectureNunchuk is self-custodial and on-chain only. The user holds a BIP39 seed; there is no custodial component in the standard product.
Basic RequirementsItem numbering is the reviewer's, for organization only; it does not correspond to any numbering in
Score decisions# Android: environment = checkpassenvironmentmobile
# Desktop: environment = checkfailenvironmentdesktop
# all other scores identical across both platforms
check:
control: "checkgoodcontrolfull"
validation: "checkpassvalidationservers"
transparency: "checkpasstransparencyopensource"
environment: "checkpassenvironmentmobile" # desktop: checkfailenvironmentdesktop
privacy: "checkpassprivacybasic"
fees: "checkgoodfeecontrolfull"
privacycheck:
privacyaddressreuse: "checkpassprivacyaddressrotation"
privacydisclosure: "checkfailprivacydisclosurespv"
privacynetwork: "checkpassprivacynetworksupporttorproxy"Justifications
Features
Not claimed: lightning (verified absent in Items not verified in this reviewFor full transparency:
Final statusAll applicable Basic Requirements are met, with one item flagged for maintainer decision:
Scoring, features, and assets are documented above. Listing recommended under Mobile (Android) + Desktop, Level 2. |
Summary
This PR adds Nunchuk (https://nunchuk.io) to the wallets list, covering both Android and Desktop. Nunchuk is an open-source, self-custodial Bitcoin wallet focused on multisig and collaborative custody, developed by Nunchuk Inc (Delaware, US) and led by Hugo Nguyen. The Android client is at https://github.com/nunchuk-io/nunchuk-android and the Desktop client at https://github.com/nunchuk-io/nunchuk-desktop, both under GPL-3.0.
The wallet is built around
libnunchuk, a C++ library that reuses Bitcoin Core directly as a git submodule (contrib/bitcoin→github.com/bitcoin/bitcoin, pinned at commitaf78d36). Signing uses libsecp256k1 (vendored through the Bitcoin Core submodule), which implements deterministic ECDSA nonces (RFC 6979) by specification.Files changed
_wallets/nunchuk.md— new wallet entry covering Android and Desktop (Windows, Mac, Linux)_translations/en.yml— new description (walletnunchuk)img/screenshots/nunchukandroid.png— 250×350 px Android screenshot (optimized withoptipng -o7)img/screenshots/nunchukdesktop.png— 250×350 px Desktop screenshot (optimized withoptipng -o7)img/wallet/nunchuk.png— 144×144 px icon (optimized withoptipng -o7)Testing
Both platforms were exercised hands-on. Tested versions were Android v2.5.3 (build 330) and Desktop v2.5.0. Nunchuk released v2.6.0 on both platforms during the review window (Android
android.2.6.0on 2026-06-17, Desktop2.6.0on 2026-06-22); the behaviors documented here are structural — they derive from the sharedlibnunchukC++ core that backs both clients — and are not specific to the patch version tested.Android (v2.5.3, build 330, from Google Play)
bc1q…) receive address was generated. A separate Taproot wallet was also created, generating a Bech32m (bc1p…) address — Taproot is offered as a selectable address type on the wallet creation screen, alongside Native SegWit.mainnet.nunchuk.io, with testnet, signet, custom Electrum server, and own-node support), Fee (Economy/Standard/Priority, Anti-Fee Sniping, automatic fee selection), Security (PIN and biometric), Display, Developer.Desktop (v2.5.0, from GitHub releases)
m/84h/0h/0h) is the default, confirmed in Wallet Config, with master key fingerprint shown. Taproot is also offered as a selectable address type on wallet creation.mainnet.nunchuk.iodefault, testnet/signet, custom Electrum server, Bitcoin Core node, custom SSL, TOR proxy), Fee (Economy/Standard/Priority, Anti-Fee Sniping, automatic fee), Hardware driver (Custom HWI Driver), Database Encryption (opt-in, passphrase-protected — see Notes), Developer.GPG signing infrastructure for releases is documented at
nunchuk-io/docs/build_instructions.mdwith release key0x8C8ECD3F660CA53CD878792A6E38A462ED2EF525. Send flow was not exercised (receive-only testing). Hardware wallet integration UI is present but was not tested with a physical device.Scoring
Scoring follows
docs/managing-wallets.md. Both platforms share the same scores except Environment.checkgoodcontrolfull: Full exclusive control over private keys; no custodial component in the standard product.checkpassvalidationservers: Defaults to an Electrum server, with support for user-operated Electrum servers or a Bitcoin Core node.checkpasstransparencyopensource: Source public under GPL-3.0, version-controlled with tagged releases (53 on Desktop, 74 on Android as of 2026-06-24), public since 2021 (Desktop) / 2022 (Android) — well beyond the 6-month minimum. Reproducible-build infrastructure exists; deterministic verification of the current line was not performed in this review, so the score is kept at the open-source tier rather than the deterministic tier.checkpassenvironmentmobile; Desktopcheckfailenvironmentdesktop: Android provides app isolation; desktop environments do not.checkpassprivacybasic: BIP32 HD address rotation, exercised hands-on in the receive flow (fresh address generated after use). SOCKS5 proxy support allows Tor routing. The default Electrum server (mainnet.nunchuk.io) sees address queries; users can point at their own Electrum server or node to mitigate this.checkgoodfeecontrolfull: Economy/Standard/Priority tiers, Anti-Fee Sniping, automatic fee for multi-policy transactions.Privacy sub-criteria
checkpassprivacyaddressrotation: Exercised hands-on; the app rotates to a fresh address after one is funded.checkfailprivacydisclosurespv: The default Electrum server is operated by Nunchuk Inc; mitigable via own server or node.checkpassprivacynetworksupporttorproxy: SOCKS5 proxy support in libnunchuk's Electrum client.Features
bech32 hardware_wallet legacy_addresses multisig segwit taprootbc1q…), confirmed in receive flow on both platforms.AddressTypeenum (include/nunchuk.h:LEGACY), available as a selectable address type.bc1p…) addresses. Verified hands-on on Android by creating a Taproot wallet and generating abc1paddress; confirmed in code via theAddressType::TAPROOTenum andis_taproot()/is_support_taproot()methods ininclude/nunchuk.h.trezor-firmwaresubmodule) and Tapsigner support via thetap-protocolsubmodule; Trezor is a bitcoin.org-listed hardware wallet.Features explicitly not claimed:
lightning/bolt11/payment_requestreferences insrc/orinclude/) and in the UI. On-chain only.BackendType::CORERPC,corerpc_host/port/...insrc/dto/appsettings.cpp), in addition to the default Electrum backend (ElectrumSynchronizer). In both modes it is a client of the backend and does not maintain a local blockchain representation of its own.Notes
nunchuk.ioservesStrict-Transport-Security: max-age=63072000; includeSubDomains; preload(verified 2026-06-24), exceeding the 1-year minimum and eligible for browser preload.TLS_AES_256_GCM_SHA384, Google Trust Services certificate.frame-ancestors 'none'), HSTS,X-Frame-Options: DENY, andX-Content-Type-Options: nosniffare present;Referrer-PolicyandPermissions-Policyare not set.0x8C8ECD3F660CA53CD878792A6E38A462ED2EF525; verification documented innunchuk-io/docs/build_instructions.md.libnunchukpinscontrib/bitcoinat commitaf78d36(post-v30.0 master), verified viagit ls-tree HEAD contrib/bitcoin. libsecp256k1 is vendored through this submodule.enableDatabaseEncryption→nunchukSetPassphrase→NunchukStorage::SetPassphrase, and the storage layer uses SQLCipher (#include <sqlcipher/sqlite3.h>,sqlite3_key()/sqlcipher_export()insrc/storage/db.cpp). No explicit cipherPRAGMAis set, so SQLCipher's default configuration is used (AES-256). This feature is opt-in, not enabled by default.docs/managing-wallets.mdlists "encrypt the wallet by default on desktop" among the basic requirements for desktop wallets. Nunchuk therefore provides standards-based encryption, but not by default. This note is included for review, and whether the opt-in approach satisfies the criterion is left to the bitcoin.org review process.