Етхереум виртуелна машина (ЕВМ)
Етхереум Виртуал Мацхине (EVM) је децентрализовано виртуелно окружење које извршава код доследно и безбедно на свим Ethereum чворовима. Чворови покрећу EVM да би извршавали паметне уговоре, користећи „гас„да би се измерио рачунарски напор потребан за операције, обезбеђујући ефикасну расподелу ресурса и безбедност мреже.“
Предуслови
Основно познавање уобичајене терминологије рачунарства, као што су бајтови, меморија и стекови, неопходно је за разумевање EVM-а. Такође је корисно познавати криптографију и концепте блокчејна попут хеш функција и Мерклеових стабала.
Од главне књиге до машине стања
Блокчејнови попут Биткоина се често описују као „дистрибуирани дневници“, који воде евиденцију активности која се придржава скупа правила која регулишу измене. На пример, Биткоин адреса не може потрошити више Биткоина него што је примила. Ова правила су основа свих трансакција на Биткоину и многим другим блокчејновима.
Иако Етереум има своју изворну криптовалуту (Етер) са сличним правилима, он такође подржава моћнију функцију: паметни уговориДа бисмо ово разумели, Етереум се боље може описати као дистрибуирана машина стања. Стање Етереума је велика структура података која садржи не само све рачуне и стања, већ и стање машине које се може мењати од блока до блока према унапред дефинисаним правилима, извршавајући произвољни машински код. EVM дефинише правила за ове промене стања.
Која је разлика између EVM-а и Ethereum-а?
Ethereum је платформа која омогућава људима да креирају и покрећу апликације на децентрализованој мрежи рачунара. Има сопствену дигиталну валуту под називом Етер (ЕТХ), која се користи за плаћање ствари на мрежи. Замислите Етеријум као џиновски, дељени рачунар који сви могу да користе за изградњу и покретање својих апликација без централне власти која га контролише.
Етхереум Виртуал Мацхине је као мотор унутар овог џиновског рачунара. Он осигурава да све апликације и паметни уговори (аутоматизовани споразуми) раде на исти начин на сваком рачунару у мрежи. Да би ствари биле фер и ефикасне, EVM користи систем под називом „гас“ да би измерио колико је рачунарске снаге потребно за сваки задатак, осигуравајући да се ресурси не троше узалуд.
Једноставно речено, Етереум је цела платформа која вам омогућава да креирате и користите децентрализоване апликације и уговоре, док је Етхереум Виртуал Мацхине је део платформе која покреће ове апликације и уговоре, осигуравајући да све функционише глатко и конзистентно на свим рачунарима у мрежи. То је разлика између EVM-а и Ethereum-а.
Функција преласка стања Етереума
EVM се понаша као математичка функција: на дат улаз, производи детерминистички излаз. Ово се формално може описати као функција преласка стања:
\[ Y(S, T) = S' \]
С обзиром на старо валидно стање (S) и нови скуп валидних трансакција (T), функција преласка стања Етереума (Y(S, T)) производи ново валидно излазно стање (S').
Држава
У Етереуму, стање је огромна структура података названа модификована Меркл Патриша Три, која повезује све налоге хешевима и своди их на један коренски хеш сачуван на блокчејну.
Трансакције
Трансакције су криптографски потписане инструкције са налога, класификоване у два типа: оне које резултирају позивима порука и оне које резултирају креирањем уговора. Креирање уговора генерише нови налог уговора који садржи компајлирани бајткод паметног уговора. Када други налог упути позив поруке овом уговору, он извршава свој бајткод.
EVM упутства
EVM ради као машина са стеком са дубином од 1024 ставке, свака од 256-битних речи, изабраних због компатибилности са 256-битном криптографијом (као што су Keccak-256 хешеви или secp256k1 потписи). Током извршавања, EVM одржава пролазну меморију (низ бајтова адресиран речима) која се не чува између трансакција. Уговори имају Merkle Patricia трие за складиштење (низ речи адресиран речима) повезан са налогом и делом глобалног стања.
Компилирани бајткод паметног уговора се извршава као Етхереум Виртуал Мацхине опкодови, извршавање стандардних операција стека као што су XOR, AND, ADD, SUB итд., и операције специфичне за блокчејн као што су ADDRESS, BALANCE и BLOCKHASH.
EVM имплементације
Све имплементације EVM-а морају се придржавати спецификација Ethereum Yellow Paper-а. Током историје Ethereum-а, EVM је прошао кроз неколико ревизија, што је резултирало вишеструким имплементацијама у различитим програмским језицима, укључујући:
- Py-EVM (Python)
- evmone (C++)
- етеријумјс-вм (Јаваскрипт)
- еЕВМ (C++)
- revm (Рђа)
Ове имплементације осигуравају да EVM остане конзистентан и безбедан на различитим платформама.