Wallet 0.3.1 (Beta 1)

@alexvandesande alexvandesande released this Oct 14, 2015

9d212216-6ce2-11e5-9e27-68c1669f3347

TLDR:

  • Wallet could contain interface bugs (like not all transaction are displayed), but the ether is saved in the contracts and shouldn't be affected by wallet issues.
  • The Mac and Win64 versions come bundled with a geth node, which will use your current ethereum folder, if you are already synced up with the network there'll be no need to resync. Future versions will come also with eth nodes bundled as well. If you're using Linux you need to start a node before starting the wallet. If you do not, the world will end.
  • Backup your keys from the ethereum folder, and write the down the addresses of the wallets you create!
  • Make sure you're fully synced before you create wallets and put money in them
  • Do not add other wallets as owners to a multisig wallet. Because this feature has not yet been implemented and the wallet will not support this at the moment.
  • Please file issues in the wallet repo
  • We are looking forward to feedback from Windows user!
  • Downloads are on the bottom.

"If you are not embarrassed by the first version of your product, you’ve launched too late." - Reid Hoffman

With this spirit in mind, we are very proud to release the first self contained Ethereum wallet. As the quote goes, there's a lot that won't make a great experience for an early user—it takes 30 minutes to sync the first time you launch (for progress on that see the gitter room on light client implementation, some transactions don't appear on the logs, among other issues—but we decided it was mature enough to start getting feedback. We are reasonably certain that, as long as you keep your keys backed up, you won't lose or get your money locked up by accident, but as anything else, we recommend not to put more ether than you feel comfortable with, and always test things with small amounts. If you are looking for the safest place to keep your ether for a long time we still recommend you keep your wallet json in a offline cold backup.

Having cleared that long disclaimer, we are indeed happy with the evolution of the wallet and the direction we are taking it. Besides the basic stuff needed to send ether around, the first smart contract with a user interface we support is the multi-owner wallet. That contract has the functionality of a M of N multisig wallet, but it also has the option of allowing a configurable daily limit that can be spent by wallet with a single signature from any owner. This allows simpler funds management by partners or simply a way to recover funds slowly even if you lose all keys. 

e00b717c-6ce1-11e5-9ff8-1263f1099f03

For the time being do not add other wallets as owners to a multisig wallet, as we don't currently support the user interface for a wallet to approve or revoke transactions that are more complex than sending ether around. If you do this by accident you won't lose your money, but you might have to resort to the command line to approve transactions higher than the daily limit.

There is a lot more under the hood, though: for starters, since we include an optional data field, you can execute any Ethereum transaction as long as you have the correct hex code. For example, to upload a contract go to an online solidity compiler, get the hex code and put it on the data field (leave the "to" and "amount" field blank).

d968b56c-6ce3-11e5-9be3-7601bf39696d-1 png

If you have the correct hex code you can execute any contract, also by using the data field. This is not a feature we added in, this is just the way ethereum works under the hood, the wallet simply exposes that for the user. An interesting side effect of exposing this, is that it reveals what is really going on the basic level. To use an example, this is what happens when you want to send ethers from a contract to a third party:

4c05f25e-6ceb-11e5-8dca-f9fca0bdfe21

We are using Electron for development, meaning that what you are actually running is a Chromium clone executing a local webpage. We decided to use it for a few reasons, and having a multi-platform release is only one of them. The other is that this gives access to the geth console for developers, by going to the develop menu and then choosing "toggle developer tools". This also means that the wallet can be used as an open source framework for anyone who wants to turn their html based Ðapp into a multi platform application that already comes with the ethereum command line tools integrated. Which you probably guessed if you noticed the name of the repository you are on now: the work we are doing for the wallet is actually solving issues for any web based Ðapp that we need to solve in order to build the Mist Browser – which in the end is just adding the navigation part.

screen shot 2015-10-07 at 11 24 28 am

We have a lot of new features planned on the roadmap. We are working on solving some glaring usability issues, and on providing support for some standard contracts including a generic wallet (which would allow any kind of internal structure to approve transactions, including DAOs or 2fa) and the generic coin standard, investigating how to provide interfaces for naked contracts that don't have accompanying Ðapp assets, just the ABI and also working to provide support for Eth, the C++ command line tool.. And of course, all this is meant to help further development of Ðapps and the Ðapp browser Mist.

Notes

The Mac binary comes bundled with both Geth and Eth. Although Eth is a solid c++ implementation, we are still testing it with the multiple wallet functionalities. While we encourage you to test it also, please mind that you may find somethings not working (for example, if you have a master password set up and you don't quite remember it, the wallet will simply not start any node without giving any error or alert). Geth is working out of the box even if you never installed it.

The 64 bit Windows version comes with Geth included and so you just need to start the wallet. The 32 bit windows and linux versions will require you to install and run either Geth or Eth separately.