# Understanding ERC20 Decimals

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

#### Understanding ERC20 Tokens

ERC20 tokens are a significant and well-known standard for creating fungible, exchangeable tokens on the Ethereum blockchain. Introduced as Ethereum Request for Comment 20, the ERC20 standard outlines a set of rules that all Ethereum-based tokens must adhere to. It is crucial to understand the nuanced aspects of ERC20 tokens, especially their decimal characteristics, as they play a pivotal role in how tokens are transacted and valued on the Ethereum network.

**Basics of ERC20 Tokens**

ERC20 tokens operate on the Ethereum blockchain, inheriting its security and decentralized features while allowing developers to create fungible tokens (meaning each token is identical and interchangeable with each other). These tokens can represent various values like currency, assets, or shares, and can be used in a wide array of applications including DeFi platforms, games, and voting systems.

**Decimal Property: A Close Look**

One of the critical properties of ERC20 tokens is the `decimals` attribute. This attribute indicates how divisible a token can be, that is, it defines the number of decimal places a token can have. The `decimals` property is vital for representing token values accurately, allowing for transactions and computations involving fractions of tokens.

* **Common Standard: 18 Decimals** The Ethereum community widely adopts a standard of 18 decimals for ERC20 tokens. This standard is not arbitrary; rather, it aligns with how Ether, the native cryptocurrency of Ethereum, is subdivided (1 Ether = $$10181018$$ wei). Adopting 18 decimals for ERC20 tokens provides consistency and ease of interoperability between tokens and Ether within the Ethereum ecosystem.

  With 18 decimals, a token can be subdivided into $$10181018$$ smallest units, allowing for precise and flexible transactions, especially crucial for financial applications requiring exact value transfers and computations. This high divisibility supports a wide range of use-cases, from micro-transactions to large asset transfers.
* **Variability in Decimals** While 18 is a common standard, it is vital to note that ERC20 tokens can have different decimal values. The ERC20 standard allows for tokens with decimals ranging from 0 to 18, inclusive. Tokens might adopt fewer decimals for various reasons, such as simplicity in handling, specific use-case requirements, or aligning with traditional fiat currency subdivisions (like two decimals for representations akin to cents in a dollar).

  For instance, a token with zero decimals would be indivisible (similar to having a physical coin), whereas a token with two decimals can represent values like 1.00, 1.01, or 1.99.

**Importance of Decimal Awareness**

Contracts and services interacting with ERC20 tokens must be aware of the token's decimal count and not blindly assume an 18-decimal standard. Incorrect assumptions about decimal places can lead to critical issues such as:

* **Calculation Errors:** Mistaking the decimal count can lead to miscalculations in transfers, rewards distribution, or any operation involving token value computation.
* **Transaction Failures:** Smart contracts that enforce specific value constraints might malfunction if the decimal count is not what the contract assumes, leading to failed transactions.
* **Asset Misrepresentation:** Incorrect decimal assumptions can misrepresent the value of assets, potentially leading to significant financial loss for users and services alike.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/tutorial-17-dexs-decentralized-exchanges/common-vulnerabilities-in-dex-code/18-decimal-assumption/understanding-erc20-decimals.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
