MetaMask – Is an Account in MetaMask the Same as an Ethereum Account (EOA)?

accountsaddresseseoametamaskremix

First, my setup: I use the Azure Ethereum Consortium Template, which creates one transaction node and two mining nodes in my configuration. I use MetaMask Chrome plugin to accept transactions, which I initiate via Solidity Browser.

Question:

MetaMask is no full blockchain client, but connects to one (e.g. to a geth client), right? What are the "accounts" in MetaMask UI (and their addresses)? This is not Externally Owned Accounts (EOA) then, right? What is it?

For example, I created two accounts in my MetaMask Chrome Plugin. I use their addresses to send Ether from one to the other (via their addresses). However, I cannot see these accounts if I connect to the geth client and do "personal.listAccounts". Here, I only see one single account address (I assume this is the pre-allocated Ethereum account on this Azure Transaction Node / geth client).
However, if it is just one EOA Ethereum Account, why is the Ether then moving between these different accounts via MetaMask?

Can someone please explain the relation of MetaMask accounts and Ethereum (EOA) accounts?

Thank you.

Best Answer

MetaMask accounts are EOA accounts. They are not seen in Geth because the keys have not been imported from MetaMask.

Basically, MetaMask creates a hierarchical deterministic wallet from the seed (words). An HD wallet has many keys and each of these are EOA. (The MetaMask UI only shows some of them, but more keys can be continuously derived.)

In Geth, you don't see the MetaMask accounts because you would have to import the private keys from MetaMask to Geth.