Challenge 3: Increased Risks of Sharing Traditional Storage Locations
Standard storage slots defined by ERC-1967 are particularly vulnerable to potential storage conflicts, as they are common locations that multiple delegated implementations might use. The ERC-1967 implementation slot is the only standard storage location used in EIP7702Proxy, which stores the address of the logic implementation pointed to by the proxy. Our design ensures that regardless of the value of this storage location (which determines most of the logic available in the account), EIP7702Proxy can always successfully set its implementation logic to the contract expected by the EOA.
To clarify the problem being addressed, note that when an account switches between different delegates (A→B→A), where both delegates implement the ERC-1967 proxy pattern, delegate B will naturally use the same storage slot that delegate A uses to store its implementation address. During its term, delegate B may modify or overwrite this slot, whether intentionally or as a normal part of its proxy action. In the UUPSUpgradeable proxy pattern, the logic for upgrading the implementation is defined on the implementation contract itself. If the implementation placed by delegate B at this pointer location does not include the expected upgradeToAndCall interface on the implementation, the mechanism for changing its implementation may not exist in the currently available logic when returning to delegate A.
Solution: Upgrade Mechanism Available on EIP7702Proxy
Our EIP7702Proxy addresses this issue through its setImplementation function, which provides an upgrade mechanism directly on the proxy itself, independent of the implementation. This ensures that even if an intermediate delegate has pointed the ERC-1967 implementation to an invalid implementation (or completely removed it), the original EOA retains the ability to reconfigure the proxy's ERC-1967 indicator to point to the logic implementation of their choice after returning to the EIP7702Proxy.
Challenge 4: Backward Compatibility with Standard EOA Behavior
A design goal of EIP7702Proxy is to maintain backward compatibility with account EOA functionality in addition to new smart contract features. The presence or absence of code at an address affects the execution flow of protocols interacting with that address, as they use this characteristic to distinguish between EOAs and smart contracts. This requires considering two primary behaviors: signature verification and token receiving behavior.
Signature Verification
Signature verification standards for smart contracts differ from standard EOAs. Smart contracts implement the isValidSignature interface defined by ERC-1271 and can freely define arbitrary logic to determine whether the contract considers a signature valid. For standard EOAs, signatures are verified through the standard ecrecover check, which ensures the signer is recovered to the expected EOA address.
To ensure that existing or future EOA signatures will continue to be recognized on the EOA after a 7702 upgrade, EIP7702Proxy implements a version of isValidSignature that first delegates signature verification to the isValidSignature function defined on the logic implementation, but performs a final ecrecover check if verification fails. If this check passes, the signature is considered valid. This way, EOAs using EIP7702Proxy are guaranteed that simple EOA signatures will always be recognized at their address, regardless of their smart contract wallet's isValidSignature implementation.
Token Receiving
Some token standards (particularly ERC-1155 and ERC-721) attempt to prevent tokens from being stuck in smart contracts that may not be able to manage them. These tokens require any smart contract receiving such tokens to declare this capability by implementing standard token receiver interfaces, which are called by the token contract during token transfer. Equally important is that the logic on an upgraded EOA includes standard receive functions or payable fallbacks to be able to receive native tokens. Accounts should not be in a state unable to receive ETH or other tokens, even for a short time.
Since our proxy lacks an initial implementation, we include an immutable DefaultReceiver implementation as the default logic for EIP7702Proxy when the ERC-1967 indicator is missing. This receiver implements receive functions and hooks for these common token standards, ensuring the account can accept token transfers before explicitly setting a new implementation.
Conclusion
The EIP7702Proxy design allows us to remain closely aligned with standard deployments of CoinbaseSmartWallets and continue using existing CoinbaseSmartWallet implementations while addressing unique security challenges in the EIP-7702 context. By carefully considering initialization security, storage transience and interference effects, the need for uninterrupted token handling, and backward compatibility with standard EOA signature verification, we have built a proxy for securely delegating and managing EIP-7702 smart contract wallets. While the EIP7702Proxy design considered the CoinbaseSmartWallet V1 implementation, this proxy is ultimately implementation-agnostic. We encourage developers to evaluate this solution for 7702-proofing other smart contract wallet implementations.
Click to Learn About BlockBeats Job Openings
Welcome to Join BlockBeats Official Community:
Telegram Subscription Group: https://t.me/theblockbeats
Telegram Communication Group: https://t.me/BlockBeats_App
Twitter Official Account: https://twitter.com/BlockBeatsAsia



