Any contract that follow the ERC20 standard is a ERC20 token.
ERC20 tokens provide functionalities to:
- Transfer tokens
- Allow others to transfer tokens on behalf of the token holder
IERC20.sol - Here is the interface for ERC20.
ERC20.sol - Here is the token contract.
MyToken.sol - ERC20 token(with Open Zeppelin).
TokenSwap.sol - Here is an example contract, TokenSwap, to trade one ERC20 token for another.