Skip to content

Deploy a Basic Contract with Hardhat

Introduction

This guide demonstrates how to deploy a basic Solidity smart contract to Polkadot Hub TestNet using Hardhat, which provides a comprehensive development environment with built-in testing, debugging, and deployment capabilities. It's ideal for professional development workflows and team projects.

Prerequisites

Before you begin, ensure you have the following:

  • A basic understanding of Solidity programming.
  • Node.js v22.13.1 or later installed.
  • Test tokens for gas fees, available from the Polkadot faucet. See Get Test Tokens for a guide to using the faucet.
  • A wallet with a private key for signing transactions.

Set Up Your Project

Use the following terminal commands to create a directory and initialize your Hardhat project inside of it:

mkdir hardhat-deployment
cd hardhat-deployment
npx hardhat@^2.27.0 init

Configure Hardhat

Open hardhat.config.ts and update to add polkadotTestnet to the networks configuration as highlighted in the following example code:

hardhat.config.ts
import type { HardhatUserConfig } from 'hardhat/config';

import hardhatToolboxViemPlugin from '@nomicfoundation/hardhat-toolbox-viem';
import { vars } from 'hardhat/config';


const config: HardhatUserConfig = {
  plugins: [hardhatToolboxViemPlugin],
  solidity: {
    version: '0.8.28',
    settings: {
      optimizer: {
        enabled: true,
        runs: 200,
      },
    },
  },
  networks: {
    polkadotTestnet: {
      url: 'https://services.polkadothub-rpc.com/testnet',
      chainId: 420420417,
      accounts: [vars.get('PRIVATE_KEY')],
    },
  },
};

export default config;

Tip

Visit the Hardhat Configuration variables documentation to learn how to use Hardhat to handle your private keys securely.

Create the Contract

Follow these steps to create your smart contract:

  1. Delete the default contract file(s) in the contracts directory.

  2. Create a new file named Storage.sol inside the contracts directory.

  3. Add the following code to create the Storage.sol smart contract:

    Storage.sol
    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.9;
    
    contract Storage {
        uint256 private storedNumber;
    
        function store(uint256 num) public {
            storedNumber = num;
        }
    
        function retrieve() public view returns (uint256) {
            return storedNumber;
        }
    }
    

Compile the Contract

Compile your Storage.sol contract using the following command:

npx hardhat compile

You will see a message in the terminal confirming the contract was successfully compiled, similar to the following:

npx hardhat compile Downloading solc 0.8.28 Downloading solc 0.8.28 (WASM build) Compiled 1 Solidity file with solc 0.8.28 (evm target: cancun)

Deploy the Contract

You are now ready to deploy the contract to your chosen network. This example demonstrates deployment to the Polkadot TestNet. Deploy the contract as follows:

  1. Delete the default file(s) inside the ignition/modules directory.

  2. Create a new file named Storage.ts inside the ignition/modules directory.

  3. Open ignition/modules/Storage.ts and add the following code to create your deployment module:

    ignition/modules/Storage.ts
    import { buildModule } from '@nomicfoundation/hardhat-ignition/modules';
    
    export default buildModule('StorageModule', (m) => {
      const storage = m.contract('Storage');
      return { storage };
    });
    
  4. Deploy your contract to Polkadot Hub TestNet using the following command:

    npx hardhat ignition deploy ignition/modules/Storage.ts --network polkadotTestnet 
    
  5. Confirm the target deployment network name and chain ID when prompted:

    npx hardhat ignition deploy ignition/modules/Storage.ts --network polkadotTestnet ✔ Confirm deploy to network polkadotTestnet (420420417)? … yes   Hardhat Ignition 🚀   Deploying [ StorageModule ]   [ StorageModule ] successfully deployed 🚀   Deployed Addresses   Storage - 0x12345.....

Congratulations! You've now deployed a basic smart contract to Polkadot Hub TestNet using Hardhat. Consider the following resources to build upon your progress.

Where to Go Next

  • Guide Deploy an ERC-20


    Walk through deploying a fully-functional ERC-20 to the Polkadot Hub using Hardhat.

    Get Started

  • Guide Deploy an NFT


    Walk through deploying an NFT to the Polkadot Hub using Hardhat.

    Get Started

Last update: January 14, 2026
| Created: January 14, 2026