16+ important features in a Bitcoin walletsteemCreated with Sketch.

in #bitcoinwallets10 years ago (edited)

Let’s face it, Bitcoin can be pretty confusing for newcomers and unless you are using a wallet that enhances simplicity, security and privacy, you will probably have a lot of trouble getting your friends to buy any, let alone actually use it to purchase goods and services in the real world.

That being said, here’s a list of features that I personally believe are helping to accelerate Bitcoin's adoption, increasing its utility and helping to create a more robust fintech ecosystem around the world. Some of these features can't be found on every wallet so I hope this post helps to motivate app developers to produce additional features that wallets need while also helping existing apps add more features with some future updates.

For the sake of this post, I am going to discuss 3 basic elements of any Bitcoin wallet that I believe harness the power of Bitcoin: Security, privacy and functionality.

Security and Privacy are both things that takes place within the wallet itself AND also the across the entire bitcoin network. They often enforce and bolster each other while a wallet's functionality is what adds unique utility to Bitcoin. In other words, a wallet's functionality is what really allows you to "be your own bank”.

Every wallet should come standard with certain default features that the user has no choice of enabling or disabling. These are features that add to the security and privacy of the entire network of Bitcoin users. Features based on the network safety, security and of course privacy. Any wallet feature that only affects the user should not be compulsory but rather be based on a voluntary opt-in basis. These features include password protections, 2 or 3 factor authentication, color coded addresses, which fiat currency to display the price and transactions, etc. These are features that only affect the individual user and not the entire network. I personally don't care if you password protect your coins of if you have them backed up. I don't care if you use 2 factor authentication, multi-sig or password protection because none of those affect anyone else in the network. It's your job to protect yourself but it's everyone's job to enhance the security of the entire network.

Some features NEED to be used by everyone in the network as a means of adding to everyone's network security, privacy and pseudo-anonymity.

Wallet users should not have the ability to reduce the security, privacy and anonymity of other users in the Bitcoin network yet they should have as much control as possible while also maintaining simplicity and a relatively seamless user interface.

Privacy

No mandatory requirement to submit any personal information. I hate hearing that a wallet "offers more privacy than others” and on the first screen it asks for my name, phone number or my e.mail address. Get wise, guys. Bitcoiners crave privacy and usually want the freedom of choice when it comes to giving away their personal data. This is what I love about online wallets like RushWallet.com and BitAddress.org. There is no information to give at all. In fact they only offer further entropy to the user. Avoid services that want to make it compulsory for you to surrender your personal information. Even a fake email address or false username like "Altoid" can be enough for third parties to create patterns for analysis in the bitcoin network. It's best to avoid services that require personal info from users.

Automatic generation of a new public key for each transaction + manual one-touch address generation. - This is one of the best features that I have found in any mobile wallet. By always receiving new coins into a new public key you create much more privacy, security and pseudo-anonymity for everyone in the network. This simple feature makes it much more difficult for someone to follow the ownership of coins in the blockchain as no two transactions ever go into the same address. This makes it more difficult for someone to see how much BTC you have in your wallet. You should also be able to create a new address on-demand as well in case you are making lots of public keys and exporting the keys for paper wallets or adding unique keys to YouTube video descriptions or something.

Automatic denial of payment to the same address twice. If someone comes to you requesting payment and you scan their QR code, your wallet should recognize if that address has been used before. If so, you should be notified “Warning: This address has been used before. Sending coins to this address reduces your privacy and of everyone in the network.” or maybe even a pure denial like “As a built-in privacy feature of this app, you cannot deposit into an address that has been used before.” If everyone uses a Heirarchical Deterministic wallet, then this will never be an issue for anyone because HD wallets automatically create a new address for each transaction.

Because each and every transaction is building a financial forensic graph that slowly allows supercomputers to reverse engineer the identities of anyone using the same address more than once. If you transact with others who have also transacted with others using the same address, then you are helping build the forensic data needed to erode bitcoin's amazing privacy enhancing capabilities.

Zero-Knowledge - This means that the creator of the app doesn’t know what you do with their app and that it is encrypted end-to-end. NO app should require your private keys.

Security

