I have done a lot of research regarding the working of web3 and the new library called ether.js, Also how the seed phase work in the creation of wallet and addresses and the Hierarchical Deterministic wallet, All the bitcoin improvement proposals - bip-32, 39, and 44.

Now, My ultimate aim is to make my own version of Metamask and just to be sure I want do get some clarification:

  • Metamask is a cryptocurrency wallet that generates and maintains your different accounts in your wallet and also offers an in-house functionality to transfer funds -- right?

  • Metamask acts both as a signer(as it stores your credentials for transaction signing) and a provider(as it gives you the local web3 instance and reference to different test-net and the main-net) -- right?

I went through the Metamask GitHub page and tried my best to get something out of the code, but I was unfamiliar with the tech they have used in accomplishing these functionalities.

Now I want to know how I can make my own version of Metamask. As:

  • Transaction building and signing are possible but retrieving estimate gas, nonce, and other stuff and creating a Tx and making an async call.

  • Making a wallet involves generating a seed value and further account creation and other things. I guess all the complicated maths behind the scenes are taken care of by the functions(that we will use) itself.

But all this is theoretical, how can I proceed, practically.

All I know is it takes patience, research, and lot of learning ,and I am ready to give it all. Please Help!

  • I think Metamask is a provider... why ... cause there are options to access different test net and the main net and also initially Metamask inject its own version of provider with web3 and then to use our own version, we can override during our development. Jun 22, 2020 at 17:04

1 Answer 1


Metamask is not a provider - they use Infura as their service provider. So whatever transactions Metamask creates it sends to Infura for adding to the blockchain.

Otherwise you are quite correct - it creates transactions, manages accounts and relays transactions in a user-friendly manner.

Most likely you will not want to implement the actual private key -> public key cryptography yourself, but there are read ready libraries for that. The mathematics involved is quite scary. Otherwise I don't think there are many complicated issues to be handled except the overall security of the product.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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