Must-Have Feature Checklist for any Iota Wallet

The full article was originally published by Eukaryote on Medium. Read the full article here.

Must-Have Feature Checklist for any Iota Wallet
These are some must-have features, in no particular order, for a well functioning and usable wallet. This list is not exhaustive, so any suggestions would be appreciated.

Automatic node selection. Absolute majority of users doesn’t know or care what node they’re connected to, as long as it works. Also, if node goes down or out of sync, the wallet should connect to a new node without any user input. Maybe even hit multiple nodes in parallel for [a lot of] extra speed (for refreshing balances, for example). Still keep a manual node selection mode for power users, though.
Automatic transaction promotion & reattachment. Nobody wants to babysit their transactions. Wallet should promote transactions until confirmed, and reattach only when transaction is inconsistent. Not only should wallet promote outgoing transactions, but preferably also incoming transactions. A nice-to-have would be the ability to spam while wallet has no pending transactions, but only with consent of user.
Multiple outgoing transactions. Instead of having to wait for the previous transaction to confirm, the wallet should select different inputs for the new transaction, and, failing that, spending from unconfirmed remainders with a transaction referencing the previous transaction to ensure consistency (keep in mind that in this case, only the top transaction needs to be promoted but both transactions would need to be reattached when inconsistent)
Cached Addresses and Balances. Generating an address is expensive (0.35 seconds per core per address, on an i7–7700K!) this means if the wallet is stateless (like the current official wallet), startup times will get longer and longer with more addresses (after just 100 addresses, just generating addresses already takes nearly 10 seconds, and that’s on a very fast CPU! Yikes!), not to mention the time needed to query balance and history from nodes. The wallet should definitely cache addresses, as well as history and balances. The wallet should also update intelligently (i.e what’s more likely to have changed balance and/or history? An address with zero transactions, or one that has already been spent from?). Addresses less likely to have changed should be polled much less frequently. The benefits of a stateless wallet like the current official wallet may be many, but none of them help the typical user (or, indeed, the typical power user). A force-refresh-all button would be nice but not necessary.
Automatic seed generation and storage. This is implemented really well in Electrum, where the user is told to write down their seed words (or seed trytes, in this case), then prompted to enter them to continue (to verify that they did, indeed, write it down correctly), and the seed is also written to a symmetrically encrypted wallet file on the user’s computer (hint: all that cached info from #4? The wallet file is a great place to store that stuff too…). No more insecure seed generator bullshit. If after this, people still forget to write down their seed words, that’s not our fault at all.
Seamless snapshots. Asking users to reattach addresses until they find their balance is downright shitty UX design, even if it makes perfect sense from a technical standpoint. The wallet should handle snapshots by using cached balance info in wallet file for near-instant recovery of state, and when such info is unavailable (for example, a user recovering their wallet from their seed), the wallet should generate a stretch of at least a few dozen addresses, maybe even a few hundred, upon importing a new seed. Additionally, the wallet could check even-indexed addresses first, as most wallets consist of an enormous string of zero-balances followed by a small clump of addresses with balance. Perhaps the wallet could even try to ensure that there are always two remainder addresses, equally split, and in adjacent indexed addresses such that it can always be discovered quickly after a snapshot. Please do note that this is not an exhaustive list of ideas, but rather to point out that there are more intelligent ways of discovering funds in a seed than just checking addresses sequentially and giving up on the first untouched address.
Since I’m not a good UI developer (or nodejs developer at that), I can’t really contribute to the official wallet; however, I will be working on a CLI wallet implementing all of the principles here.

The development of supporting IOTA Tokens on the Ledger Nano Hardware Wallets has progressed very far and IOTA will be able to be stored and managed on the IOTA Hardware Wallet.

Read the full Article

The full article was originally published by Eukaryote on Medium, where people are continuing the conversation by highlighting and responding to this story.

You might also like

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. AcceptRead More

Did you know?

Buy in without the stress of trying to time the market

when you setup a savings plan. If you haven’t started a plan yet, head to your Bitpanda account to get started!

Purchasing cryptocurrencies comes with a number of risks.
Never invest money that you can't afford to lose.

You can automatically invest

in IOTA with Bitpanda Savings!