Skip to content

Release v3.0.7 — versions update check, mempool validation, native keyshare handling#67

Merged
boldbitcoin merged 8 commits intomainfrom
v3.0.7
Apr 2, 2026
Merged

Release v3.0.7 — versions update check, mempool validation, native keyshare handling#67
boldbitcoin merged 8 commits intomainfrom
v3.0.7

Conversation

@boldbitcoin
Copy link
Copy Markdown
Contributor

Summary

Ships v3.0.7 (build 57): A lightweight “newer release available” check on the loading screen, a tighter handling of the MPC keyshare on the native side and safe check Mempool endpoint configuration. Routine wallet logic prefers non-secret keyshare metadata instead of parsing the full blob in JavaScript, restricting keyshare load-up on native side when doing co-signing operations only.

Keyshare metadata

  • saveKeyshareMetadata / getKeyshareMetadata: persist and read only public fields (committee keys, npub, path-related metadata) via EncryptedStorage + DB mirror.
  • WalletService, Wallet/Home contexts, and pairing flows use metadata where a full secret parse is unnecessary.

Mempool API

  • Validate custom REST base on save (/blocks/tip/hash, timeout).
  • mempoolApiBase: URL normalization, canonical testnet base, resolveStoredMempoolApiBase, and guards so testnet is not misconfigured to mainnet’s default host; helpers for public mirror vs private host behavior.

Security and MPC

  • Signing and sends (mpcSendBTCWithUTXOs, nostrMpcSendBTC, nostrMpcSignPSBT): keyshare / nsec are not passed from JavaScript; native code reads from the same secure storage layout as react-native-encrypted-storage.
  • New native APIs: getKeyshareNostrPrepJSON, mpcSignPSBT (server path), aesEncryptStoredKeyshare — align with “secrets stay native” for Nostr prep and PSBT signing.
  • Removed legacy bridge paths that accepted full keyshare strings from JS (mpcSendBTC, nostrMpcSendBTCWithUTXOs with JS-supplied keyshare).
  • nostrMpcSendBTC: UTXO multi-path only; native loads signing material from storage.
  • iOS: staging buffers for bridge key material zeroed where practical; better handling when keyshare JSON is very large or partially unparsable but nsec can still be recovered.

UX / product

  • Loading screen: GitHub releases check vs installed version, version/build chip, optional update modal, background check once local version is known.
  • Loading screen: error boundary around particle animation for weaker devices.

Engineering

  • transactionListUtils + __tests__/transactionListUtils.test.ts for list sorting and amount helpers.
  • types/keyshare.d.ts (KeyshareMetadata).

Version

Artifact Value
package.json 3.0.7
Android versionCode 57, versionName 3.0.7
iOS build 57, MARKETING_VERSION 3.0.7

Changelog

See CHANGELOG.md[3.0.7] - 2026-04-01.

Testing notes (suggested)

  • Pairing / restore, send (MPC + Nostr paths), PSBT sign, Wallet home sync and settings (custom Mempool URL save on mainnet and testnet).
  • Loading screen: version chip, update modal when a newer GitHub release exists (DEV mode by default sets efficient version as 0.0.0 just for mock test updates.
  • Regression and backward compatibility: installs that only had previous version all cycles passes normally

Copy link
Copy Markdown
Contributor

@kar1timmins kar1timmins left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@boldbitcoin boldbitcoin merged commit c57615a into main Apr 2, 2026
@boldbitcoin boldbitcoin deleted the v3.0.7 branch April 2, 2026 16:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants