Az Ethereum virtuális gép (EVM)
Az Ethereum virtuális gép (EVM) egy decentralizált virtuális környezet, amely konzisztensen és biztonságosan hajtja végre a kódot az összes Ethereum csomóponton. A csomópontok az EVM-et futtatják intelligens szerződések végrehajtásához, a „gáz„a műveletekhez szükséges számítási erőfeszítés mérésére, a hatékony erőforrás-elosztás és a hálózati biztonság biztosítására.”
Előfeltételek
Az EVM megértéséhez elengedhetetlen az olyan elterjedt számítástechnikai terminológiák ismerete, mint a bájt, a memória és a verem. Az is hasznos, ha ismerjük a kriptográfiai és blokklánc-fogalmakat, mint a hash függvények és a Merkle-fák.
A főkönyvtől az állapotgépig
A Bitcoinhoz hasonló blokkláncokat gyakran „elosztott főkönyveknek” nevezik, amelyek a módosításokat szabályozó szabályok szerint nyilvántartást vezetnek a tevékenységekről. Például egy Bitcoin-cím nem költhet több Bitcoint, mint amennyit kapott. Ezek a szabályok képezik az összes tranzakció alapját a Bitcoinon és sok más blokkláncon.
Bár az Ethereumnak saját natív kriptovalutája (Ether) van hasonló szabályokkal, egy erősebb funkciót is támogat: intelligens szerződésekEnnek megértéséhez az Ethereumot jobban leírhatjuk elosztott állapotgépként. Az Ethereum állapota egy nagy adatstruktúra, amely nemcsak az összes számlát és egyenleget tartalmazza, hanem egy gépi állapotot is, amely blokkról blokkra változhat előre definiált szabályok szerint, tetszőleges gépi kódot végrehajtva. Az EVM határozza meg ezen állapotváltozások szabályait.
Mi a különbség az EVM és az Ethereum között?
Ethereum egy olyan platform, amely lehetővé teszi az emberek számára, hogy alkalmazásokat hozzanak létre és futtassanak egy decentralizált számítógépes hálózaton. Saját digitális pénznemével rendelkezik, az Etherrel (ETH), amelyet a hálózaton lévő dolgok fizetésére használnak. Képzeljen el az Ethereumot egy óriási, megosztott számítógépként, amelyet mindenki használhat alkalmazásai létrehozására és futtatására anélkül, hogy egy központi hatóság ellenőrizné azt.
Az Ethereum virtuális gép olyan, mint egy motor ebben az óriási számítógépben. Biztosítja, hogy az összes alkalmazás és intelligens szerződés (automatizált megállapodás) ugyanúgy fusson a hálózat minden számítógépén. A tisztességes és hatékony működés érdekében az EVM egy „gas” nevű rendszert használ, amely méri az egyes feladatokhoz szükséges számítási teljesítményt, biztosítva, hogy az erőforrások ne vészek kárba.
Egyszerűen fogalmazva, az Ethereum az a teljes platform, amely lehetővé teszi decentralizált alkalmazások és szerződések létrehozását és használatát, míg a Ethereum virtuális gép része annak a platformnak, amely ezeket az alkalmazásokat és szerződéseket futtatja, biztosítva, hogy minden zökkenőmentesen és következetesen működjön a hálózat összes számítógépén. Ez a különbség az EVM és az Ethereum között.
Az Ethereum állapotátmeneti függvénye
Az EVM matematikai függvényként viselkedik: adott bemenet esetén determinisztikus kimenetet állít elő. Ez formálisan állapotátmeneti függvényként írható le:
\[ Y(S, T) = S' \]
Adott egy régi érvényes állapot (S) és egy új érvényes tranzakcióhalmaz (T), az Ethereum állapotátmeneti függvény (Y(S, T)) egy új érvényes kimeneti állapotot (S') állít elő.
Állami
Az Ethereumban az állapot egy hatalmas adatstruktúra, amelyet módosított Merkle Patricia Trie-nek neveznek, és amely hash-ek segítségével összekapcsolja az összes fiókot, és egyetlen, a blokkláncon tárolt gyökérhash-re redukálja azokat.
Tranzakciók
A tranzakciók kriptográfiailag aláírt utasítások a fiókoktól, amelyek két típusba sorolhatók: az üzenethívásokat eredményező utasítások és a szerződés létrehozását eredményező utasítások. A szerződés létrehozása egy új szerződésfiókot generál, amely a lefordított intelligens szerződés bájtkódját tartalmazza. Amikor egy másik fiók üzenethívást kezdeményez erre a szerződésre, az végrehajtja a bájtkódját.
EVM utasítások
Az EVM egy 1024 elemből álló, egyenként 256 bites szóból álló veremgépként működik, amelyet a 256 bites titkosítással (például Keccak-256 hash-ekkel vagy secp256k1 aláírásokkal) való kompatibilitás érdekében választottak ki. Végrehajtás közben az EVM tranziens memóriát (egy szónként címzett bájttömböt) tart fenn, amely nem marad meg a tranzakciók között. A szerződésekhez egy Merkle Patricia tárolási trie (egy szónként címezhető szótömb) tartozik, amely a fiókhoz és a globális állapot egy részéhez van társítva.
A lefordított intelligens szerződés bájtkódja a következőképpen fut le: Ethereum virtuális gép opkódokat, standard veremműveleteket hajt végre, mint például XOR, AND, ADD, SUB stb., valamint blokklánc-specifikus műveleteket, mint például ADDRESS, BALANCE és BLOCKHASH.
EVM implementációk
Minden EVM implementációnak meg kell felelnie az Ethereum Yellow Paper specifikációinak. Az Ethereum története során az EVM számos módosításon esett át, aminek eredményeként számos implementáció készült különböző programozási nyelveken, beleértve a következőket:
- Py-EVM (Python)
- evmone (C++)
- ethereumjs-vm (JavaScript)
- eEVM (C++)
- fordulatszám (rozsda)
Ezek a megvalósítások biztosítják, hogy az EVM konzisztens és biztonságos maradjon a különböző platformokon.