I am kind of new in the world of Ethereum. Can someone help me understand the difference between account created using metamask and the one using geth command?

I am building an app, which is requiring me to create wallet internally(or accounts, not sure what to use) for every user who registers in the app. Further, I need to provide some default coins to every user. How can I get this done?

I am creating my private blockchain network.

3 Answers 3


geth at its core is a node software, whereas metamask is a wallet and web3 provider. Geth also offers some wallet functionality.

An externally owned account on ethereum is backed by a private key. When you use metamask, this private key is stored locally on your device, and metamask will sign transactions as requested by web3, and then broadcast the signed transaction to a remote node, geth in this case.

If geth holds the private key, you can use that key over the RPC APIs using the personal and eth services, or within the geth console. In this case, geth is able to sign and broadcast transactions without metamask.

Usually, a dApp will not hold the users' keys on their own geth servers. Users will use metamask to interact with the dapp, and the keys will be stored by the user only. When the user wants to perform a transaction, they will sign a transaction, and connect to the remote node only to broadcast it. A user's key should never be shared with the remote node.


Using Metamask you can use the accounts created on geth to access DAPP(Decentralized Application). One cannot access DAPP's using a conventional web browser. Metamask enables your browser to access DAPP.

You need to create geth accounts for each newly added participant and import private key of that account in the Metamask.

You can pre-allocate huge ethers to the first account(account[0]) in the genesis.json file of private blockchain and the transfer some ethers to newly created accounts(users) from account[0].

  • Thanks for the reply. I will use web3j to interact with ethereum. I will also deploy smart contracts in the network. However, can I call these smart contracts directly from my java files within the application ? or vise versa ? Commented Aug 23, 2018 at 6:54
  • Yes, you can access smart contract directly from java files using web3j Commented Aug 23, 2018 at 7:00
  • This is incorrect. The geth node does not need to have the same accounts as metamask. Metamask accounts are independent Commented Aug 23, 2018 at 7:03
  • I agree that metamask accounts are independent. I want to convey that if one wants to access DAPP using account created on geth then one need to import the private key of that account in Metamask. Commented Aug 23, 2018 at 7:08


Official Go implementation of the Ethereum protocol link

So with geth you can:

  1. Run an Ethereum node
  2. Sending transactions
  3. Creating accounts
  4. Managing Wallets
  5. Communicate with Ethereum network
  6. Mining and ...


A crypto wallet & gateway to blockchain apps link

So MetaMask is just a way to communicate with Ethereum network without running a Ethereum node like geth. but how they manage it? it seems they uses https://infura.io/ to send a transaction and .... MetaMask is also offering other features ...

What is infura?

Ethereum & IPFS APIs enter link description here

So as it says they are providing APIs, so we can easily communicate with Ethereum netwrok. in background they probably have geth nodes or other kind of nodes.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.