Develop with Hardhat
In this tutorial, you’ll go through the full process of developing, testing, deploying, and verifying smart contracts on the GIWA chain.
Requirements
Node v22+
This tutorial requires Node version 22 or higher to be installed.
Download Node v22+
If you use nvm to manage Node versions, run nvm install 22.
Set up development environment
Install Hardhat and create a project.
mkdir giwa-project
cd giwa-project
npx hardhat --init
npm install --save-dev @nomicfoundation/hardhat-verifyThe generated project structure looks like the following.
giwa_project/
├── hardhat.config.ts # project configurations
├── contracts # project source code directory
├── test # contract test directory
├── ignition # Hardhat Ignition deployment script
└── scripts # scripts for deployment / simulationConnecting Hardhat to the GIWA chain
To deploy smart contracts to the GIWA chain, add GIWA chain to hardhat.config.ts.
Loading environment variables
The above configuration reads PRIVATE_KEY environment variable defined in .env file using dotenv. NEVER hard-code private keys in source code.
To install dotenv, run:
Once dotenv is installed, create .env file and fill it with like below.
Replace <YOUR_PRIVATE_KEY> with your own wallet's private key to be used for deployment.
PRIVATE_KEY is the private key used to deploy contracts.
Writing a contract
Let’s start with a simple contract. FIrst, delete Counter.sol, and Counter.t.sol in contracts/ folder. Also delete Counter.ts and ignition/modules/Counter.ts in test/ folder. Then write a new contract as follows:
The smart contract code above is a contract named Giwa, which has a function called helloGiwa and an event named HelloGiwa.
To compile with Hardhat, run:
Writing tests
To make sure your contract works as intended, you’ll need to write test code. With Hardhat, you can write tests in Typescript/Javascript using viem, or write unit tests in Solidity. In this example, we’ll use viem.
To run the tests, execute:
Deploying the contract
Once the smart contract compiles successfully, you can deploy it to the GIWA Sepolia testnet.
One way to deploy contracts with Hardhat is to use a tool called Hardhat Ignition. You can start by writing code as below:
When ready, deploy to the GIWA Sepolia testnet with:
If you see output like the following, your smart contract is deployed on-chain and anyone can interact with it.
Verify and Interact with the contract in the explorer
To interact with your contract through the block explorer, it must first be verified — either by you or someone else.
Take the deployed contract address from above and run:
If you see a response like the one below, you can visit the block explorer to view and interact with your verified code.

Last updated