The Sia wallet is somewhat hacked together, and while carefully designed not to lose any coins, there are other components of the wallet which leave something to be desired. For example, it takes a really long time to unlock. This project intends to fix all of the serious shortcomings in the Sia wallet with the intention of creating something that operates like a professional cryptocurrency wallet.
A general list of requirements:
- The wallet must unlock in under a second.
- The wallet must not consume more than 50MB of RAM.
- The wallet must be able to process 1000 blocks per second coming from the consensus set (during IBD and rescan).
- The wallet must be able to display progress during IBD and rescan, including through the API.
- The wallet must provide durability guarantees to the user. In combination with #3, clever engineering is required.
- The wallet must be able to track multiple seeds and keys.
- The wallet must expose to the user which keys + seeds it is tracking, including how many funds are contained in each.
- The wallet must have methods for 'sweeping' outputs from one seed or key into a seed.
- The wallet must have the ability to initialize from existing seed.
- When loading a seed, the wallet must have extremely high probability of finding all addresses with money in them.
- The wallet must support custom encryption passwords.
- The wallet must support 128bit seeds.
- The wallet must be able to create restore-able backups. Per-key and per-seed backups must be supported.
- The wallet must be able to restore from backups.
- The wallet must be able to restore from all legacy backups.
- The wallet must know not to create transactions that violate the IsStandard rules, particularly the 32kb max-transaction-size rule.
- All API calls to the wallet which return potentially unbounded amounts of data must support pagination.
- The wallet must avoid address reuse as much as possible.
- The wallet requirements must be documented in wallet.go
- The wallet must be able to accurately predict how much the fees on a given transaction will be
Notable requirements that are skipped for the Sia wallet:
- Privacy guarantees
- HD Wallet support
While eventually we hope the Sia platform will support all of these, privacy especially is something that will not be well supported without alterations to the Sia consensus protocol, and ultimately a from-the-group-up rethinking of the platform design and user-experience. Neither of these items is on the short-term or medium-term list of things we hope to accomplish.