Droplet - A New Easy To Use Mobile Wallet
Who
Hi. I am detherminal, a software developer. This is my first proposal, so it would be good to describe myself. I entered the sector in 2020 and have been developing since. I have an enthusiasm for open-source, cryptography and privacy. I have made various contributions to open-source repos in my Github account. I also have been an employee of Cypher Stack in 2023 where I added Nano, Stellar, Tezos and made various contributions to the Stack Wallet where I wrote almost all of my code in Dart/Flutter. I have published apps in Google Play before. I also have a recent Monero library in Rust which is called libmonero. I loved Monero since I heard about it and I thought it would be good to contribute to the community.
You can contact me from:
What
As you may have heard some of them, there have been some discussions about the Monero wallets listed in getmonero.org. Some of them are:
- Cake Wallet logs IP
- Monerujo Sidekick isn't completed since 2022
- MyMonero stopped developing since 2022
And after all that;
- There is only one iOS wallet
- Some of them are for-profit (Edge and Cake Wallet)
So, I thought it would be good to write a new wallet that is free, open-source, privacy oriented that you can recommend everyone, and here we are.
Droplet will be a new mobile Monero wallet that everyone can use, written in Dart/Flutter, and that anyone can recommend with peace of mind. The planned features include:
- Good UI/UX. (Come on, there isn't a good looking mobile wallet out there)
- Private by default.
- Fully free, non-profit.
- Open-source and community oriented, that means community's request will be listened based on possibility and desirability.
- Works both on iOS and Android.
- Fast sync.
- Implements not only wallet, but the ecosystem. (Like polyseed)
etc.
There is only two resources of official communication for now:
- getdroplet.org (Which redirects to GitHub for now.)
- GitHub organization
EDIT
Since some community members seemed curious about why a new wallet is needed instead of other wallets, I will describe some of them.
- No Gift Functionality. As discussed in bounties and by community, there is a need for functionality of gifting friends for introducing them to Monero. Unfortunately, there isn't a standard for it. I have developed a GUI app where it generates a paper wallet with easy to edit info on them for gifting. But still, this isn't secure because any person can empty the wallet if the gift taking person don't send it to their own personal wallet. There isn't any wallets that implements this feature and it would be absurd and unsecure to develop an app only for this purpose. Instead we should add this feature to a known community wallet, which will be done in Droplet.
- Not Much iOS Options. If we take a look at the official recommendations of Monero, there is only one local sync wallet that works with iOS. Offering people options and letting them choose what they want is important as they would embrace Monero easier. Currently, only option for a local sync wallet is using Cake Wallet. But only one option forces people to use a multicoin wallet with commercial exchange features which a person might not like if they plan to use it only for sending/receiving Monero. (I plan to integrate only Serai to the Droplet, which is a DEX and will be optional to be enabled by later). Also, some of the community members agreed on this problem.
- Not Much Language Support. Although they offer some of the most known languages, there is still languages that would be good to add wallets to make wallets usable worldwide. For example, Monerujo doesn't support my native language, Turkish. And I can't recommend my friends Monerujo because it forces them to know English. Implementing a new system thats built into the wallet for adding new languages easily not only would let people use in their own language, but also enables other people to contribute new languages to the wallet.
- Not Much Offline Signing Support. Making the wallets only hot wallet can make them unsecure and users should be able to use offline if needed. That should be done by signing txs offline, extracting and announcing it via secure channels. Monerujo had this project and also got funded for it but they didn't complete the project even after 2 (3 from the start) years. Afaik, Anonero has this feature but its not well known and it is not user-friendly because the only way to grab the APK is going to a tor-only site, a common person would not be able to do this and keep themself secure (Not to mention it doesn't support iOS). This is a necessary feature for users to be secure and needs to be implemented in a known user-friendly wallet.
- Not Much Hardware Wallet Support. If a person wants to go another step and get a hardware wallet like Ledger(?) or Trezor that is secure against timing, side-channel, cold-boot attacks etc, they would have some problems with them. Cake is newly adding and Monerujo has already Ledger support, but Ledger's new wallet (Stax) is not supported afaik. That is not the main problem because Ledger is known with its bad privacy reputation. Main problem is Trezor support. Trezor is fully open source (unlike Ledger) and needs software support. And the worst thing about is that Trezor's official site recommends a closed source wallet (Exodus) because lack of support for Trezor. Trezor has been in the sector for long years and its been used by many people so it needs some serious work on it.
- No IPv6/I2P. Getting a static IPv4 address for your own personal node is so hard because there isn't much of them, and many of the ISPs offer them via an additional fee. IPv6 solves this problem by creating many IP addresses and many countries around the world are already migrating to IPv6. This way, people can connect to their own node via IPv6 and do not need to rely on third party nodes. Afaik, Cake and Monerujo doesn't support this. Another thing to be mentioned is I2P. I2P is loved by some of the Monero members and they prefer I2P instead of Tor, so it is worthwhile to add new ways to networking so the users can choose the way they want.
- Lack Of Widgets, Graphs Etc. Getting a new person into Monero ecosystem is hard and often they just bore and don't even take a look at again. But if they put a widget on the home screen of their phone, it might remind them Monero. Except that, people need widgets for easily checking coin and price of it. Monerujo and Cake both doesn't have this in Android. Price graphs may also be good for users to record their price of their coins, and both Cake and Monerujo doesn't have it. Like always, these will be optional to be enabled later.
Bonus:
- Merchant Mode Mobile. There is a merchant mode on GUI wallet, but accepting a cryptocurrency shouldn't require a computer. There should also be a mobile merchant mode where user can see and read text and QR. Still, both Cake and Monerujo doesn't have this.
These are some of the reasons. There are also many unmentioned features that would benefit the user's experience of using Monero. The main reason for this proposal is to create an easy to use, but at the same time a feature complete powerful wallet.
For the xmruw part, I believe we think very different about the technical aspect of the project. cyjanek thinks it should be another wrapper around wallet2, but make the header in C instead. Thats not a very innovative and useful feature, as taking a way of 'cpp -> c -> dart -> native' opens door for so many things to go wrong (I also created libmonero because of this reason, please take a look at it). I also do not believe it will be sustainable in the long run because when you want to make a change or add a feature or smt else, you would have to change all the way down. Thats not a good way. Instead, I will create a new Dart package that will contain most parts of the functionality for enabling other developers to add Monero to their wallets. Creating a hard to reproduce wallet is not a good practice, as people can't build their own wallet if they have trust issues. Binding many languages on top of each other will definitely block most of the people that build their own APK. I do not plan to use wallet2 api often (or never if possible) in Droplet.
Planned Technical Part
- The app will be written in Dart/Flutter.
- The app will be published on Play Store/F-droid/App Store with a publisher name of "Droplet Wallet Team" (Open to changes)
- App will consist a new package that has necessary code for Monero implementation and it will be published on pub.dev for everybody to use.
- Code will be hosted on GitHub and official releases will be made on there
Funding
I propose to complete and release full version of Droplet Wallet for working 6 months and 25h/week for a rate of 40dollars/h . Based on recent XMR prices (Kraken, 20-day MA) which is 133$/XMR, this makes a total of 180.45 XMR.
Milestones:
1 - Release beta version of Droplet : 90.22 (%50)
2 - Release full version of Droplet: 90.23 (%50)
Expiration: 1 June 2025
If I stop developing or you can't communicate me until the expiration date, you can give it to another person that completes the exact proposal described above.
Merge request reports
Activity
No, I plan to write all of them in native Dart. Writing complex cryptographic operations from scratch is serious and might be unsecure so I will use open-source packages from pub.dev instead. I also don't want to add another language to the app because fastness is needed. I am open to changes for the technical part of the app, but I don't want to use wallet2 if not 'really' needed.
My library is unrelated with this project, thats only for showing my previous works.
No, I plan to write all of them in native Dart. [...] but I don't want to use wallet2 if not 'really' needed.
Do you mean - not use wallet2 at all and re-implement everything from scratch? Seems really risky to implement all the crypto from scratch, and I don't see any documentation regarding the library
- will it be tested against the same cases as monero?
- will it get audited in terms of security?
- wallet3 and "the whole seraphis thing"
- any demo code for the library? Or at least some technical documentation, maybe comparision to existing libraries?
I don't want to use wallet2 if not 'really' needed
Believe me, it's needed. For a dozen different heavy and hard reasons that I don't intend to explain here in detail unless that becomes important for the discussion somehow.
I am a bit surprised that somebody who wants to write a Monero wallet app is not yet aware that
wallet2
is, as you would say in German, pretty much "alternative-less".
!437 (merged) has been up for a month now and has received feedback/sentiment that this proposal could face. That proposal is to build upon an existing wallet, Anonero, and also in doing so create some kind of universal
monero_c
library but has not gaining enough traction for merging yet. I would start by comparing/contrasting your proposal with thatAs this is a completely different project, I didn't wrote anything about it but I can explain the differences and why this is needed:
- As far as I saw from the repo and the proposal, iOS is not planned/prioritized. This is a big downside because almost half of the OS of mobile devices is iOS
- The C library still isn't native, instead it uses FFI for communicating with device and other languages. It isn't much clear but I also think that there won't be a new implementation but create a thousandth wrapper around wallet2 instead.
- Again there isn't any info about usability (Except a little mention of UX) that means still a new person wouldn't be comfortable using it and will need help.
- As the crate part, I also mentioned a new package that will be written in Dart that anyone can create new native Flutter wallets using this one. It will be hosted on another repo that will be published on pub.dev. If there isn't a native one, compiling, editing, tooling and almost everything about it becomes absolutely hard. You can take a look at Monero libraries in the net and you will see that half of the issues on them are about compiling, using. Thats also why I created libmonero
- As the other features listed in there, I thought I already made it clear that I will implement all possible things to offer best UI by saying 'Implements not only wallet, but the ecosystem'. That means all usable and worthwhile features like Polyseed, OpenAlias, Serai Exchange etc.
After considering all of them, I think our intentions are clear and different. My intention of creating this wallet is providing a clean, secure, easy-to-use and private by default (features that compromise privacy will be optional to be enabled by later) wallet that comes up in a mind when someone new to Monero asks for a wallet recommendation.
Edited by detherminal@plowsofff: That proposal is to build upon an existing wallet, Anonero
*screams* No, it is made from scratch
As far as I saw from the repo and the proposal, iOS is not planned/prioritized. This is a big downside because almost half of the OS of mobile devices is iOS
Then I'd suggest you actualy reading that proposal
Expanding compatibility of monero_c to all platforms that I have access to (Linux (glibc+musl), FreeBSD, iOS, MacOS, Windows) in an easily-reproducible way
.XMRUW already is ready to be compiled on iOS (as in, it is already working), as well as it is already tested on Windows, Linux, MacOS, Android, SailfishOS, PostmarketOS (alpine linux - currently broken, but I got it to build).
The C library still isn't native.
Would you mind sharing exactly how a compiled C library isn't native?
Again there isn't any info about usability
To quote myself: "Written to solve the issue of having to care about freeing memory/converting dart
String
s toconst char*
, most of the code is generated. Thanks to themonero_c
header file LSP provides suggestions for the code, so any kind of error should result in a warning in IDE and compile-time error.", I didn't mention easy of use as a part feature set because it seems obvious, to make it clear: monero.dart is both easy to use and easy to integrate onto existing projects.As the crate part, I also mentioned a new package that will be written in Dart that anyone can create new native Flutter wallets using this one.
How exactly do you plan to write it? FFI? PlatformChannels? Why not use monerujo.cpp, cw_monero or monero.dart?
It will be hosted on another repo that will be published on pub.dev. If there isn't a native one, compiling, editing, tooling and almost everything about it becomes absolutely hard.
So if I read that correctly you are saying "I'll ship binaries to pub.dev" (which btw, don't do that) or "on each
flutter run
I'll compile monero", while I'm not a huge supporter of the 2nd option it can be done by adding couple lines to CMakeLists.txt (or to xcode runner config if we care about iOS that much) to add monero_c as a build step in xmruw (or any other wallet using it). Sure - it can be done, but do you really want to spend plenty of time building crypto libraries that doesn't really change while you work on the UI?You can take a look at Monero libraries in the net and you will see that half of the issues on them are about compiling, using.
To quote myself: "Expanding compatibility of
monero_c
to all platforms that I have access to (Linux (glibc+musl), FreeBSD, iOS, MacOS, Windows) in an easily-reproducible way", no dependencies other than bison, gperf, gcc are required to build monero for all platforms from a linux host.Also, if I understand that correctly - it will involve using plenty of resources to maintain cmake config (possibly even using hacks - or worse - downstream/patched monero version to fix cmake at the upstream), that may or may not break when upstream releases update.
I'm all for more wallets in the monero world, however what the poster said about Cake logging IP addresses is simply not true and we have addressed this issue many times.
Furthermore, we always recommend people use their own nodes and have made it easy for anyone to add them.
You mention that only Cake and Edge are for profit, whereas in fact all the wallets you mentioned are for profit. It's not a bad thing. I recommend that you do make your project sustainable apart from just donations, but through an ethical business model.
If you do succeed, Cake will definitely donate to help this initiative.
Edited by Vik SharmaThank you for support. I don't have any problems with Cake, I just mentioned the community's discussions about it. I apologize if I broke your heart
Edited by detherminal
There are plenty of "good" wallets that fill the need for a simple, easy to use wallet that can be recommended for new users.
Re-inventing wallet2 with Seraphis looming sounds like wasted effort, especially since it doesn't fix any problems today.
@detheforxmr You seem to be focused on UI/UX, again, why not team up with an existing project that needs a UX dev?
Offline signing and iOS sections are not only wrong, but deliberately misleading.
Offline signing: Title says is doesn't exist, yet Anonero & Feather have had working implementations for months now. Author claims Anonero is not "well known", but it is known specifically for pioneering that feature.
iOS options: Most mobile wallets are already cross platform like Cake, Stack, Elite, Edge, with Monerujo and XMRUW both looking into iOS support as well.
Overall the author doesn't seen familiar with the Monero ecosystem, and is proposing their new wallet as a solution to a problem that doesn't exist.
Edited by J0J0XMRagreed. Proposal is intentionally misleading / dishonest
like, monerujo + turkish .. handpicking dead-ish projects?
cake "logs" ips? Says who? no ios options? Stack, caje, elite are all ios capable. "getmonero.org" doesn't list stack, because stack has chosen to wait.
you do work for stack, yet stack has struggles with xmr. Why not fix them? And why were you not able to fix them? Stack still lacks monero features like subaccounts - and looks very good.
the dishonesty of this proposal is incredible.
NACK
Edited by ofrnxmr
Sentiment in the last community meeting was to close this proposal https://libera.monerologs.net/monero-community/20240413#c363966
It was initially planned as RPC, but looks like this proposal will get closed unfortunately. The project isn't over, I have much bigger plans including LWS wallet
Edited by detherminal
Ooops, just read @plowsofff I guess it's a moot point.