How to setup a Web3 Project
Tags: solidity, web3, beginners
Published: 2023-03-18 11:22:03

This guide provides step-by-step instructions for setting up a Web3 project using Hardhat and the Nonic Foundation hardhat-toolbox. Hardhat is a development environment to compile, test, and deploy your Ethereum smart contracts, while Nonic Foundation hardhat-toolbox is a set of tools and helpers to make it easier to build, test, and deploy smart contracts.

## 1. Project setup

### 1.1. Introduction

Before diving into the steps, it's important to understand the purpose of the tools we will be using. Hardhat is a development environment to compile, test, and deploy your Ethereum smart contracts. It provides a suite of powerful and configurable tools that make it easier to develop, test, and deploy smart contracts. Nonic Foundation hardhat-toolbox is a set of tools and helpers that complements Hardhat, providing additional functionality such as contract upgradability and contract verification.

### 1.2. Setup a node Project

To get started, you need to create an empty Node.js project with default options. You can do this by running the following command in your terminal:

```shell 
npm init -y
```

This creates a package.json file in your project directory, which will keep track of all the dependencies and scripts for your project.

### 1.3. Install Hardhat & Nonic Foundation hardhat-toolbox

Next, you need to install Hardhat and Nonic Foundation hardhat-toolbox as development dependencies. Run the following command in your terminal:

```shell 
npm install --save-dev hardhat @nomicfoundation/hardhat-toolbox
```

This installs the latest version of Hardhat and the Nonic Foundation hardhat-toolbox.

### 1.4. Setup Project

After installing Hardhat and Nonic Foundation hardhat-toolbox, you can set up your project by running the following command in your terminal:

```shell 
npx hardhat 
```

This command creates a `hardhat.config.js` file in your project directory, which is the main configuration file for Hardhat.

### 1.5. Importing OpenZeppelin Contracts

To use OpenZeppelin smart contracts in your project, you can install the `@openzeppelin/contracts` package by running the following command in your terminal:

```shell 
npm install @openzeppelin/contracts
```

This installs the latest version of the OpenZeppelin Contracts library.

### 1.6. Make Contract upgradable

If you need to create an upgradable smart contract, you can follow these additional steps:

#### 1.6.1. Install openzeppelin/hardhat-upgrades

After installing Hardhat and the Nonic Foundation hardhat-toolbox, you also need to install Hardhat Upgrades as a development dependency. Hardhat Upgrades is a plugin that allows you to upgrade your smart contracts in a safe and transparent way. To install Hardhat Upgrades, run the following command in your terminal:

```shell
npm install --save-dev @openzeppelin/hardhat-upgrades
```

#### 1.6.2 Install openzeppelin/contracts-upgradeable

OpenZeppelin Contracts Upgradeable is a library of reusable smart contracts for Ethereum development that can be easily upgraded. To install it, run the following command in your terminal:

```shell
npm install @openzeppelin/contracts-upgradeable
```

## 2. Run script

Now that you've set up your project and installed the necessary dependencies, you can start compiling your Solidity code, testing your smart contracts, and starting an Ethereum local node.

### 2.1. Compiling Solidity

To compile your Solidity code, run the following command in your terminal:

```shell 
npx hardhat compile
```

This command compiles all the Solidity contracts in the `contracts/` directory and generates the artifacts in the
`artifacts/` directory.

### 2.2. Test the smart contract

To test your smart contract, run the following command in your terminal:

```shell 
npx hardhat test
```

This command runs all the tests in the `test/` directory and generates a report with the results.

### 2.3 Start Ethereum local node Solidity

To start an Ethereum local node, run the following command in your terminal:

```shell 
npx hardhat node
```

This command starts a local Ethereum node with a few pre-funded accounts, which you can use for testing and development purposes. You can interact with this node using the Hardhat console or any other Ethereum client.

## 3.Conclusion

In summary, this guide provides a step-by-step process for setting up a Web3 project using Hardhat and the Nonic Foundation hardhat-toolbox. The key takeaways include the importance of using a development environment like Hardhat to compile, test, and deploy Ethereum smart contracts, and the convenience of using Nonic Foundation hardhat-toolbox to enhance functionality such as contract upgradability and verification. Other important steps include setting up a Node.js project, installing dependencies, importing OpenZeppelin Contracts, and running various commands for compiling Solidity, testing smart contracts, and starting an Ethereum local node. With these steps, you can begin developing and testing smart contracts for various decentralized applications.