Lesson Overview

Get an overview of what we will learn in this chapter.

In this chapter, we'll learn the basics of smart contract development and how to implement them using the Solidity programming language. While the smart contracts we'll write are almost trivial, they'll allow us to learn the foundational skills we'll build upon in the following chapters. We'll also learn how to interact with smart contracts and how they're executed. We'll finish this chapter by deploying a smart contract to an Ethereum network.

In this chapter, we'll also work with smart contracts exclusively using Remix IDE, a free online Solidity IDE. We'll also use it to deploy our smart contract to the Goerli test network, and see how to interact with it using Remix and MetaMask. In one of the later chapters, we'll see how we can develop a more sophisticated local development environment.

Smart contract languages

We can’t use general-purpose programming languages like JavaScript to write Ethereum smart contracts. Instead, we need languages specially designed for this purpose. The two most popular among them are:

  • Solidity: This is a programming language that's somewhat similar to JavaScript.

  • Vyper: This is a Python-like security-oriented programming language.

Since Solidity is the most popular among these two, we'll use it to write the smart contracts in this course; however, most of the skills we learn will also apply to Vyper.

Source code

All the code in this course is available in a GitHub repository. To follow along, clone it using this command:

git clone https://github.com/mushketyk/educative-ethereum.git

Each folder in this repository contains a version of the code for a particular lesson, like this:


We can open this folder in an editor and get the relevant source code for each lesson.

Software for this course

For this chapter, we only need a browser with an installed MetaMask plug-in. In later chapters, we'll need to install the following software:

  • Node.js: This is to run scripts and applications we will build.

  • npm: This is to install the JavaScript packages we'll use in this course.