Metamask Ethereum Extension: An old warhorse (REVIEW)

in #ethereum5 years ago (edited)

GitHub

At this stage of the evolution of the Ethereum blockchain, it feels quite strange to be posting a "first" review of the old crypto warhorse Metamask. The Metamask extension (available for all major web browsers) is a simple way to interact with the Ethereum blockchain. It supports all transaction types that most people are likely to require including: basic wallet functions (send/receive), contract signing and access authorisation. As a long-standing backbone of the Ethereum ecosystem, it is supported by ConsenSys as well as receiving Ethereum Developer Grants.

On the listing of wallet apps at the ranking site "State of the dApps" (also found on STEEM as @stateofthedapps), MetaMask is currently ranked 709 across all dApps across multiple blockchains. However, this ranking does not yet adequately reflect the trust and usage that this long standing dApp has in the Ethereum ecosystem.

Installation and Set Up

The first thing you will need to do, is to install the extension for your preferred browser, the links can be found on the opening Splash page of Metamask. As always, verify that you have the right extension from the correct developer!

If you already have a private/public key pair attached to Metamask, then there is no problem. You will need to log in with a password though, which is a point of weakness at the moment (however, I do see that there is now an option for Ledger integration which might be more secure).

However, if you do not currently have a key pair attached, you can choose to generate a new key pair (or even if you would like to have another set of keys) or you can import an existing key pair via the seed phrase that generated them.

I already have a key pair attached to my Metamask, so I will be pretty brief in this section. Key generation is like any other Ethereum key generation, you will be prompted to record the generating seed phrase (12/24 words) before being shown the private/public key pair. The private key is held encrypted by the extension (so it is less safe than a cold wallet, but more useful!) and you will need to construct your own password to log in to the MetaMask extension to be ablel to use the key pair for transactions on the Ethereum blockchain.

Overview

After logging in, you are presented with some general information about your attached account: Account Name, Transaction History and Ethereum/ERC20 Balances. Note that you are able to rename your key pairs within the extension, but that these names are not visible publicly.

As you can see, I have renamed my keypair to "Bengy", and I have some token balances, as well as a handful of CryptoKitties (non fungible tokens, NFTs). The transactions are all listed on the right in time order, and the network that you are connected to is displayed clearly at the top. Most users will be using only the Ethereum Mainnet, however, there are other options available for more advanced users and developers including testnets and customised RPCs.

Each transaction can be clicked on to expand out into a much more detailed view, with timestamps and other transaction information. If you wish, the transaction ticket can be clicked on to send you to view the actual transaction on the Ethereum blockchain via Etherscan (or you can copy the transaction number to view on the blockchain explorer of your choice).

Basic Wallet Functions

The basic wallet functions are pretty much the same as all current cyrptocurrency wallets, you select the account that you want to send from, the account that you are sending to (via address or QR code), the currency (ETH/ERC20/NFTs) and then the desired gas fee depending on the speed that require. No surprises here!

If you want, you can allow the option to customise the gas fees limits required for the transaction. However, I recommend that you leave this option untouched unless you really know what you are doing. There is a danger that you set the gas fee too high (paying too much for your transaction) or too low (your transaction will never get picked up for block inclusion).

Built into the wallet is a simple method to restock your address with Ethereum (ETH), allowing for simple deposits via credit card or other fiat payment methods (although they need to update their "no account" blurb for ShapeShift!).

Contract signing

Where Metamask starts to shine is in its ability to interact with and to sign Ethereum contracts. Ethereum is currently the go to blockchain for the smart-contracts that power decentralised finance, non-fungible tokens and a whole host of other dApp initatives that aim to harness the power and advantages of a decentralised public ledger without needing to build a blockchain from scratch.

For most dApps, you will need to sign a transaction that will authorise the dApp, essentially attaching your Metamask key pair to your dApp account. After this is done, you can also sign individual transactions or smart contracts as required by the dapp platform.

