Comparing Phantom Beta Polygon & Ethereum Wallet To MetaMask

What Phantom Beta Wallet For Ethereum & Polygon Can & Can’t Do

Manny
9 min readDec 25, 2022

Full disclosure: I have been given access to the beta and have made a request to join a private discussion group to offer feedback. I wasn’t offered anything from Phantom nor from my employment at Polygon, so this article is just a collection of my thoughts and opinions.

Examining Phantom Wallet & Comparing It To MetaMask Wallet

Phantom Wallet Is Supporting Polygon & Ethereum

A new announcement in 2022 is that Phantom Wallet is supporting Polygon and Ethereum, soon. This is great news because it brings alternatives and competition to the browser crypto wallet market. While I do love and continue to use MetaMask as a daily driver, it’s good to see what’s out there and what’s coming.

https://phantom.app/blog/one-wallet-for-everything-adding-ethereum-and-polygon

Access To Beta

In this article I’ll be looking at the recent Beta for Phantom wallet, and doing a comparison with MetaMask to look at where they differ. Although this comparison is with Phantom wallets’s early Beta, a lot of the features are still a work in progress.

https://phantom.app/waitlist

Reviewing

Before going any further, I realize that Phantom wallet with Ethereum and Polygon support is beta so there is definitely going to be some things that aren’t fully baked. I will say that this article isn’t to throw stones at Phantom wallet or paint a negative picture. The goal is to hopefully document what’s missing in hopes that they make the app better.

Wallet Setup Comparison

One of the main takeaways from setting up both wallets is that Phantom seems to be more geared towards an experienced user while MetaMask focuses on onboarding users that have never used a crypto wallet before.

Phantom Wallet Setup 4 Steps To Setup
MetaMask Focuses On Education

The user-flow for Phantom is definitely more streamlined but with just 4 steps, while MetaMask seem to introduce screens that don’t necessarily need to be present.

Extra screen that doesn’t really accomplish much

One thing I do wish that Phantom wallet had was a quick copy to clipboard of the entire secret recovery phrase to paste into a password manager versus copying every word individually.

Both wallets could also offer an easy download as a CSV for the secret phrase as well.

Secret Recovery Phrase Backup

RPCs & Networks

Currently there is no way to add your own RPC addresses to allow for different networks in Phantom wallet. It currently only shows Polygon Mainnet and Ethereum Mainnet.

While it doesn’t show it, it does support Testnets Goerli and Mumbai, but not Sepolia. A missed opportunity would have been to allow for Localhost connections for developers to better test their contracts.

Switching To Mumbai Testnet Works
Sepolia Testnet Not Yet Supported

I also couldn’t find any information on the RPCs that Phantom wallet uses, which could mean they use their own or another service provider. I don’t know if Phantom App plans to divulge this but given that it hasn’t been Open Sourced leaves a lot to guess. This is isn’t great because given the number of hacks lately could pose a problem for them later.

It should be noted that while the documentation does say it supports most JSON-RPC requests for wallet interactions (emphasis on the word wallet), it doesn’t allow for the more broader RPC requests for basic eth_call without the need for passing a second param.

// Doesn't work
await window.ethereum.request({
method: 'eth_call', params: [{
to: '0x375F01b156D9BdDDd41fd38c5CC74C514CB71f73',
data: '0xfe50cc72'
}]
});

// Works
await window.ethereum.request({
method: 'eth_call', params: [{
to: '0x375F01b156D9BdDDd41fd38c5CC74C514CB71f73',
data: '0xfe50cc72'
}, "latest"]
});
RPC rquest eth_call not working

While, eth_sendTransaction did work, it didn’t allow for seeing if the transaction went through on Mumbai Testnet or showing the reflected balance. It does however show it working on Polygon Mainnet.

Mumbai eth_sendTransation Working But Not Reflected In UI
Polygon Mainnet eth_sendTransaction Working & UI Showing

Nonces & Gas Transactions

It’s no surprise that transactions don’t have any management of setting the nonce number to see about setting up transactions in a specific order. Although this is offered in MetaMask, this isn’t really something that most users understand and sometimes causes more confusion than helps.

Phantom wallet does have threshold for gas limits, but done in a way that simplifies the UX for the user so that they aren’t fiddling around with minimums and maximums.

Phantom Wallet Gas Optimizations

Wallet Connection Adoption

This is something that will come with time and more adoption, but it would be great to see more adoption of the wallet for things like Etherscan, Rainbowkit (coming soon), Connectkit, and Remix.

Etherscan No Wallet Connection Support For Phantom Wallet
Remix No Way To Switch Networks For Injected Provider For Phantom Wallet

Load Times

One thing that I did notice is the load times and transitions for trying to interact with Phantom vs MetaMask is slightly better. It’s a small thing, but when you interact with your wallet constantly, especially when testing, you can notice it more when clicking on MetaMask several times to bring it up.

