# Privacy protocol <> Contract wallet
When researching the integration of privacy protocols within wallets, I found that **stealth addresses** and **privacy protocols** (e.g., Labyrinth) are a perfect match.
**Stealth addresses** allow generating one-time addresses without exposing any on-chain address associations, while **privacy protocols** enable confidential transactions between public addresses or between public addresses and stealth addresses.
However, integrating these privacy features into **contract wallet** is more complex compared to EOA wallet. The main challenge lies in the fact that contract wallet do not have fixed private key like EOA wallet. A contract wallet’s signer can be based on any algorithm and can be replaced at any time.
**1. Stealth Address**
- For EOA wallet, the primary challenge in implementing stealth addresses is creating a user-friendly UI to make them easier to use. For contract wallet, the challenge is far greater because contract wallet lack a (fixed) signer. Without a fixed signer, the classic stealth address algorithm cannot be used. This could lead to issues such as losing access to assets after social recovery or being unable to use the classic stealth address algorithm if the contract wallet’s key is not based on Elliptic Curve cryptography.
- While contract wallet could choose to expose an ECDSA public key through a interface specifically for stealth addresses, this approach has a significant drawback: user need to manage an additional private key (or seed phrase), which significantly degrades the user experience.
- Currently, no optimal solution.
**2. Privacy Protocol**
- Similar to stealth addresses, privacy account in protocols like Labyrinth are directly algorithm-based. For EOA wallet, the private key for a privacy account can be derived directly from the EOA’s private key (e.g., via a hash). However, for contract wallet, user need to maintain a separate key (or seed phrase) independent of the contract wallet’s signer. This, too, would severely degrade the user experience.
- Currently, no optimal solution.
If no account abstraction-native privacy protocol can be found, we may have to store a private key (or seed phrase) in the wallet that is independent of the wallet signer. This would prevent scenarios where assets in stealth addresses or privacy protocols become inaccessible after users change their signer.