Releases: minibits-cash/minibits_wallet
v0.1.10-beta
This native update brings sole but important architectural change: all Nostr wallet (NWC) commands are now processed using Android's foreground service. That should help to minimize issues with interrupted nwc transactions. You might even see the NWC command being processed in the status bar!
Get it now on Google Play or as an .apk from our Github.
Video.Project.mp4
v0.1.9-beta (fix.19)
New Minibits Wallet v0.1.9 has been released!
What's new?
Significant performance improvements for cryptographic operations
Minibits now uses native implementations for cryptographic functions instead of JavaScript. The time to convert mnemonic phrase to seed has been reduced from 8 seconds to less than 100ms, offering a boost in performance when recovering wallet address or funds.
Redesigned main wallet screen
The main wallet screen has been redesigned to include fiat exchange rates and an overview of NWC limits.
Theme support with a brand-new Golden theme
You can now switch themes in the Settings, with the new Golden theme as an option.
Ecash storage reliability and stability improvements
Minibits has improved the reliability and performance of local ecash storage, especially for wallets with a large number of ecash notes (thousands). This update ensures a more resilient and efficient experience.
Fix.19 New wallet recovery tool
You can now move your ecash, mints and contacts to another device thank to new wallet backup export and import.
Important upgrade notes:
It is highly recommended to maintain a minimal balance in the wallet before upgrading!
The upgrade involves heavy migration of the storage system. The first launch after upgrading may take longer than usual—please do not close the app until it finishes. If your balance shows as zero after the first start, simply restart the app, and your balance should reappear.
Notable bug fixes and UI/platform updates:
- Critical fix for disappearing balances when the input for a send transaction contains an already spent proof
- Fix for sending to Lightning addresses from USD/EUR mints
- NWC connection strings now contain a single relay for better compatibility
- Many smaller fixes and UI enhancements
- Upgrade to React Native 0.75
v0.1.8-beta
With v0.1.8-beta new Minibits architecture for receiving zaps and all lightning payments to minibits.cash addresses comes out.
Realtime encrypted notifications, claim ⚡sats on wallet start 🚀
Current implementation over nostr relays has few serious set backs:
- communication through relays is slow when receiving many zaps at once
- notifications shown are local, triggerred only when the app is in the foreground so missing primary use case
- very difficult to keep websocket connection stable on mobile device
So what is coming in v0.1.8-beta:
- optional push notifications delivered even app is closed / backgrounded (off by default for new installs, enable in Settings!)
- firebase messaging is used only as a data carrier. Notification shown is constructed only on device
- all data encrypted to keys living on device only
- ecash is never sent through notification, it is claimed by wallet on wakeup using api sending all claimable tokens as a batch over TLS, with tokens encrypted to device keys again, so that MITM or some api auth leak won't leak your ecash to an attacker
- claiming fully works without notifications enabled.
What's new apart from notifications:
- more logical navigation to Send / Receive based on user feedback from v0.1.7-beta giving choice to transact ecash or lightning
- new recovery tool to recover wallet address only from Settings for cases, where balance recovery is not necessary, such as moving wallet to new device
v0.1.7-beta
New native release of Minibits wallet is out! Minibits now supports multiple currency units issued by mints. With this change, wallet adapted heavily its UX and navigation:
What's Changed
- Wallet paged screen is now organized by units, not by mints. Last visited unit is remembered and shown on next start.
- Lighnting (topup and transfer) transactions are initiated in selected mint context (you can still change your mind and select another mint before submitting transaction)
- Send and Receive bottom buttons now handle Ecash transactions (could be further adapted based on feedback)
- Mint balances colors are now not random but aligned to currency units
- Selected mint, unit and balance is shown in header when making a new transaction
- Lightning and ecash transactions have been redesigned
- UI of completed transactions screens were redesigned and aligned
- Donation UX has been improved (and donation for custom lightning address increased to whooping 500 sats)
- Mint information kept by the wallet can be now refreshed, e.g. in case the mint lists new currency
- Nostr relays can be re-subscribed to using new button on Relays screen header
- Transactions moved to own bottom tab
- Wallet profile and address is accessible from wallet screen and address can be copied
- In-progress preparation for full support of i18n translations
- Overall upgrade of used libraries and React Native version
- Wallet now fully uses v1 Cashu API specification when talking to the mints
Attention
- Before upgrading make sure you made a backup of your mnemonic phrase
- Updating includes one-time migration of data model and reset of recovery indexes because of cryptographic changes. In order to keep recovery using mnemonic phrase working, balance remaining in the wallet during upgrade should be sent to yourself or through another wallet (in a fact swapped by the mint for fresh Ecash). To avoid unnecessary risks, you can empty balance before upgrading and then move it back again.
What's missing
- Internal Tor daemon had to be removed because of incompatibility with newer platform versions. Help to make it work from someone with deep java / android skills would be appreciated
- Signing of APK binaries (to be done soon)
How to install
For those using Google Play Store, download Google Play release
For all others, there are now platform-specific APKs that have much smaller size to download. Universal APK remain available.
Special thanks to contributors
https://github.com/deerwhisper2310
https://github.com/KraXen72
Full Changelog: v0.1.6-beta.31...v0.1.7-beta.5
v0.1.6-beta
This release contains multiple changes and critical bugfixes released in the past weeks in multiple 0.1.5-beta over the air updates. Release equals functionally to v0.1.5-beta.37 version.
However, for all users of .apk package it is highly recommended to update as the new over the air updates will target 0.1.6.-beta version number and thus won't be delivered to older .apk installs
List of packaged changes comapred to the last v0.1.5-beta native release:
- Recover from failed splits, mint info screen
- Public mint names, fix update screen navigation
- Fix failed auth causing wallet state loss
- Cache tx per each mint, profile create fallback
- Fix 29 - recovery seed phrase not parsed if pasted
- Fix glitch on app load, show own note in contacts
- Fix lightning address validation
- Upgrade cashu-ts lib, improved zaps (fixed)
- Improve event handling, better warn on mint delete
- Fix receive error handling
- Fix own Nostr address, move it to Privacy settings
- Critical: pessimistic lock on recovery indexes
If your device has Google Play Services, you can install smaller application bundle optimized for your device architecture:
Google Play release
v0.1.5-beta
Minibits comes with seed-based backup, that allows you (in cooperation with the mint) to recover your ecash balance in case of device loss.
How does the recovery work if the mint does not keep any context for particular wallet? Wizardery is achieved via ecash (blinded messages) created using so called deterministic secrets - where normal ecash uses random secret to be created by the wallet and (after blinding) sent to the mint that signs it, in this case, ecash secret is created using special derivation path that includes serial index incremented for each ecash note.
In case of device loss, new wallet is able to pre-generate bulks of ecash notes and provide them as blinded messages to the mint. If the mint tracks the same notes as issued, it re-signs the messages and returns them back to the wallet, that allows the wallet to effectively recreate lost ecash balance.
Find the detailed description here: https://det-sec.gandlaf.com/
How to backup?
Go to Settings > Backup and Restore > Off-device backup and copy the 12 words mnemonic and save it outside of the device.
What are the limitations?
After upgrade, existing balance is NOT automatically backed up (as it was created using random secrets). To kick-off the backup, existing balance needs to be sent and received. Easiest way is to send/share ecash, copy the generated token and then receive it immediately by pasting back to the same wallet.
Working backup is apparent by going to Settings > Manage mints and tap on any mint. At the bottom of the shown modal windw, Current recovery index is shown and should have above zero value.
How to test the recovery?
- Test only with low amounts or with your own mint
- Copy the 12 words mnemonic and existing mints URLs
- Factory reset existing wallet (Settings > Developer options > Factory reset)
- Start the wallet again and after intro slides, choose Wallet recovery
- Paste the mnemonic, add mint(s) URLs to recover from and Start recovery. You will see the progress and any recovered balance. In case of wallets with longer history, repeat the recovery for higer recovery index intervals to get to unspent ecash.
- Try to send and received recovered ecash. If you'll get errors, please turn on logging in Privacy settings and set log level to debug in Developer options and replay the transaction leading to the error + raise an issue on Minibits Github https://github.com/minibits-cash/minibits_wallet
What are the limitations?
Recovery currently works only for keysets currently used by the mint, not for the past ones rolled out by the mint. This will be implemented later.
v0.1.4-beta
This release re-aligns .apk releases with Google Play releases. Because of prolonged approval times, app version with Tor daemon has been so far available for download only as a standalone .apk release on Github. Now that it is available on Google Play Store, versions and features of both releases are identical once again.
This release packages multiple bug fixes and feature improvements that were released using over-the-air updates in the meantime:
- Privacy setting to turn on or off error logging
- Set log levels in developer settings
- New payment requests UI
v0.1.3-tor.2-beta
Release contains a fix to allow connections to the mints behind Tor using .onion addressed over cleartext HTTP.
v0.1.3-beta
New Minibits wallet version focused on interoperability and privacy:
Minibits v0.1.3-beta now becomes full member of Lightning ecosystem:
- Reacts to lightning, cashu, lnurlw and lnurlp deeplinks
- Allows paying to static QR codes, links and lightning addresses, including NOSTR zaps (LNURL Pay)
- Allows withdrawals into the wallet from services supporting LNURL Withdraw
On top, univarsal .APK of Minibits that you'll find below now has its own Tor daemon, that allows to connect to the mints with .onion addresses. Mints thus does not know the IP address of the interacting wallet.
Another neat usecase is to run your own mint without the need to have public IP address and domain. You can expose it via Tor service that the wallet can connect to without additional networking setup.
Further technical changes include:
- Completely revamped parser of incoming links and QR codes
- Decreased amount of error logging
- Temporary usage of local cashu-ts library until proposed changes needed for Tor support are reviewed, finalized and merged
Many thanks to @swedishfrenchpress, @Ciugam and @callebtc for help and contributions!
v0.1.2-beta
Minibits has entered OPEN beta testing on Google Play. To install it from the store, head here on PC or tap here on Android.
The same released version is available as a standalone APK, please accept offered over-the-air update after an installation.
Major new features compared to the last alpha release:
- You can send payment requests to your contacts. Payment requests are lightning invoices that are shared with your contacts over NOSTR relays. Wallet of the receiver notifies and shows incoming payment requests and allows them to pay them immediately.
- You can replace automatically assigned and random wallet NOSTR profile (with @minibits.cash address) with your own external NOSTR profile. This involves replacing managed private (nsec) key by your own. It means, that you can then use your public NOSTR address as an ecash payment identifier at the same time. All ecash and lightning invoices sent to you as direct messages are then retrieved by the wallet and can be claimed or paid. You can reset back to the @minibits.cash profile, but your keys will be regenerated.
Even much more stable and fetaure-full that alpha, all usage warnings still apply! Happy testing and thanks for all contributions.