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-д тест бичинэ.