# Prerequisites

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

{% hint style="info" %}
**Understanding the prerequisites:** Provides a checklist of key knowledge areas beneficial to grasp the tutorial's content fully. While familiarity with blockchain basics, Ethereum, and Solidity is beneficial, don't be deterred if you're not yet fully versed in these areas. Dive in, absorb what you can, and use this as an opportunity to identify and later fill any gaps in your understanding - learning is a journey, after all.
{% endhint %}

To gain maximum value from this tutorial, you should possess a foundational understanding of the following areas

1. **Blockchain Basics:** A understanding of blockchain technology, including concepts like distributed ledger technology, decentralization, and consensus mechanisms, is crucial. Familiarity with how transactions are added to a block and how these blocks form a blockchain will also be beneficial.&#x20;
2. **Ethereum:** As Ethereum is one of the primary platforms where smart contracts are used, knowledge of its structure, functioning, and specifically the Ethereum Virtual Machine (EVM) is essential. You should also be comfortable with the process of how transactions are conducted on the Ethereum network, including gas, gas prices, and transaction fees.
3. **Smart Contracts:** Familiarity with what smart contracts are, their use cases, and how they operate is vital. An understanding of how smart contracts interact with the Ethereum network and other smart contracts will be beneficial.
4. **Solidity:** Since we'll be dealing with code examples, a working knowledge of Solidity, the primary programming language used to write smart contracts on Ethereum, is required. This includes understanding the syntax, data types, and functions in Solidity.
5. **Binary Number System:** Understand how numbers are represented in the binary system, which is base-2, compared to the decimal system, which is base-10. A bit is the most basic unit of information in computing and digital communications, which can be either 0 or 1. A byte is typically composed of 8 bits.
6. **Data Types and Memory:** Familiarity with different data types (e.g., uint8, uint16, uint256 in Solidity), how much memory they consume, and how they are stored and manipulated in memory.

Any questions so far? [ask Omar](https://www.linkedin.com/in/omar-inuwa/)[ Inuwa](https://www.linkedin.com/in/omar-inuwa/)
