Deploying a Contract Using Hardhat
Hardhat is a development framework for Ethereum software, providing various tools for smart contract development, compilation, debugging, and deployment. Since dKargo is compatible with Ethereum's EVM, smart contracts can be deployed on the dKargo network.
This guide will walk through the process of building a Wallet dApp using Hardhat and dKargo Warehouse.
Development Environment
Prerequisites
Node.js & npm/yarn:
Installed from Node.js.
Hardhat: Development environment for Ethereum.
Install with:
npm install --save-dev hardhat
Step 1 - Set Up a Hardhat Project
Initialize a new Hardhat project
mkdir helloDka
cd helloDka
npx hardhat initInstall dotenv for managing environment variables.
npm i dotenv
touch .envBelow is an example of the Hardhat project folder structure:
/helloDka
├── README.md
├── contracts
|  └── Lock.sol
├── hardhat.config.js
├── ignition
|  └── modules
|     └── Lock.js
├── package-lock.json
├── package.json
└── test
   └── Lock.jsStep 2 - Writing the Counter.sol Contract
Counter.sol ContractCreate a new file named
Counter.solinside thecontractsfolder.Copy and paste the following code into the file.
The following contract implements a simple function to set the number variable.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
 
contract Counter {
    uint256 public number;
 
    function setNumber(uint256 newNumber) public {
        number = newNumber;
    }
 
    function increment() public {
        number++;
    }
}Step 3 - Updating the ignition file
Create a new file named
Counter.jsinside the./ignition/modulesfolder.Copy and paste the following code into the file.
This script follows the Hardhat Ignition standard and is responsible for deploying the contract.
const { buildModule } = require("@nomicfoundation/hardhat-ignition/modules");
 
module.exports = buildModule("Counter", (m) => {
  const lock = m.contract("Counter");
 
  return { lock };
});Step 4 - Configuring Hardhat for dKargo Chain
Add the necessary plugins and configurations to
hardhat.config.js.
require('dotenv').config() :Loads environment variables from the.envfile.accounts: [process.env.PRIVATE_KEY] :Passes the private key stored in the.envfile.
require("@nomicfoundation/hardhat-toolbox");
require("dotenv").config();
/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
  solidity: "0.8.24",
  networks: {
    warehouse: {
      url: "<https://it-full.dknote.net>",
      accounts: [process.env.PRIVATE_KEY],
    },
  },
  ignition: {
    requiredConfirmations: 1
  }
};
Add the following code to the file, and ensure that
.envis included in thegitignorefile to prevent exposing sensitive information.
PRIVATE_KEY=YOUR KEY HERE WITH NO QUOTESStep 5 - Compile and Deploy
Compile
counter.sol.
npx hardhat compileDeploy the
counter.solcontract to the Warehouse testnet:
npx hardhat ignition deploy ./ignition/modules/Counter.js --network warehouseStep 6 - Viewing the Deployment Transaction
Check the transaction details of the deployed contract.
npx hardhat ignition transactions chain-2465001Search for the transaction information on dScanner
Verify Contract
In Ethereum and other EVM-based blockchains, smart contracts are often verified using Hardhat's verify function.
However, dKargo Chain utilizes dScanner, a block explorer optimized for logistics services, which is not compatible with Hardhat’s verify function.
To ensure transparency of deployed contracts, the Verify Contract feature provided by dScanner can be used instead.
Last updated