Workshop: Introduction to Hardhat

Workshop: Introduction to Hardhat https://celo.academy/uploads/default/optimized/2X/1/1282ea4c7a997e291cfe46d251e914bea31dbc76_2_1024x576.jpeg
none 0.0 0

Note: The resource above offers an in-depth explanation on the information summarized below.

Introduction

This tutorial aims to guide you through the basics of using Hardhat for testing and deploying your smart contracts.

Prerequisites

Ensure Node.js and npm are installed on your system. If not, download them from the official Node.js website.

What is Hardhat?

Hardhat is a smart contract development environment. It provides features such as compiling, testing, debugging, deploying, and verifying smart contracts. You would typically use Hardhat when you want to develop smart contracts in your local environment.

Setting Up Hardhat

  1. Create a new directory for your project:
mkdir hardhat-workshop
cd hardhat-workshop
  1. Initialize your Hardhat project:
npx hardhat

Follow the prompts to set up your Hardhat project.

Basic Hardhat Commands

After initializing your project, navigate to your project directory (hardhat-workshop) and execute the following command to compile your contract:

npx hardhat compile

Smart Contract Overview

Once you have successfully compiled your smart contract, the ‘artifacts’ folder will contain the information related to your contract. You can interact with your smart contract by writing JavaScript files in the ‘scripts’ directory.

Deploying the Smart Contract

To deploy your contract, you can use Hardhat scripts. Here is a basic deployment script:

async function main() {
  const ContractFactory = await ethers.getContractFactory("YourContractName");
  const contract = await ContractFactory.deploy(/* constructor arguments go here */);

  console.log("Contract deployed to:", contract.address);
}

main()
  .then(() => process.exit(0))
  .catch(error => {
    console.error(error);
    process.exit(1);
  });

Run your deployment script with the following command:

npx hardhat run scripts/deploy.js --network localhost

Replace 'localhost' with the name of the network you wish to deploy to.

Testing the Smart Contract

To test your smart contract, you can use Hardhat’s testing framework. You can write tests in the ‘test’ directory.

Here’s an example of a basic test:

const { expect } = require("chai");

describe("YourContract", function() {
  it("Should return the new greeting once it's changed", async function() {
    const Contract = await ethers.getContractFactory("YourContract");
    const contract = await Contract.deploy("Hello, world!");
    
    await contract.deployed();
    expect(await contract.greet()).to.equal("Hello, world!");
    
    await contract.setGreeting("Hola, mundo!");
    expect(await contract.greet()).to.equal("Hola, mundo!");
  });
});

Run your tests with the following command:

npx hardhat test

Verifying the Smart Contract

To verify your smart contract on the blockchain, you can use the Hardhat Etherscan plugin. To install it, run:

npm install --save-dev @nomiclabs/hardhat-etherscan

Afterwards, run the following command to verify your contract:

npx hardhat verify --network <network> <contract-address> <constructor-arguments>

Replace <network> with the network you deployed to, <contract-address> with the address of your deployed contract, and <constructor-arguments> with the arguments of the constructor (if any).

Conclusion

Now, you have learned the basics of Hardhat and how to use it for developing, testing, deploying, and verifying your smart contracts. As next steps, you can try to write your own smart contracts and use Hardhat to interact with them.

2 Likes