Feather wallet

Představení nové desktopové peněženky kryptoměny Monero Feather wallet.

Why

Our primary motivation is to create a wallet that we ourselves would want to use and recommend to friends. There aren't many options when it comes to non-custodial Monero desktop wallets. The CLI is an excellent tool for power-users, but is simply not an option for users that are not familiar with with the terminal. The GUI has a slick user interface, but is demanding on system resources due the use of Qt Quick.

Instead we've taken inspiration from Bitcoin's Electrum and started working on the most basic looking Monero desktop wallet one can imagine. We've gotten rid of a lot of functionality, but also added new functionality. Just focussing on the basics results in a clean, robust, and beginner proof wallet.

Privacy

In an effort to mitigate unintentional off-chain linking, we have made it harder to reuse addresses by automatically hiding used subaddresses. We find that the primary address leads uninformed users to believe that it is somehow functionally incompatible with subaddresses, or that funds sent to subaddresses can not be spent together. To encourage the use of subaddresses the primary address is hidden by default, and only used for change and coinbase outputs.

Our wallet supports advanced coin control features like freeze/thaw and sweeping a single output. In the future we may add manual transaction input selection.

There is no need to manually setup Tor to protect your traffic, Feather comes bundled with Tor. By default all traffic is routed through Tor with the exception of traffic between wallet and daemon. Wallet synchronization over Tor takes substantially longer than over clearnet, but you can optionally enable to connect to remote nodes over Tor. If your machine already has a Tor daemon running Feather can use the system daemon when instructed.

Just like in the official GUI, Feather essentially has 2 modes of connecting to the Monero network. You either host your node somewhere (localhost/LAN/internet) or we'll provide you one from a list of trusted, stable, community hosted remote nodes (like Cake Wallet). If Feather detects that it's running on Tails or Whonix it will automatically connect to a random .onion remote node.

Performance

Feather is built with Qt Widgets, providing native looks and performance. In a recent test™ a wallet with 10k+ transactions only consumed 200 MB ram (before optimizations). In comparison, the official GUI uses 400 MB before a wallet is opened.

GPU power is plenty nowadays so this hardly a problem, however, we are serious about providing an user interface that feels snappy to use. The application itself starts within 1-2 seconds on most machines (Bitcoin's Electrum is more like 4-5 seconds due to their usage of PyQt).

User experience

We have implemented Tevador's 14 word seed scheme with embedded restore height. The same function is used to derive the private view key from the private spendkey, therefore it is possible to convert the 14 word seed into a standard 25 word seed in case you want to restore the wallet using the official wallet software.

Feather connects to a websocket server over Tor to obtain miscellaneous data such as: price information, a list CCS proposals, posts on /r/Monero, the most recent blockheight, a list of community hosted nodes and the latest version of Feather.

The websocket server itself is open-source and self-hostable. By default Feather will connect to a server hosted by the project maintainers. The websocket connection can be disabled completely, but some functionality will be disabled/broken.

Our target audience are users who want to use Monero without too many issues and we've designed the wallet as such, with lots of convenience features, while routing it all over Tor in the background.

The native look of the application should feel familair to users as it behaves like any other program that runs on their computer. Added benefit for future contributors/developers is that it's very fast to implement/test UI components by borrowing from QtWidget's vast library. This in contrast with the Monero GUI, which uses custom QML components - a tricky and time consuming renderer/framework more suited for large teams to create electron-like applications.

Additional information

  • Feather is able to show detailed transaction and output information including key images, unlock times and ring members.
  • Support for 2/2 and 2/3 multisig is in the works.
  • Feather will be distributed as a portable executable.
  • Feather will ship on Linux and Mac OS - and also Windows once we get static cross compiles to work (rip)
  • Feather has built-in support for XMR to BTC conversion via XMR.to (no commercial affiliation)
  • We can easily support additional interfaces other than QtWidgets (like QML for a mobile app, curses, etc) as business logic is stricly seperated from the presentation layer.

Proposal

Work started early summer 2019. We still have some features to finish, prepare CI/CD, etc. As such we expect an alpha or beta release in December 2020. For this we would like the community's approval to allow the milestones defined in GUI CCS to be used for the remainder of this project, paid in full - we can use the support. Consequently all code will be licensed under the Monero Project and features/changes to libwallet or wallet2 will be committed to upstream (Monero GUI/core). Future development and releases will be maintained by /u/dsc__ and /u/tobtoht.

Beta testing

Idle in #feather on irc.oftc.net if you want to help beta testing in a month or so. You will need Linux, as this is our primary platform for developing the application.

Please let us know what you think in the comments. We're open to suggestions/feature requests/brainfarts.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *