OpenZeppelin eradicates the isContract function, fostering a shift towards greater adaptability and enhanced user experiences in the Ethereum ecosystem.
Smart contract development service OpenZeppelin recently removed a commonly used smart contract function called isContract to push the ecosystem forward toward greater flexibility and improved user experiences.
The isContract function returns true if an Ethereum (ETH) address belongs to a smart contract account rather than an externally owned account (EOA). Many decentralized application (dapp) developers have relied on it for security purposes, such as preventing bots from minting non-fungible tokens (NFTs).
However, as Ambire Wallet co-founder and CEO Ivo Georgiev pointed out rejoicing for removing the feature, relying on isContract breaks compatibility with account abstraction wallets like Ambire, Argent, and Safe. These wallets use smart contracts to manage users’ funds while abstracting some complexities away from the end user.
According to Georgiev, better ways to prevent issues like NFT minting abuse and security vulnerabilities exist. The presence of isContract has led to a harmful myth that smart contracts cannot function as user accounts.
You might also like: Ethereum’s account abstraction explained
In response, OpenZeppelin removed the function to push developers to reconsider assumptions about smart contracts and user accounts. This controversial move could accelerate the adoption of account abstraction and its associated benefits.
Safe — a decentralized custody protocol previously known as Gnosis Safe — developer Misha highlighted legitimate use cases of isContract, like ensuring that added Safe modules are valid contracts. However, Georgiev argued that there are better solutions that don’t preclude important account abstraction techniques.
The OpenZeppelin documentation warns that isContract should not be relied upon as the sole determiner of contract or EOA status. According to him, with clever programming, bots can return false positives or negatives.
This debate represents an important step forward as Ethereum builders rethink outdated assumptions and plant the seeds for the next generation of user-friendly decentralized applications. Removing isContract forces developers to find alternative solutions, ultimately benefiting end users by stopping discrimination against abstracted accounts.
Read more: Vitalik Buterin shares insights on Ethereum’s account abstraction journey