Using MetaMask and Keplr with Evmos
--
Understanding the relationships among MetaMask, Keplr, and Evmos can get a little tricky, but by the end of this article, you’ll be an expert on why and how to use these wallets on Evmos.
Evmos brings the Ethereum Virtual Machine (EVM) to the Cosmos ecosystem: a powerful combination of two worlds that weren’t able to communicate before. That’s because they’re built differently: Ethereum and other EVM-compatible chains are built with certain rules to be compatible with the EVM. Cosmos ecosystem chains (such as Cosmos Hub and Osmosis) are built to a different set of rules called the Inter-Blockchain Communication Protocol, also known as IBC.
MetaMask and the EVM
For a wallet to work with EVM-compatible chains (such as Ethereum and Polygon) and interact with smart contract dApps, it needs to be able to sign EVM transactions. In other words, it needs to be EVM compatible. MetaMask is the EVM-compatible wallet that is supported everywhere on Evmos.
Evmos is fully EVM compatible, meaning it can run any dApp that can be run on Ethereum. These dApps are smart contracts, which are made of code that is executed by the EVM. As you might expect, only EVM-compatible wallets like MetaMask can interact with these dApps. All apps deployed on Evmos are smart contract dApps. That’s why you use MetaMask to perform swaps on Diffusion instead of Keplr — Keplr isn’t EVM compatible, so it can’t sign EVM transactions.
Keplr and the Cosmos Ecosystem
Keplr might not be able to interact with the EVM, but it can do something MetaMask can’t — use IBC coins (Cosmos coins) and interact with chains in the Cosmos ecosystem, such as Cosmos Hub and Osmosis. Keplr can interact with the non-EVM parts of Evmos: voting on governance proposals and staking with validators.
All Cosmos chains are built using the Cosmos SDK, which is a framework for building application-specific blockchains. There’s no EVM or smart contracts involved here, so MetaMask can’t sign Cosmos transactions. This includes IBC Transfers between Evmos and other Cosmos chains, such as Cosmos Hub and Osmosis.
An Exception to the Rule: The Native EVMOS Token
Remember when we said that MetaMask can’t interact with IBC Coins? The native EVMOS token is an exception to the rule. Although the EVMOS token is actually an IBC coin (its wrapped ERC-20 counterpart is the wEVMOS token), it’s still compatible with MetaMask because being the native token of the Evmos chain gives it some special features.
This is also why you can use MetaMask to stake tokens with validators and vote on governance proposals, even though Evmos is a Cosmos chain. Of course, Keplr can also be used to vote and stake on Evmos, as it’s signing Cosmos transactions.
MetaMask, Keplr, and the Dashboard Assets Page
Here’s where things can get pretty subtle. If you aren’t sure what the Evmos ERC-20 module is, you’ll want to take a moment to familiarize yourself before continuing.
While the MetaMask interface can’t display or transfer IBC coins other than the EVMOS token, it can still hold those tokens in your wallet. Using the Evmos Dashboard will allow you to see, convert, and transfer those IBC coins*. This is relevant when using the Assets page actions: Deposit, Withdraw, and Convert.
Note that the Convert feature of the ERC-20 module can only be accessed with MetaMask, because MetaMask can receive both ERC-20 tokens and IBC coins (even if it can’t do anything with the IBC coins). Keplr can’t display or interact with ERC-20 tokens, so you can’t use Keplr to access the Convert feature for IBC coins.
*The Evmos Dashboard only displays tokens that have been whitelisted by governance, so don’t go sending just any IBC Coins to MetaMask! To avoid getting your funds stuck, always use the Deposit and Withdraw functions from the dashboard to transfer IBC Coins to and from MetaMask.
Check out the guide to the Assets page for more details.
Wait, what about Ledger?
Ledger can be used with MetaMask to sign EVM transactions for interacting with dApps on Evmos; you just need to use the Ledger Ethereum app. However, Ledger currently can’t be used with Keplr because it’s hard-coded to use the Cosmos Ledger app, which can’t sign EVM transactions (like Keplr by itself), and therefore can’t interact with Evmos dApps.
How do you transfer EVMOS tokens between MetaMask and Keplr?
NOTE: This is for transferring EVMOS tokens on the Evmos network, not IBC transfers. For IBC Transfers, use the Assets page of the Evmos dashboard.
There are two formats for displaying your address on Evmos: hex and Bech32. Hex addresses start with 0x… and Bech32 addresses start with evmos1…. These are really just two different ways of representing the same address.
Sending from Keplr to MetaMask: Simply paste your MetaMask address into the recipient field, exactly like you would for any other token transfer. Both hex and Bech32 addresses are accepted.
Sending from MetaMask to Keplr: MetaMask only recognizes hex addresses, so you’ll need to get the hex format of the Keplr address.
For your own address: when you switch to the Evmos network in Keplr, you’ll see your address displayed in both forms above your balance. Copy the one that starts with 0x….
Alternatively, paste the evmos1… address into Mintscan and click the “Ethereum” button to see the hex format of your address.
Remember: EVMOS tokens are a special exception. You shouldn’t try to send other IBC coins to MetaMask from Keplr, as MetaMask doesn’t support IBC coins and your funds may get stuck.
Here’s the TL;DR summary:
Apps on Evmos are EVM-based dApps just like on Ethereum, so only an EVM-compatible wallet like MetaMask can interact with them.
IBC Transfers between Evmos and other Cosmos chains require wallets that are compatible with Cosmos chains, such as the Keplr wallet.
To fully utilize everything Evmos has to offer, you’ll need to use both wallets.