MetaMask Wallet vs Phantom Wallet Load Times

Connected Sites

The equivalent of MetaMask’s Connected Sites are called Trusted Apps, which takes some getting use to. Unfortunately, as someone who frequently disconnects sites, the number of steps to disconnect a site is an extra step compared to MetaMask. I also wish that both wallets would implement a disconnect from all sites.

MetaMask Steps

Two steps to get to your Connected Sites (3 dots > Connected Sites).

MetaMask Two Steps To Connected Sites

Phantom Steps

Three steps are required to get your Trusted Apps (Menu > Settings > Trusted Apps).

Phantom Wallet Menu
Phantom Wallet Settings
Phantom Wallet Trusted Apps

Token Balances

Custom ERC20 tokens and ERC721 NFTs aren’t supported yet, and hopefully it won’t cost a few to add them to your wallet.

Phantom Wallet Add ERC20 Token Not Supported

Small Frustrations

Connection Issues

Phantom also has issues sometimes connecting to sites, where you disconnect, try to reconnect, or perform transactions, it just shows a loading screen in multiple or inconsistent windows.

Phantom Wallet Loading States

Account switching while connected with another wallet doesn’t prompt the new wallet for a new connection. This is probably related to it not working potentially yet with the ethereum event for accountsChanged.

Switching to another wallet doesn’t prompt again for connection

RPC Debugging

As a developer that uses their wallet for deployments and other more complicated transactions it would be good to see RPC errors and their full logs to better debug.

Wallet RPC Requests

This would be to support the full wallet RPC requests that follow the same conventions as MetaMask wallet requests, including wallet_getPermissions.

MetaMask Overriding

Currently, you cannot have both Chrome extensions enabled at the same time as Phantom overrides the injected provider from MetaMask.

I already foresee this being an issue when users would like to use both their MetaMask and Phantom wallet as they transition from either or until features are supported. Both MetaMask and Phantom have a flag for isMetaMask and isPhantom but both come back true while using Phantom. There has to be a way for both of these wallets to coexist in the meantime.

Missing

These were a few things that I noticed were missing and probably need to be worked on some more.

Hardware Connection

This is more that I need to test it and I couldn’t really because I didn’t have a hardware wallet to test with. This is something that would be key

Expanded View

Don’t get me wrong, I like the UI and UX for Phantom, but sometimes seeing a larger and vertically longer view helps with seeing the full picture for a transaction.

MetaMask Expanded View

Add RPC

I realize that Phantom has its own RPC service, but I think it should still allow for other RPC providers to be added to support other networks, including Localhost.

Chainlist.org

Localhost

Localhost support that works with Hardhat to support wallet interactions for local development.

Local Development

Phishing Detection

I can’t say that I have seen this working too much with MetaMask, but this could also be an opportunity for Phantom to shine to protect its users better.

MetaMask Phishing Detection

Download Logs

The ability to download or see logs in a better way would definitely help with development debugging.

MetaMask State Logs

Native ENS Support

Native ENS names for wallets being shown would be great.

Phantom Wallet Supports Sending To ENS But Could Also Display It Better

Snaps

I realize that there is a bunch of functionality that Phantom needs to get through but it would be good as a follow up, once the wallet is at a stable version.

MetaMask Snaps

Open Source Code

This is more of request to help users contribute to their docs and the code. I think this can go a long way to helping improve the wallet.

Opportunities

These are definitely feature requests or things that could help differentiate Phantom from Metamask.

Native Multi-signature Delegation

The ability to see Safe Wallets or Multsig Wallets within Phantom and allow for Delegate signature signing. Read about this further in my other blog post on Getting Started With SSX & DAO Logins.

Self-Sovereign ID

Following the book on Self-Sovereign Identity, there could be something offered where the wallet could be extended to allow listing issuers, storing claims, and creating cryptographic proofs.

Extensions Store

If Phantom is a for profit company, it would probably make sense to allow extension to be added where these extensions could take a percentage of fees in a sort of wallet store for Phantom.

Overall Thoughts

The team is making big moves to support more chains and especially coming from a dedicated non-EVM supported network is a win for the wallet in my opinion. Not everything is going to be done right away, but hopefully the team looks at this article as what is possible for such a great wallet that has a decent UX experience.

I’m hoping to do an article on the various RPC requests that Phantom does support, that way we can see the full checklist and make sure we account for them for any frontend or blockchain requests.

If you got value from this, please give it some love by sharing it, and please also follow me on twitter (where I’m quite active) @codingwithmanny and instagram at @codingwithmanny.

--

--

Manny

DevRel Engineer @ Berachain | Prev Polygon | Ankr & Web Application / Full Stack Developer