Testnet-д deploy хийх
Орон нутгийн тест амжилттай болсны дараа Sepolia testnet-д deploy хийнэ. Sepolia бол Ethereum mainnet-тэй яг адил боловч жинхэнэ мөнгөгүй тест сүлжээ юм.
MetaMask суулгах
1. metamask.io руу орж, browser extension суулгана.
2. Шинэ wallet үүсгэж, seed phrase-г аюулгүй газар хадгал (хэзээ ч хэнд хэлэх хэрэггүй).
3. Sepolia testnet нэмэх:
- MetaMask нээж → Network dropdown → "Show test networks" идэвхжүүлнэ
- "Sepolia test network" сонгоно
Sepolia testnet ETH авах (Faucet)
Testnet ETH нь үнэгүй, дараах faucet-уудаас авна:
- Google Faucet: cloud.google.com/application/web3/faucet/ethereum/sepolia
- Alchemy Faucet: sepoliafaucet.com (бүртгэл шаардана)
- Infura Faucet: infura.io/faucet/sepolia
MetaMask хаягаа оруулахад 0.5–1 Sepolia ETH илгээнэ.
Hardhat-д Sepolia тохируулах
Alchemy эсвэл Infura RPC URL авах
Sepolia-д холбогдохын тулд RPC endpoint хэрэгтэй. alchemy.com дээр үнэгүй бүртгэл үүсгэж:
- "Create App" → Chain: Ethereum → Network: Sepolia
- "View key" → HTTPS URL хуулна
.env файл үүсгэх
npm install dotenv
.env файл үүсгэнэ (.gitignore-д нэмэхээ бүү мартаарай):
SEPOLIA_RPC_URL=https://eth-sepolia.g.alchemy.com/v2/YOUR_API_KEY
PRIVATE_KEY=0xтаны_MetaMask_private_key
ETHERSCAN_API_KEY=таны_etherscan_api_key
MetaMask-с private key авах: MetaMask → Дансны дэргэд ⋮ → Account details → "Show private key"
⚠️ Private key-г хэзээ ч GitHub-д оруулж болохгүй!
.gitignore шинэчлэх
node_modules
.env
artifacts
cache
coverage
hardhat.config.js шинэчлэх
require("@nomicfoundation/hardhat-toolbox");
require("dotenv").config();
module.exports = {
solidity: "0.8.28",
networks: {
hardhat: {
chainId: 31337,
},
sepolia: {
url: process.env.SEPOLIA_RPC_URL,
accounts: [process.env.PRIVATE_KEY],
chainId: 11155111,
},
},
etherscan: {
apiKey: process.env.ETHERSCAN_API_KEY,
},
};
Deploy скрипт бичих
ignition/modules/SimpleStorage.js файл үүсгэнэ:
const { buildModule } = require("@nomicfoundation/hardhat-ignition/modules");
module.exports = buildModule("SimpleStorageModule", (m) => {
const simpleStorage = m.contract("SimpleStorage");
return { simpleStorage };
});
Эсвэл scripts/deploy.js хэлбэрээр:
const { ethers } = require("hardhat");
async function main() {
console.log("Deploy эхэлж байна...");
const [deployer] = await ethers.getSigners();
console.log("Deploy хийж буй хаяг:", deployer.address);
const balance = await ethers.provider.getBalance(deployer.address);
console.log("Үлдэгдэл:", ethers.formatEther(balance), "ETH");
// Contract deploy хийнэ
const SimpleStorage = await ethers.getContractFactory("SimpleStorage");
const storage = await SimpleStorage.deploy();
await storage.waitForDeployment();
const address = await storage.getAddress();
console.log("✅ SimpleStorage deploy хийгдлээ:", address);
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});
Sepolia-д deploy хийх
npx hardhat run scripts/deploy.js --network sepolia
Гарах:
Deploy эхэлж байна...
Deploy хийж буй хаяг: 0xYourAddress
Үлдэгдэл: 0.5 ETH
✅ SimpleStorage deploy хийгдлээ: 0xContractAddress
Etherscan дээр харах
sepolia.etherscan.io руу орж, contract хаягаа хайна. Гүйлгээ, баланс бүгдийг харж болно.
Etherscan-д verify хийх
Verify хийснээр Etherscan дээр source code харагдаж, хэрэглэгчид итгэх боломж нэмэгдэнэ.
Etherscan API key авах: etherscan.io → бүртгэл → API Keys → "Add"
npx hardhat verify --network sepolia CONTRACT_ADDRESS
Constructor argument байвал:
npx hardhat verify --network sepolia CONTRACT_ADDRESS "arg1" "arg2"
Амжилттай бол:
Successfully submitted source code for contract
contracts/SimpleStorage.sol:SimpleStorage at 0xContractAddress
for verification on the block explorer. Waiting for verification result...
Successfully verified contract SimpleStorage on the block explorer.
https://sepolia.etherscan.io/address/0xContractAddress#code
Etherscan дээр "Contract" tab → "✅ Contract Source Code Verified" харагдана.
Deploy хийсний дараа шалгах
Hardhat console ашиглан Sepolia-д холбогдож шалгаж болно:
npx hardhat console --network sepolia
const storage = await ethers.getContractAt(
"SimpleStorage",
"0xContractAddress",
);
await storage.set(100);
const value = await storage.get();
console.log(value.toString()); // 100
Дараагийн хичээлд:
Сурсан бүх мэдлэгээ нэгтгэж, crowdfunding smart contract бүтээнэ.