Why and How to build Metamask for your own Blockchain

If you built your own blockchain or forked an existing one, one of your top priorities should be to make it easy for users and developers to interact with. MetaMask enabled Ethereum users and developers to easily use ETH and ERC-20 tokens, and use DApps without needing to use command-line tools or run their own node (thanks to Infura).

Aion realized this early on, which is why they had BlockX Labs build AIWA, a wallet and DApp interaction tool for Aion, for them. As Project Manager for AIWA, I’d like to go over the process that we undertook when building “MetaMask for Aion”; specifically, both the inspiration as well as the differentiation. I’ve written this for product people and executives so I’ve kept the jargon quite light.

Why do you need a wallet?

Firstly, you need to justify why your blockchain needs its version of MetaMask. As mentioned above, you want developers and users to interact with it. They need to read and write data and possibly send and receive cryptocurrency, If your blockchain is like Ethereum and Aion, you’ve got a distributed app ecosystem that needs to interact with it.

Without a wallet, it’s a lot more difficult for both developers and users to use your blockchain, so reduce the friction and provide them with tool(s) to make it easier.

What do you love about MetaMask?

Since you’ve got a reason to build a MetaMask-like tool, think about what you love about MetaMask and decide whether you want or need those features. At BlockX Labs, we like that MetaMask is honest with how it maps Ethereum’s features to its UI. MetaMask doesn’t hide or abstract away complexity but exposes it to the user. For example, it shows the raw gas price (in GWei) rather than abstracting it away by converting it to USD.

It also differentiates between seed-generated and imported wallets, so that the user can know which wallets are recoverable from the seed phrase. We also love that MetaMask doesn’t keep the user inside MetaMask; it provides links to Etherscan for viewing more transaction details and embeds the ability to use Coinbase and ShapeShift for acquiring Ether. It supports third-party services and doesn’t try to hold the user captive by doing everything itself.

Forget about MetaMask!

Once you’ve found the features that you love about MetaMask, it’s time to forget about it. Here at BlockX Labs, we use Agile with Scrum. I recommend writing user stories to figure out what user and developers will do with your tool and build your UI around that.

In our case, some of the basic features like the receive screen and how the DApp popped up ended up working pretty similarly to MetaMask. But by focusing on our user stories and not trying to clone MetaMask, we came up with a unique hierarchical interface that is modeled around the Token < Wallet < Vault metaphor.

As a result, we came up with the idea of a Vault to contain both seed-generated wallets and imported wallets in a single exported file. This makes it super easy for users to backup all of their wallets regardless of whether they’re seed-generated or imported from private keys. Of course, we also built the option to export individually using the standard wallet format as well.


Although it’s heavily influenced from my experience building AIWA, hopefully this article has given a decent overview of building something like MetaMask for your own blockchain. I didn’t mention some things that aren’t part of the core product but help make it easier to use (like Infura, and NodeSmith in our case). But perhaps a follow-up article could address the ecosystem partners that would be useful.