> For the complete documentation index, see [llms.txt](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorial-22-iscontract.md).

# Tutorial 22: \`isContract\`

{% hint style="info" %}
[**Book an audit with Zokyo**](https://www.zokyo.io/)
{% endhint %}

#### Introduction

In the realm of Ethereum smart contracts, various security considerations must be undertaken to ensure the integrity and robustness of a contract's functionality. One such notable aspect is the distinction between Externally Owned Accounts (EOAs) and Contract Accounts. Developers sometimes use the `isContract()` function to discern between contract accounts and EOAs to enforce specific restrictions or design patterns in their contracts. However, this function is not without its vulnerabilities and shortcomings. This tutorial will provide an in-depth exploration of the `isContract()` function and the vulnerabilities associated with it, along with mitigation strategies to bolster contract security.
