In this chapter, we discussed all the important practical aspects of running an ICO. We described what an ICO is, looked at some of the different token standards available, and some of the different forms of token sales. We then implemented an ICO, starting with the implementation of an ERC-20 token, leading to the implementation of a token sale contract. We created a minimal set of tests, and deployed the contracts on a local Ganache instance, before deploying to the Rinkeby test network. Finally, we created a basic frontend web page to allow us to interact with the Rinkeby contracts.
The next logical step is to make our ICO frontend available to the world. In the next chapter, we will describe two ways of doing this without needing to use a standard, centralized hosting solution.