ERC20 is a token standard that's used in the Ethereum blockchain. It defines some standard functions and events that should be implemented by a contract if there is a need for a token.
The OpenZeppelin library includes contract files for the full implementation of the ERC20 token standard. Some other relevant ERC20 feature-related files are also present; using these files, you can decorate your ERC20 token contract and add more optional features to it. For example, with the Mintable and Pausable features, you can add token-minting and token-transfer-pause features to your ERC20 token contract.
All of the roles-related files are present in the Chapter09/openzeppelin-solidity/contracts/token/ERC20 folder of the OpenZeppelin library.
Let's start by learning about the ERC20 interface.