Solidity / Hardhat тохируулах

Hardhat тохируулах

Hardhat бол Ethereum smart contract хөгжүүлэлтийн хамгийн өргөн хэрэглэгддэг орчин юм. Орон нутгийн blockchain, тест, deploy скрипт бүгдийг нэг дор хийж болно.

Шаардлага

  • Node.js 18+ (nodejs.org)
  • npm (Node.js-тэй хамт суудаг)

Шалгах:

bash
node --version   # v18.0.0 эсвэл дээш
npm --version    # 9.0.0 эсвэл дээш

Шинэ төсөл үүсгэх

bash
# Шинэ хавтас үүсгэж орно
mkdir my-solidity-project
cd my-solidity-project

# npm төсөл эхлүүлнэ
npm init -y

# Hardhat суулгана
npm install --save-dev hardhat

Hardhat тохируулах

bash
npx hardhat init

Дараах сонголтууд гарна:

код
What do you want to do?
  ❯ Create a JavaScript project
    Create a TypeScript project
    Create an empty hardhat.config.js
    Quit

"Create a JavaScript project" сонгоно. Асуух бусад зүйлд Enter дарж өгөгдмөл утгуудыг хэвээр үлдээнэ.

Суулгагдах package-үүд:

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

Үүсгэгдэх файлын бүтэц

код
my-solidity-project/
├── contracts/          ← Solidity файлууд
│   └── Lock.sol        (жишээ contract)
├── ignition/
│   └── modules/        ← Deploy модулиуд
├── test/               ← Тест файлууд
│   └── Lock.js         (жишээ тест)
├── hardhat.config.js   ← Тохиргооны файл
└── package.json

hardhat.config.js

javascript
require("@nomicfoundation/hardhat-toolbox");

/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
  solidity: "0.8.28", // Solidity хувилбар
  networks: {
    hardhat: {
      // Орон нутгийн тест network
      chainId: 31337,
    },
  },
};

Орон нутгийн Hardhat node ажиллуулах

bash
npx hardhat node

Гарах:

код
Started HTTP and WebSocket JSON-RPC server at http://127.0.0.1:8545/

Accounts
========
Account #0: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 (10000 ETH)
Private Key: 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80

Account #1: 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 (10000 ETH)
...

20 тест хаяг үүсгэж, тус бүрт 10,000 ETH өгнө. Эдгээр нь зөвхөн тест зориулалттай.

Анхны compile

bash
npx hardhat compile
код
Compiled 1 Solidity file successfully (evm target: paris).

artifacts/ хавтас үүсч, compiled contract-уудыг агуулна.

Өөрийн contract нэмэх

contracts/SimpleStorage.sol файл үүсгэнэ:

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

contract SimpleStorage {
    uint256 private storedValue;
    address public owner;

    event ValueChanged(uint256 oldValue, uint256 newValue);

    constructor() {
        owner = msg.sender;
        storedValue = 0;
    }

    function set(uint256 newValue) public {
        emit ValueChanged(storedValue, newValue);
        storedValue = newValue;
    }

    function get() public view returns (uint256) {
        return storedValue;
    }
}

Compile хийнэ:

bash
npx hardhat compile

Hardhat console — интерактив орчин

bash
npx hardhat console --network hardhat
javascript
// Contract-г татаж авна
const SimpleStorage = await ethers.getContractFactory("SimpleStorage");

// Deploy хийнэ
const storage = await SimpleStorage.deploy();
await storage.waitForDeployment();

// Функц дуудна
await storage.set(42);
const value = await storage.get();
console.log(value.toString()); // 42

Хэрэгтэй Hardhat командууд

bash
npx hardhat compile          # Compile хийх
npx hardhat test             # Тест ажиллуулах
npx hardhat node             # Орон нутгийн node эхлүүлэх
npx hardhat clean            # Artifacts цэвэрлэх
npx hardhat help             # Бүх командын жагсаалт

Дараагийн хичээлд:

Hardhat + ethers.js ашиглан smart contract-д тест бичинэ.