walletbeat icon indicating copy to clipboard operation
walletbeat copied to clipboard

Browser wallet evaluation page

Open polymutex opened this issue 5 months ago • 5 comments

Idea from #219.

We should maintain a static page where we can test out browser wallets. This would help quickly evaluating browser wallets' support for certain EIPs, such as EIP-1193, EIP-2700, EIP-6963, EIP-5792 (and checking the atomicity support for that too).

Could also be useful to try out test transactions, for calldata decoding checks and for testing "weird" transactions like 7702 account upgrades (#166).

polymutex avatar Jul 12 '25 22:07 polymutex

@darrylyeo This isn't part of the Astro refactor, but if you don't mind, I'd like your take on how we could have such a page on the Walletbeat site with minimal (or no) dependencies.

Part of the challenge here is that high-level wallet connection libraries tend to leak data (e.g. make requests to third party websites for non-necessary things like wallet icons), and tend to smooth over the very wallet intricacies that we want such a tool to be able to distinguish (e.g. distinguishing that a wallet supports only EIP-1193 vs one that supports EIP-6963). They also may not be able to express transactions we want to test, e.g. #166.

If you have worked with wallet connection libraries, do you have a recommendation that would fit the bill here? Or would we need to write our own low-level library to do this?

polymutex avatar Jul 13 '25 01:07 polymutex

  • viem's wallet client is the best out-of-the-box library for EIP-1193 interactions, and it also supports EIP-5792. Might be worth diving into the source code for how it handles edge cases for both EIP-5792 and EIP-7702.
  • I don't imagine any wallet supporting EIP-1193 today would not also support EIP-2700, but should be pretty simple to test this manually by setting up some event listeners.
  • EIP-6963 also is pretty trivial to implement manually – just register a request event, read what gets announced back, then match up to known reverse-DNS strings. See eip6963.org or the "Wallet" menu on blockhead.info for prior art.
  • wagmi's connector abstraction is the best for handling the most popular browser wallets / archetypes – maybe too high-level for purposes of testing individual EIP support, but should serve as a good reference if needed.

The only really tricky bit I anticipate here is finding the actual EIP-1193 objects for wallets that somehow don't support EIP-6963 events by now (which entails scanning for a bunch of global JavaScript variables and checking their "isWalletName" flags). If we discover there are enough such cases lingering around, I'd be more than happy to update/adapt this wallet detection system I made for blockhead.info a while ago.

darrylyeo avatar Jul 14 '25 05:07 darrylyeo

@maykelxyz Would you be interested in this issue?

I think this would give you valuable experience for writing dapps, since this would be non-Walletbeat-specific code that does wallet connection stuff and requesting the wallet to sign transactions.

polymutex avatar Nov 25 '25 06:11 polymutex

This would be useful to test all the test transactions used as part of the transaction legibility attribute. Very valuable for quickly testing new wallets on that, rather than having to go to each relevant app manually.

polymutex avatar Nov 25 '25 06:11 polymutex

Yes, this would be a nice feature to have. Also had experiences in writing dApps, I could probably use some help in setting up the infrastructure to support this.

maykelxyz avatar Nov 25 '25 15:11 maykelxyz