ZONA PROTOCOL
  • Welcome to Zona
  • What is ZONA?
  • Core Concepts
  • Network Architecture
  • Getting Started
    • ◼️Setting Up Wallets
    • ◼️Connecting to Testnet
    • ◼️Faucet Access
    • ◼️ZONA RPC & Chain Info
  • Smart Contract Development
    • ◻️EVM Compatibility Overview
    • ◻️Writing Contracts (Solidity)
    • ◻️Deploying to ZONA with Hardhat
    • ◻️Using Remix on ZONA
    • Advanced Topics
  • ◼️Gas Optimization on ZONA
  • ◼️Custom Modules with ZONA SDK
  • ◼️Security & Auditing Guidelines
Powered by GitBook
On this page
  1. Smart Contract Development

Deploying to ZONA with Hardhat

Hardhat is one of the most popular development environments for Ethereum. Since ZONA is EVM-compatible, you can use Hardhat to compile, test, and deploy your smart contracts to ZONA Testnet or Mainnet with minimal configuration changes.


✅ Prerequisites

Make sure you have:

  • Node.js installed (v14+)

  • A wallet with ZONA testnet tokens

  • MetaMask or a private key ready

  • RPC/Chain ID details (once available)


1. 📦 Create a Hardhat Project

If you haven’t already, initialize a new Hardhat project:

mkdir zona-hardhat && cd zona-hardhat
npm init -y
npm install --save-dev hardhat
npx hardhat

Choose “Create a basic sample project” when prompted.


2. 🧱 Install Dependencies

For deploying and interacting with contracts:

npm install --save-dev @nomicfoundation/hardhat-toolbox dotenv

Create a .env file:

PRIVATE_KEY=your_private_key_without_0x

3. ⚙️ Configure ZONA Network

In your hardhat.config.js file, add the ZONA network:

jrequire("@nomicfoundation/hardhat-toolbox");
require("dotenv").config();

module.exports = {
  solidity: "0.8.20",
  networks: {
    zonaTestnet: {
      url: "https://rpc-testnet.zonaprotocol.org", // Replace with actual RPC
      chainId: 9999,                                // Replace with actual Chain ID
      accounts: [`0x${process.env.PRIVATE_KEY}`]
    }
  }
};

Replace the RPC URL and chain ID once ZONA Testnet details are finalized.


4. ✍️ Write Your Contract

In contracts/, create ZonaToken.sol:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract ZonaToken is ERC20 {
    constructor(uint256 initialSupply) ERC20("ZonaToken", "ZONA") {
        _mint(msg.sender, initialSupply);
    }
}

5. 📜 Create a Deployment Script

In scripts/deploy.js:

async function main() {
  const ZonaToken = await ethers.getContractFactory("ZonaToken");
  const token = await ZonaToken.deploy(ethers.utils.parseEther("1000000"));
  await token.deployed();
  console.log(`ZonaToken deployed to: ${token.address}`);
}

main().catch((error) => {
  console.error(error);
  process.exitCode = 1;
});

6. 🚀 Deploy to ZONA Testnet

Run:

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

If successful, you'll see:

ZonaToken deployed to: 0xYourContractAddress

✅ What’s Next?

  • Verify your contract on ZONA Explorer (Coming Soon)

  • Interact with your contract via CLI, Web3.js, or front-end

  • Share testnet contract with your community


You're now building on ZONA fast, scalable, and developer-first.

PreviousWriting Contracts (Solidity)NextUsing Remix on ZONA

Last updated 15 days ago

◻️