... beat them with UI/UX. Do your best to dumb things down for the typical non-technical person, without sacrificing security, privacy and functionality. Just add some sort of "developer mode" for the people who want custom options.
Yes agreed. Your comment also reminds me that I left out a point in my OP. Then intent is to build for the layman, those that do not have a deep understanding of crypto, those that just want a wallet, that don't have the time or care to understand all the details of crypto.
Thx for commenting.
If your encryption security is partially based on obfuscation of the source code, i'd be very skeptical with encryption implementation on your wallet.
I'll address this later.
You forget to mention who's the audience target of your wallet software. So far everyone who make reply on your thread could be considered as power user.
Please see my reply to mk4
Thx for commenting.
My intent is to build and release via Google Play, Microsoft Store and Apple Store as that seems to be the only way people are able to install software on their devices today. Side-loading is an option, but most people won't be familiar with the concept.
People have been downloading and installing software on Windows for decades without the Microsoft Store, and Mac users are quite used to .dmg app images. If you're goal is only to support mobile devices, then those stores will be more commonly used, but I would still make the binaries available for download outside the app stores and also make it possible to verify the authenticity of the files.
Yes I considered this. Building a website for User Manual, email contact and downloading the apps for the various platforms. I am still up in the air about how I will support different platforms and devices. Still doing some research into libraries and frameworks. So far (don't laugh too hard), C#/.NET 6 is the leading choice as it will fit into later projects that could spin-off from this.
No ability to generate its own seed phrase?
Yes it will follow BIP-44/BIP-32. The functionality will allow for importing wallets as well as creating new wallets. I will implement a random mnemonic generator. I guess the question is, should I allow the User to pick the number of words? 12, 15, 18, 21, 24 or maybe just give the option of a randomly generated mnemonic of 12 or 24 words?
It will be closed source. If the wallet is storing the Master Private Key that is derived from the Mnemonic string and Passphrase, I don't want others to be able to look at the code and see how and what encryption was used, how the Master Private Key is saved after encryption.
Deal breaker! Most wallets handle the encryption of sensitive data on the client side by using strong passwords. If you can't trust your potential users to handle their own security, why would they trust your hidden code?
It has been my experience that most Users have very little idea about software security, or securing themselves in the digital realm. What if the User doesn't implement a passphrase? Or wants to set up a hidden wallet? Should I password protect the execution of the app. Make it so a User has to input a password to start up the app on thier own device (that's already password/biometric protected)? And then make them input a passphrase to login into a certain wallet account?
To me, that's not very User friendly.
Good wallets are open-source, bad wallets are not. Trust is a major issue in the crypto world, as it should be. The only way to gain the trust of the community is to be as transparent as possible with your code.
I'll address this later.
As for features to add, one of my biggest pet-peeves about Electrum (the primary light client I use) is it's privacy issues. To resolve them I have to run my own SPV server and connect all my devices to that server. If I could connect Electrum directly to my instance of bitcoin core that would resolve a lot of those issues. There are other light clients out there that do that, and I think it's starting to become a more common feature. That's one suggestion. Otherwise I don't see many improvements that can be made to Electrum, for example.
This is a good suggestion. I was thinking that if I received enough in donations (with any luck), I would run a node and the wallet would default to my node(s). Would that raise many concerns?
Adding the functionality so a Power User could connect to their own instance of the blockchain would be a good option.
Thx for commenting.
- Allows coin control.
- Allows connection to personal Bitcoin node or SPV server.
- Works as an HD wallet
Coin Control....yes, thank-you
Connecting to your own node...please see above
Yes, following the BIP-32/BIP-44 would make this a HD Wallet.
what am I forgetting?
You forget that we already have lots of software wallets, some of which work years now perfectly. I don't find a reason to change my wallet software. Part of being open-source is that each problem has to only be solved once.
I suspected from the start that this might be a vanity project.
Thx for commenting.
This is what all "good" wallets already do so let me add a new idea that would set a new project apart:
The ability to create custom scripts, make payment to them or spend from such scripts. For example something as simple as a time lock script using OP_CHECKLOCKTIMEVERIFY or slightly more complex conditional scripts using OP_IF.
I am not sure I like this idea for the layman or even most power users. Off the top of my head, the example you provided would be better implemented as a smart contract. Though I must admit, I haven't gotten far into smart contract implementation on Bitcoin network as I have for Ethereum.
This is becoming a wall of text and it's getting late for me. When I can jump back on, I'll make another post expressing my concerns about the project being open-source.
Thanks for your feedback.