MetaMask is a web browser add-on which enables anyone to run the Ethereum DApps without running the Ethereum full node. An Ethereum full node installation will take a lot of memory as well as time; so Metamask is a tool that eliminates the overburden of this hectic installation task. Initially, Metamask was available only for Google Chrome, but now it is available for Firefox and other popular web browsers.
MetaMask addon for chrome can be added from chrome web store or from 'metamask.io' website
This MetaMask addon provides a user interface for interacting with the blockchain. The user can connect to the Ethereum main network or 'testnet' or he may create his own private network and run Dapps on the blockchain.
MetaMask retrieves data from the blockchain and allows the users to manage the data securely.
But MetaMask will inject the web3.js to each page for accessing the ethereum blockchain by itself. This approach eliminates the effort of web3.js installation in the local system.
After adding the Metamask, the user can interact with Ethereum blockchain just like in the normal case. The user can create an account, access Ethereum DApps, or deploy once own DApp.
The Metamask provides a vault account for each user, this vault secures, stores and tightly controls access to tokens, password, certificates, API keys and other elements in blockchain apps.The vault account act as a second level encryption for the user account.
The Metamask will provide a group of 12 words “wallet seed” while installing it. It is the user credential and it must be stored somewhere safe. The users can also create passwords for their account.
The wallet seed or the password is necessary to log in to the MetaMask. The vault account will encrypt the user metadata and securely store it in the browser itself.
The Metamask user interface has a default buy and send option for buying and sending ether. The user can buy or send ether through this interface. The user can access his wallet, check his balance and transactions from this interface.
When the user executes a transaction from the Metamask it will send the transaction to the respective blockchain network. Then the corresponding validation and confirmation will occur in the blockchain as usual. In the case of 'testnet' and main network, the user can see the transaction details and confirmations in the ‘Etherscan.io’.
Here is an example of a transaction of Ether through Metamask.
For sending ether to an account you have to specify the recipient address and the amount to be transferred.
before linking your transactions to the blockchain the web3.js will ask your permission and the transaction will be submitted only after your approval.
From this window, the user can reset, submit or reject the transactions. Without the user response, the metamask will not perform any further operations. Once the user submits the transaction, it will be sent to the blockchain for validation. The transactions will be broadcasted to the nodes and once the validation is completed you can see the transaction details in the etherscan window. The window will display all the information regarding that transaction ie; block number, hash value, sender and recipient address, number of confirmations, gas units, transaction cost, nonce etc.
GNOSIS, MAKER, TOKEN FACTORY, CryptoKities etc. are some DApps that supports Metamask. Any developer can submit DApp in ethereum with Metamask support so that the user doesn't need to install the full ethereum node for accessing the particular app. The Metamask is the very useful tool for accessing Ethereum in low bandwidth networks. Let's hope the tool will expand the reach of 'ethereum' to more people.