---
# System prepended metadata

title: Enhancing Dapp Support for 4337 Wallets

---

# Enhancing Dapp Support for 4337 Wallets 

### Multi-Network transitions with Smart Contract Wallets

There are two implementations which can be used for creating smart contract wallet addresses across multiple chains:
1. Mapping Smart Contract addresses to be the same across multiple chains.
2. Creating randomized addresses via Contract creation.
There are pros and cons for each approach which have been discussed in [Account Abstraction in a Multichain Landscape - Part 1: Addresses].(https://safe.mirror.xyz/4GcGAOFno-suTCjBewiYH4k4yXPDdIukC5woO5Bjc4w)

With approach 1 there is a major change in the User experience. With EOAs you could seamlessly switch between chains with a single click. The change in experience is caused by having multiple addresses across all EVMs which are not mapped 1:1. 

So that leads to the question what is the correct way to switch networks for smart contract wallets?

### Tracking of user operations in Smart Accounts Wallet-DApp Communication

One challenge encountered by smart contract wallets is the communication between the wallet and apps when sending a transaction.

Currently, the dapp communicates its data to the wallet using an eth_sendTransaction request. It assumes that the account is an externally owned account (EOA) and waits for a transaction hash to be returned by the wallet. Then, it uses its own provider to monitor the status of the transaction in the mempool, allowing it to display the transaction status on its interface.

However, this approach is not ideal for a 4337 smart contract wallet. Instead, a dapp should track the status of a user operation (userOp) rather than relying on the transaction hash of the bundled userOp to determine its exact status.

There are several ways to address this issue, but a simple solution would involve the wallet returning a userOp hash. The dapp can then make requests to a bundler/node endpoint to monitor and display the status of the userOp itself.

### Signature Validation

It is important to note that not all dapps support the EIP-1271, which outlines a standard for signature validation. While there has been many helper libraries adding support for this eip, smart contract wallets on EVM equivilant chains remains second class citizen in the eyes of dapp developers. 

One potential solution to promote the adoption of EIP-1271 is to encourage major libraries used in dapp development to include support for these standards by default. By integrating signature verification with an ethereum library, developers can easily write code once and utilize the signature validation functionality without having to implement two different signature verfication methods for EOAs and smart contract wallets.
