# Getting started with tokens (ERC20)
### TL;DR
* A token is a contract
* Approve each time your tokens interact with a new contract
* Approve function allows other contracts to interact with your tokens
### Table of content
* What is a token (ERC20) ?
* Approve/allow explained
* FAQ
### What is a token (ERC20) ?
Tokens are crypto-currencies that live on programmable blockchains like Ethereum. Anyone can create a token, that's why there are thousand of tokens on Ethereum and other programmable blockchains.
Tokens are contracts, most of them respect a certain implementation called ERC20 (BEP20 on binance smart chain). Usually when you see ERC20, it means a classic token.
This ERC20 norm describe what a token should be able to do, and what functions need to exist in its code.
### Approve/allow explained
When your tokens interact with a new contract, you'll have to first approve the contract. Because for security reasons, contracts are not allowed to receive your tokens if you don't approve them first.
For example if you want to swap your token against another token on Sushi, you will interact with the SushiRouter contract, this contract need your tokens to perform the swap.
But it is not allowed by default, so you will have to approve first.
That's why everytime you will interact with your tokens on a new contract you will have to approve it so the contract can take the tokens from your wallet.
### FAQ
**What is decimals ?**
Decimals is the precision of the token, most tokens have a decimals of 18, this means the smallest balance of a token you can have is 0.000000000000000001.
For example USDC have 6 decimals which means the smallest balance of USDC is 0.000001.
**I approved but tokens are still in my wallet**
As explained above in the article, when interacting whith a new contract you have to do 2 transactions :
* Approve the contract
* Call the contract
Approve is just the first part, so make sure to do the 2 transactions when interacting with a new contract.
**Why ETH doesn't need to be approved ?**
ETH is not a token, its the native currency of Ethereum, it interacts differently and so doesn't need to be approved.