What Phantom Beta Wallet For Ethereum & Polygon Can & Can’t Do
Manny · Follow
9 min read · Dec 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.
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.
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.
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.
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.
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.
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.
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.
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"]
});
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.
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.
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.
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.
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).
Phantom Steps
Three steps are required to get your Trusted Apps (Menu > Settings > Trusted Apps).
Custom ERC20 tokens and ERC721 NFTs aren’t supported yet, and hopefully it won’t cost a few to add them to your wallet.
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.
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
.
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.
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.
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.
Localhost
Localhost support that works with Hardhat to support wallet interactions for 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.
Download Logs
The ability to download or see logs in a better way would definitely help with development debugging.
Native ENS Support
Native ENS names for wallets being shown would be great.
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.
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.
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.
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.