Ethereum wallet solution

Words
1244
Reading
6 min
9y
Listen to this post
~8 min

As the Ethereum ecosystem is expanding, there's now many options for where to keep your Ether, and how to best interact with Contracts and DApps being developed. I needed to figure out a solution that worked for me, and I'm sharing it here in the hopes that it helps others as well.

I'm a software developer, so am comfortable with diving into technical requirements when necessary, but also realize that it's best to avoid situations where human error can play a factor. I've held Bitcoin for several years, so already have some familiarity with making and securing different hot/cold wallets for my personal use. As you get more invested in any cryptocurrencies, it becomes more important to realize that you are the bank, and while you may not have enough in savings to merit building your own steel-lined bank vault, your diligence should scale with how much you have saved.

So, I tried out several wallets, and here's my assessment:

Wallets

Mist wallet

This one's the canonical tool for interacting with DApps within the Ethereum ecosystem. It's a browser with a built-in wallet , and uses the web3js library to interact with DApps loaded within it. Being the core tool, it gets a lot of development attention, however since it's trying to do multiple things (be a wallet application, a full node, a browser, and a web3js provider) development is split between them, and there's still a bit of swirl on how those features should look/behave. This is an installed desktop client, so good for laptops and desktops, but not for mobile devices. Also by default it's a full Ethereum node, so the device installed on needs to have storage space and network access to handle that.

wallet.ethereum.org

This website runs the same wallet code as the Mist browser, but since it's hosted online, it works for any web3js provider. So if you're using another tool that does not handle everything you need it to, and it provides a web3js connection, browsing to this site can enhance other tools with additional functionality!

Geth

This is the peer-to-peer logic that powers the Mist wallet, separated into its own application. This is great for technical people, to be able to separate out the use cases for where you want a full node to be running, and where you only need a light wallet application to interact with it. However, it does require a great deal of technical knowledge (networking, security, firewalls, etc.) to run in a secure fashion. It gives you the ability to interact with it via RPC calls, which a web3js-using DApp can connect to directly.

MetaMask

Browser plugin for Chrome. Specializes in Ethereum development, so has the means to switch between Testnet and Mainnet very easily. It uses its own centralized Ethereum nodes, so you don't need to run your own (but you do need to trust them to keep good servers). The wallet interface is pretty minimal, but it's a web3js provider, so it's intended that any interaction with a Contract is done through a DApp, and the DApp interface sends transactions to be signed through the web3js interface to MetaMask. It's a Hierarchical, Deterministic (HD) wallet, so can be backed-up with a 12-word key phrase.

Jaxx

Multi-blockchain wallet that has browser extensions, desktop apps, and mobile apps. It has ShapeShift integrated, so is very easy to transfer between blockchains. However, its browser extensions are not web3js providers, so can’t interact with Ethereum DApps that easily. The Jaxx applications treat ERC20 tokens as separate "blockchains", so appear next to Bitcoin, Litecoin, and Ethereum, rather than nested into Ethereum's interface. Only popular, well-tested tokens get added as options, so if you hold tokens from other contracts, you can't interact with them through the Jaxx interface. It's a Hierarchical, Deterministic (HD) wallet, so can be backed-up with a 12-word key phrase.

MyEtherWallet.com

Web-based tool for interacting with Ethereum contracts, and has a dedicated tool for working with ERC20-based tokens. However, it does not directly use the web3js interface, so it cannot directly interact with MetaMask or the Mist wallet. It requires entering your private key phrase from MetaMask, and it does the transaction signing for you (not that secure).

However, it does integrate directly with Trezor and Ledger devices, so can be used as a means to interact with tokens sent to addresses held by those hardware wallets.

Ledger

Hardware wallet; highly-secure since your private keys never leave the device itself. Originally designed for Bitcoin, the Ledger devices can get additional "apps" installed on them to support other currencies, and Ethereum is one of them. The Ethereum wallet desktop application provided by ledger is pretty good for general transactions, but does not have Contract-interaction options. However, using MyEtherWallet.com, you can interact with ERC20 tokens and other contracts using the device. The Ledger software is not a web3js provider, so cannot interact with DApps directly.

Trezor

The original hardware wallet implementations, and still a viable contender, though they've been focused on Bitcoin for a long while and only recently started adding in support for other cryptocurrencies. Connecting to their wallet site at https://wallet.trezor.io, you can get basic interaction with Ether sending and receiving, but no advanced interaction with Contracts. However, using MyEtherWallet.com, you can interact with ERC20 tokens and other contracts using the device. The Trezor software is not a web3js provider, so cannot interact with DApps directly.

Conclusion

Long-term Savings

Either a Trezor or a Ledger; both are great. You physically need your device to spend any coins from it, so it is not good for sharing on all your computing devices and should really be used for your long-term savings accounts, where the hardware wallet device itself is going to spend a vast majority of its time in your strongbox.

Pocket cash

For a phone app, I have been using Mycelium for Bitcoin "pocket cash", but I do think Jaxx will be more useful going forward as I'm investing in multiple cryptocurrencies. Mycelium has a built in local trading option, which Jaxx does not have, which might be useful, though I've had some local ads up for several months with no takers, so probably not as valuable in my location currently. Also, Mycelium can interact directly with Trezor devices, which makes it great for tracking the current value of your cold-storage wallet (you can sync just your public keys to the Mycelium app, so it can track transactions for you), but it does not work directly with Ledger devices (which is what I have). So, I'll probably be switching over to Jaxx full-time, though will keep Mycelium around to watch the local trading activity.

Desktops/Laptops/DApps

For actually interacting with DApps, right now it looks like the MetaMask browser extension is the best option, allowing it to be easily synchronized across multiple devices by using the same key phrase, and not needing to install your own geth node to interact with the network. But in order to work with tokens or complex contracts directly, you need to use a tool like MyEtherWallet, which requires you to put in your private key to use, so not the best for keeping large amounts of data that has a greater risk of the private key being exposed.


Hope that was helpful for you; what's your technology stack for interacting with Ethereum? I'll keep revising my stack as the ecosystem evolves, and post updates when I do!

Ethereum wallet solution | Ecency