Security is probably one of the most important features of any Bitcoin wallet since you don't have $250,000 of FDIC insurance backing your bitcoins. That means that security needs to be that much more robust than the banking system. This comes in many forms such as passwords, 2 factor authentication or requiring multiple signatures to send coins.

Optional 2-factor authentication. It’s obviously very stupid to store large amounts of bitcoin online (especially without any sort of 2 factor authentication or multiple signatures) but I don’t like mandatory 2-factor authentication. Maybe I just want to try out a new wallet that I just downloaded and I only want to put like $1 worth of BTC in there just to see how it works. Users shouldn't be forced to go through all of these security measures just to find out they don’t like the wallet anyway. Look for wallets that give you as much control over security features as possible. (as long as that security feature only affects individual users)

Optional password protection needs to be a feature of every wallet along with the ability to decide when and where a password is required within the app. I get annoyed by apps that require me to put a password in every time I open the app. Maybe I only want to require a password to spend BTC or maybe just to see my balance. Or maybe I want it everywhere. Setting password protected gates is a great way to increase the apps security, privacy and functionality all at once. You might want to offer password protection on an address with lots of funds in it and also have a “spending” address that you don’t feel the need to protect nearly as much. Do not force me to use a password. Do not force me to use different numbers, symbols and upper case blah blah blah. Do not require me to change passwords every 90 days. Do not require me to use a new password that I have never used before. The user should be able to decide how they want to be their own bank. Give the user the option to reset password by e.mail, text, authy, google authenticator or whatever. Give the user as much power and control of their own money.

Optional Timed Logout - With password protection comes the need for some sort of automatic logout to ensure the protection of your coins. Users should have control of when they want their coins to be secured. Green Address has this feature.

Client-side private key storage - This might seem like a no-brainer but it seems like every week I read some new blog post about an exchange getting hacked or raided by a government. By simply storing the private keys on the users device you are greatly increasing the security of the wallet. It's important to remember, "If you control the private key, you control the coins."

Functionality

A wallet's functionality is probably the most important part of any Bitcoin wallet for increasing user adoption and allowing users to "Be their own bank". It is the functionality that enables amazing financial power of the individual. This is how Bitcoin will ultimately compete with existing financial services currently offered by multinational corporations. Can you build apps on your bank? I didn't think so. So let's take a look at some features that bitcoin wallets give individuals amazing financial power.

Import/Export private keys - While this one might also seem like a no-brainer, a lot of wallets only offer one of these or the other. Not enough offer both. Paper wallets are one of the best ways to store Bitcoins yet not enough online/mobile wallets offer the option to sweep a paper wallet private key. Every wallet should be able to move coins to and from a paper wallet with ease. Not enough wallets do this.

Accepting multiple crypto currencies within the apps native interface would be an awesome feature that would add a ton of utility to the entire crypto world as it would open up users of every crypto currency to all be able to conduct business with each other. Currently there is a suite of tools by a company named Shapeshift.io that allows this sort of functionality. These tools enable the user to accept any crypto currency and have it seamlessly changed into any other crypto currency. This service also respects users' privacy by not requiring any sort of usernames, e.mail addresses or passwords. It's pure free trade and probably one of the best services in the bitcoin ecosystem.

Recurring billing and invoicing - These are both services offered by a number of existing payment platforms such as Square and PayPal to name a couple but what if the same could be done with your bitcoin wallet? If we are ever going to expect businesses to fully adopt bitcoin then they are going to need to be able to do everything that their existing tools are capable of. This includes the ability to e.mail itemized invoices and recurring payment requests. Subscription based services are a growing business trend and businesses need to be able to utilize that with our beloved sound money.

Account labeling, color coding, budgeting and separate business/identity management. - These addresses need to be able to be created frictionlessly with a single touch. Each of these new accounts would have its own receiving addresses. This feature would make it much easier to manage multiple businesses/ventures along with any separate identities that are needed with those businesses. Any money sent into these addresses would automatically sent through a shared-send feature to help obfuscate the original owner. One of these default addresses needs to be equipped with a shared-send feature so funds can instantly and frictionlessly be transferred to a spending account for more private spending and more network security.

