Smart Contract Interfaces

Now that we have our Truffle tools installed and the folders ready for smart contract development on a local machine, let's dive into the first part of creating an ERC-20 token - the interface smart contract.

Solidity contracts are like object-oriented classes. They have variables and methods that can persist and manipulate data. An interface can be thought of as a contract that does not implement the method. They are used as base contracts to identify how the contracts that inherit from them should behave.

Some general rules about interfaces:

  1. Methods cannot be implemented

  2. Structs, enums, variables, and constructors cannot be defined

  3. They cannot inherit other interfaces / contracts

We won't be working with structs or enums for the contracts we are covering in this book, but if you are interested in learning more check out this link: Source. We will dive into variables and constructors later in this chapter.

Since we are starting with an ERC-20 token interface, let's review the Ethereum Implementation Proposal (EIP) that will guide our code writing for this chapter. The EIP can be found here.

The key features in an ERC-20 token are:

  • version of Solidity must be v0.4.17 or above

  • optional methods name, symbol, decimals

  • mandatory methods totalSupply, balanceOf, transfer, transferFrom, approve, allowance

  • events Transfer and Approval

To start writing the interface, create a folder in the contracts folder called interfaces, and within that create a file called IERC20.sol. The I at the beginning of the name identifies to future developers that the contract inside is an interface.

Now that we have the interface file created, open the file and start off by specifying the version of Solidity that we will be using.

Next, you can create the interface with the following code:

The interface is very simple. Based on what was identified in the EIP standard above, we only have to specify the methods totalSupply, balanceOf, transfer, transferFrom, approve, and allowance, and the two events - Transfer and Approve.

Once these are all in place, will specify the method inputs and outputs.

Methods for the Interface Contract#

Let's start with the methods. First is the totalSupply method, which will return the amount of tokens in existence. This method can be created within the brackets of IERC20 like this:

 

This page is a preview of Creating an ERC20 Token on Ethereum

Please select a discussion on the left.