Solidity / Ethereum үндэс

Ethereum үндэс

Ethereum бол дэлхийн хамгийн том programmable blockchain юм. Энэ хичээлд Ethereum яаж ажилладагийг — node, transaction, gas — дэлгэрэнгүй судална.

Ethereum сүлжээ яаж ажилладаг вэ?

Ethereum бол дэлхий даяар тархсан мянга мянган компьютерийн сүлжээ. Тэр компьютер бүрийг node гэнэ.

код
Таны wallet
     ↓  transaction илгээнэ
[Node A] ←→ [Node B] ←→ [Node C] ←→ ... ←→ [Node N]
     ↓  бүх node баталгаажуулна
Blockchain-д бичигдэнэ

Node бүр blockchain-ийн бүтэн хуулбарыг хадгалдаг. Тиймээс нэг node унтарч, хакдагдсан ч бусад node-ууд ажиллаж байна — сүлжээ зогсохгүй.

Validator гэж юу вэ?

Node-уудын дотор тусгай үүрэгтэй node-ууд байдаг — validator.

Validator:

  • Шинэ transaction-уудыг баталгаажуулна
  • Шинэ блок үүсгэнэ
  • Буруу transaction-г татгалзана

Validator болохын тулд 32 ETH барьцаалах шаардлагатай. Буруу зан гаргавал тэр ETH шатааж хасдаг — энэ механизмыг slashing гэнэ.

Consensus: Proof of Stake

Ethereum 2022 оноос хойш Proof of Stake (PoS) механизм ашигладаг.

Уламжлалт Proof of Work (Bitcoin):

код
Компьютер → математикийн бодлого бодно → эрчим хүч зарцуулна → шагнал авна

Proof of Stake (Ethereum):

код
Validator → ETH барьцаална → санамсаргүйгээр блок сонгогдоно → шагнал авна

PoS нь PoW-тай харьцуулахад ~99.95% цахилгаан бага зарцуулдаг.

Transaction гэж юу вэ?

Transaction бол blockchain-д илгээдэг үйлдлийн мэдээлэл. Жишээ нь:

  • ETH илгээх
  • Smart contract deploy хийх
  • Smart contract-ийн функц дуудах

Transaction бүр дараах мэдээллийг агуулна:

код
from:     0xАбВГ...  (илгээгчийн хаяг)
to:       0хДЕЖ...  (хүлээн авагчийн хаяг эсвэл contract)
value:    0.5 ETH   (илгээх ETH хэмжээ)
data:     0x...     (функц дуудах өгөгдөл)
gasLimit: 21000     (зарцуулж болох дээд gas)
nonce:    42        (энэ хаягаас илгээсэн transaction-ийн дугаар)

Gas гэж юу вэ?

Gas бол Ethereum дээр тооцоолол хийхэд шаардагдах нөөцийн хэмжүүр. Бодит ертөнцийн машины шатахуунтай адил.

Үйлдэл бүрт тодорхой gas зарцуулагдана:

код
ETH шилжүүлэх          → 21,000 gas
Storage-д нэг утга хадгалах → 20,000 gas
Нэмэх үйлдэл (+)        → 3 gas
Функц дуудах            → 700 gas

Gas price — нэг gas-ийн үнэ, gwei-ээр хэмждэг (1 ETH = 1,000,000,000 gwei).

Төлөх хураамж = gas зарцуулсан хэмжээ × gas price

код
Жишээ: ETH шилжүүлэх
  21,000 gas × 20 gwei = 420,000 gwei = 0.00042 ETH

Gas limit — та дээд тал нь хэдий gas зарцуулахыг зөвшөөрөх тоо. Хэрэв тооцоолол gas limit-ыг давбал transaction revert болж, зарцуулагдсан gas буцаагдахгүй.

Wallet гэж юу вэ?

Wallet бол таны Ethereum хаяг ба private key-г хадгалдаг програм.

код
Private key  → нийтэд харагдахгүй, зөвхөн та мэднэ → хэзээ ч хэнд өгөхгүй
Public key   → private key-ээс үүсдэг
Address      → public key-ийн hash → 0x1234...ABCD хэлбэртэй 42 тэмдэгт

Алдартай wallet-ууд: MetaMask (browser extension), Coinbase Wallet, Rainbow.

Mainnet ба Testnet

| Сүлжээ | Зориулалт | ETH үнэ | | ----------- | -------------- | --------------- | | Mainnet | Бодит ашиглалт | Бодит мөнгө | | Sepolia | Туршилт | Үнэгүй (faucet) | | Holesky | Туршилт | Үнэгүй (faucet) |

Хөгжүүлэлт хийхдээ Sepolia testnet ашигла. Testnet-ийн ETH-г faucet сайтуудаас үнэгүй авч болно — бодит мөнгө шаардахгүй.

код
Testnet ETH авах: sepoliafaucet.com

Код туршсаны дараа л mainnet-д deploy хий.

Блок гэж юу вэ?

Transaction-ууд нэг нэгэр биш, блок болгон бүлэглэгдэж баталгаажна.

код
Блок #19,000,000
├── Transaction 1: А → Б 1 ETH
├── Transaction 2: В smart contract deploy хийв
├── Transaction 3: Г → Д 0.5 ETH
└── ...хэдэн зуун transaction

Ethereum дахь блок бүр ~12 секундэд нэг удаа үүсдэг. Таны transaction хэдэн блокт орсоноос хойш баталгаажсан гэж үзнэ — ихэвчлэн 12 блок (~2.5 минут) хангалттай.

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

Remix IDE-г тохируулж, анхны smart contract бичих орчноо бэлдэнэ.