In this sample transaction in the screenshot above, I am authorising the Compound dApp to withdraw 50 BAT which I had contributed to the lending supply pool. After requesting to withdraw the token supply, Metamask will pop-up a window with the transaction request and a rough estimate of the gas fees required (interestingly enough, it seemed higher than normal today!), more details of the actual contract/transaction request can be seen under the "data"tab (but for privacy reasons, I'm not showing that). A quick tap on the Confirm/Reject option will either sign the transaction or reject it (this time I rejected it, as I wanted to keep in the lending pool). If you had selected to confirm and sign the transaction, the transaction is sent to the transaction queue to await inclusion into the next available block (which will also depend on how much you were willing to offer the miners for inclusion in gas fees). After that, it is time to forget about it until you receive a notifcation that the transaction has been confirmed and included into the Ethereum mainnet blockchain.

Note that there is no ability to construct contracts or other more involved developer use cases. Metamask is useful mainly for the user of dApps to easily sign transactions and contracts.

Settings

There is a simple interface for toggling between some user interface options and other more involved settings for the Ethereum interface.

The first "general" tab is your localisation settings. Language, preferred currency conversions (which also includes crypto options as well as fiat) and the primary display currency (which is more logical in ETH rather than fiat).

Some gnereal UI settings are under the "advanced" tab, mainly dealing with things that would only be of interested to the more technically minded user. Again, for regular users, it is best to leave these settings on their default settings, to avoid breaking anything or doing things that you didn't intend to do!

Also under the "advanced" tab is the ability to export logs or sync easily with a the mobile version of Metamask (typing crypto keys or seed phrases is both a pain in the arse and a security risk on a mobile device).

There are the options for the more advanced user to use dApps like Burner wallet, which will require the use of a custom RPC network. You will need to had the new RPC URLs under this "Network" tab, and it also allows you to switch between the Main Etherereum network and the various testnets that are currently in use. Most users will only require the use of the Ethereum mainnet though, so it is advisable to not touch these settings unless you know what you are messing around with.

My Thoughts

Metamask, what can I say? Well, to start with... it's always a great thing to have a cute mascot! I love this fox, and I love that his head follows your mouse around the screen! Although, it does make it a little tricky to take screenshots of the guy without the mouse pointer being in the way!

However, on a more functional front, Metamask is a clean and simple interface for the interaction with smart contracts and transaction signing. Keep in mind that it is a hot wallet, and that it is vulnerable to the same attacks that target all other browser extensions. There is also the necessary weakness of a log-in password, which makes that a vector for attack. Lastly, it the encrypted private key is stored on your computer which will be consantly internet connected. However, these things are all vulnerabilities common to all hot wallets, so the usual precautions apply, only stock the wallet with the Ethereum required to do what you need (typically only gas fees) and pracice good password and online hygiene.

Metamask does what it needs and it does it simply and well. All the information is simply presented and clear for the user, with more detailed information readily available (through Metamask itself or via Etherscan or another Ethereum block explorer) for the more interested user.

I only have one gripe... and it is a tiny non-functional gripe. I love my dark themes, and at present Metamask does lack an option for this. Which makes for a glaring white popup when contrasted against he dark backgrounds of my usual workflow. However, this might be a blessing in disguise, as it is a very bright and clear indicator that there is a Metamask transaction that requires action!

Useful Links

MetaMask homepage
State of the dApps listing
Github

Sort:  

I've been using Metamask for a while now, and except for the fact that I always have to plug in my external hard drive to find my password, I do like it.
I remember it took me a while before I managed to attach the key pair, lol.

Yeah... that would be a pain in the arse! You really should use the Ledger/Trezor option, it is much safer... although, that would mean you need to shift everything over to the safer ETH address...

The Ledger/Trezor option is fairly new, if I'm right. I haven't tried it yet (i own both), but I really should one of these days

Meta mask is great. It's an essential tool for anyone who uses Chrom, ethereum and / or erc20 tokens.

Excellent tutorial.

Namaste, JaiChai

Been using Metamask since a year and it never let's down. Awesome review pal!

It is very solid extension I have been pleased to make use of, straightforward and functions as it should!

Hi @bengy!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 4.672 which ranks you at #1631 across all Steem accounts.
Your rank has dropped 1 places in the last three days (old rank 1630).

In our last Algorithmic Curation Round, consisting of 173 contributions, your post is ranked at #42.

Evaluation of your UA score:
  • Some people are already following you, keep going!
  • The readers appreciate your great work!
  • Good user engagement!

Feel free to join our @steem-ua Discord server

Coin Marketplace

STEEM 0.32
TRX 0.11
JST 0.034
BTC 66004.40
ETH 3243.40
USDT 1.00
SBD 4.19