A “smart" QR scanner - Wallets needs to be able to tell the difference between a regular QR public key, a QR payment request and a QR private key. This is one of the features that I really like about BreadWallet. If I scan a regular QR code, it will simply copy the public key to the app to make a payment. If I scan a payment request QR code for .2353 BTC, it automatically asks me “Would you like to send 253,3100 Bits to address XYZ?” (It adds approx 100 bits for a miner fee) and then I can select to pay or not to pay. If I scan a private key QR code on a paper wallet, then it asks me if I would like to sweep all of the funds from the address. All of these three features should be seamless from the exact same screen. Using the exact same QR code reader. Let the computer do the work involved with figuring out what kind of QR code you are scanning, not the user. Reduce confusion and opportunity for error.

Buy/Sell advice based on average cost per coin. The price is up. The price is down. Depending on your acquisition/utilization strategy, there always seems to be a reason to be doing one or the other. A basic built-in average calculator combined with basic buy/spend notifications would be a great way to show it’s instant utility. For example: I sold a $50 item for BTC on OpenBazaar for .2035 BTC. The basic calculation on that is $50/.2035 = Rate of $245.70 so if the price goes X % or $ above $245.70 I would get a notification telling me that I have extra purchasing power and should go spend. This could be based off of the average cost of your coins together or it can be for each time you got new coins so sometimes you will be up on one transaction but down on others. you can spend the profitable coins now and wait for the others. This would be great if it could look as sexy as Mint and even be able to buy/sell on BitFinex or WallOfCoins right from the app API.

Create a payment request in any world fiat currency - Bitcoin is a borderless currency and in order to enhance trade between different finance systems around the world there needs to be a system in place that makes this frictionless. If a friend of mine buys me a beer in Australia, I want to be be able to settle up without doing any math or conversions. Like I mentioned above, services like ShapeShift even allows users to trade easily between different crypto currencies.

I understand when a wallet only allows for payment requests in BTC because they are trying to get people to adapt to the bits, mBTC or BTC or whatever but if I want to send someone $5 for a beer, I don’t want to have to play higher/lower to finally get the price close to $5 like $5.03 or something not round. If I want to send $5, then give me the option to send $5 as USD. If I want to send $5 New Zealand Dollars, then give me that option too. The price might be different across different exchanges which brings me to my next point.

You need to be able to decide what exchange you pull your price from. I personally like to use BitFinex price because it’s the largest trading volume in the western world so it’s pretty reliable. Maybe someone wants to keep their wallet pegged to CoinBase because they buy all of their coins from Coinbase or maybe they like BitStamp for some reason. The bottom line is, the user should be able to decide where to pull the price from. The option to show multiple fiat currencies alongside each other might also be a nice little feature for traveling places like Central America or Scandinavia where they are very culturally similar yet all use different national currencies.

Spending Limits, Scheduled Payments and MultiSig functionality all need to be part of every wallet that hopes to offer the ability to control spending of their kids, friends, family members, employees etc. These sorts of features can probably be achieved a number of ways. Two or even three factor authentication can give parents the ability to keep spending in check but a MultiSig Wallet would allow for even more control over spending. Spending limits need to be able to be pegged to BTC or any fiat currency. These sorts of features would allow for de-facto international business opportunity where spending could be controlled across multiple countries in multiple continents. Not just Americans use BTC so make it easy to budget and spend in relation to as many currencies as possible.

The option to show the current price and wallet balance in a number of units like BTC, mBTC and uBTC would also be nice for helping everyone become more familiar with all of the different denominations of BTC. I think in Bits but some of my friends think in BTC while others think in mBTC. Options all around make a more versatile wallet. These different denominations of BTC also need the option to be displayed in multiple fiat currencies and against multiple exchanges.

I'm sure that there are a number of features that I missed or that would harness much more of Bitcoin's potential but here's what I've compiled for now.

Please feel free to comment with any other features that you think would add to bitcoin's privacy, security and functionality.

Sort:  

UV and RS for you, this is a great post.

Thanks. Just trying to get the hang of the platform. I think it will take me a little while.

Coin Marketplace

STEEM 0.04
TRX 0.32
JST 0.077
BTC 63074.17
ETH 1657.75
USDT 1.00
SBD 0.41