Wprowadzenie do maszyny wirtualnej Ethereum (EVM): silnika napędzającego każdy inteligentny kontrakt
Pamiętam, jak pierwszy raz opłaty za gaz pochłonęły połowę mojej transakcji. Był rok 2021, próbowałem coś wybić na OpenSea, a sieć żądała 87 dolarów za samo przetworzenie. Wtedy zdałem sobie sprawę, że tak naprawdę nie rozumiem, co się dzieje za kulisami. Dlaczego to tyle kosztowało? Gdzie podziały się te pieniądze? Co tak naprawdę realizowało moją transakcję? Odpowiedź na wszystkie trzy pytania brzmiała tak samo: maszyna wirtualna Ethereum.
Większość osób związanych z kryptowalutami słyszała o „EVM”. Znacznie mniej osób potrafi powiedzieć, do czego służy. To ważne, ponieważ EVM kształtuje praktycznie wszystko w Ethereum i ponad 390 łańcuchach, które zapożyczyły jego projekt. W sieciach EVM znajduje się obecnie ponad 190 miliardów dolarów wartości DeFi. Jeśli kiedykolwiek korzystałeś z MetaMask, wymieniałeś tokeny lub klikałeś przycisk w aplikacji zdecentralizowanej (dapps), to EVM wykonywała całą pracę za ekranem. Węzły realizują inteligentne kontrakty we wszystkich tych łańcuchach, a EVM to właśnie sprawia, że każde z tych wywołań jest faktycznie realizowane.
Więc przyjrzyjmy się temu bliżej. Nie wersji z podręcznika, tylko prawdziwej.
Czym jest maszyna wirtualna Ethereum i dlaczego jest ważna
Dobra, najpierw najprostsza wersja. Znasz aplikacje kalkulatorowe? Wpisz 2 + 2, a otrzymasz 4. Nudne. Teraz wyobraź sobie ten kalkulator działający na 10 000 telefonów jednocześnie. Każdy telefon otrzymuje tę samą odpowiedź. Jeśli jeden telefon próbuje podać wynik „2 + 2 = 5”, pozostałe 9999 natychmiast go odrzuca. Nikt nie kontroluje kalkulatora, nikt nie może go wyłączyć ani nikt nie może go zmanipulować. W zasadzie to właśnie robi EVM, z tą różnicą, że zamiast odrabiać zadania domowe z matematyki, uruchamia inteligentne kontrakty, które obracają prawdziwymi pieniędzmi.
Specjaliści od komputerów nazywają to maszyną stanów. Ethereum śledzi ogromną ilość danych: kto jest właścicielem poszczególnych monet, jakie istnieją inteligentne kontrakty, ile etheru znajduje się w każdym adresie, jakie informacje przechowuje każdy kontrakt. Wszystko to jest „stanem”. Wysyłasz transakcję. EVM porównuje ją z bieżącym stanem. Pojawia się nowy stan. Stary stan plus transakcja równa się nowemu stanowi. Wzór na papierze: Y(S, T) = S'. Gotowe.
Najdziwniejsze jest to, że jest redundantna. Twoja transakcja nie trafia na jeden serwer w Wirginii. Trafia do tysięcy węzłów w całej sieci Ethereum. Każdy z nich samodzielnie wykonuje obliczenia. Porównują odpowiedzi. Zgodność? Super, nowy stan trafia na blockchain. Niezgodność? Zła wersja zostaje odrzucona. Zawsze wyobrażam sobie tysiące księgowych wypełniających to samo zeznanie podatkowe. Jeden z nich wpisuje inną liczbę, wszyscy się zatrzymują i znajdują błąd.
I oto, co odróżnia go od zwykłego oprogramowania. Nikt nie zarządza maszyną do głosowania. Żadna firma za nią nie stoi. Żadne wsparcie techniczne. Żadne administrator, który mógłby po cichu wycofać transakcję o 2 w nocy. Kod jest open source, działa tak samo na każdym węźle, a zaufanie wynika z samej liczby porozumień, a nie z wypowiedzi jakiegoś autorytetu, który mówi „zaufaj mi”.

Jak działa EVM: od solidności do realizacji
Pozwól, że przedstawię Ci cykl życia inteligentnego kontraktu, ponieważ gdy zobaczysz cały łańcuch zdarzeń, EVM nabierze większego sensu.
Krok pierwszy: piszesz kod. Solidity to język programowania wybierany przez około 90% programistów EVM. Zapożycza składnię z JavaScript: nawiasy klamrowe, funkcje, zmienne, to, co zwykle. Istnieje również Vyper (bliższy Pythonowi, celowo prostszy), ale to Solidity rządzi. Oto haczyk, który zaskakuje nowicjuszy: uruchomienie każdej linijki kodu kosztuje realne pieniądze. Nie ma piaskownicy. Nie ma możliwości cofnięcia kodu. Wdrażasz kontrakt z błędem, który jest trwały, chyba że wcześniej zbudujesz mechanizm aktualizacji. Przekonałem się o tym boleśnie, obserwując, jak znajomy programista nie może spać z powodu źle postawionego przecinka.
Krok drugi: Twój Solidity zostaje skompilowany do bajtkodu. Wyobraź sobie bajtkod jako język maszynowy maszyny wirtualnej (EVM). Piszesz kod, który człowiek może odczytać. Kompilator zamienia go w zupę szesnastkową, którą maszyna wirtualna (EVM) faktycznie rozumie. Wewnątrz tej zupy szesnastkowej znajdują się kody operacji, około 150. ADD wykonuje dodawanie. SSTORE zapisuje dane na zawsze. CALL pozwala jednemu kontraktowi komunikować się z drugim. Jeden kod operacji, jedno małe zadanie. Twój kontrakt łączy ze sobą tysiące tych zadań.
Krok trzeci to moment, w którym robi się ciekawie. Ktoś dzwoni do twojego kontraktu. Każdy węzeł w sieci przechwytuje transakcję, ładuje twój bajtkod i rozpoczyna sekwencyjne przetwarzanie kodów operacji. Procesor działa w oparciu o stos: wyobraź sobie stos talerzy, z którego możesz dotknąć tylko tego na górze. Włóż liczbę. Włóż kolejną liczbę. Wykonaj ADD. Obie liczby są ściągane z góry, sumowane, a wynik wraca na górę. Maksymalna głębokość: 1024 elementy, każdy o szerokości 256 bitów.
Każdy węzeł robi to samodzielnie. Ten sam bajtkod, te same dane wejściowe, ten sam stan początkowy. Ta sama odpowiedź za każdym razem. Ta przewidywalność jest powodem, dla którego konsensus blockchain w ogóle działa. Gdyby EVM mógł generować różne wyniki na różnych maszynach, cały domek z kart ległby w gruzach.
Architektura EVM: stos, pamięć i magazyn
EVM przetwarza dane w trzech warstwach. Ta część jest ważna, ponieważ bezpośrednio wpływa na koszt transakcji.
Stos to koń roboczy. Wszystkie obliczenia odbywają się tutaj. Wprowadzanie, pobieranie, wykonywanie, powtarzanie. Jest szybki, tani (około 3 jednostek gazu na operację) i znika po zakończeniu wykonywania. Większość kodów operacji działa bezpośrednio ze stosem.
Pamięć jest jak notatnik. Można w niej odczytywać i zapisywać dane w dowolnej pozycji, co czyni ją bardziej elastyczną niż stos w przypadku takich rzeczy jak ciągi znaków czy duże tablice. Jednak pamięć znika po transakcji. Pod względem kosztów plasuje się pośrodku: jest droższa niż stos, a znacznie tańsza niż pamięć masowa. Rozwija się w miarę potrzeb, a koszt paliwa rośnie kwadratowo wraz ze wzrostem ilości przydzielanej pamięci.
Potem jest kwestia pamięci masowej . Jest ona kosztowna i nie bez powodu. Pamięć ma charakter trwały. Kiedy Twój inteligentny kontrakt rejestruje, że Alice posiada 500 tokenów, dane te są zapisywane w drzewie stanu Ethereum i tam pozostają. Każdy węzeł w sieci je przechowuje. Na zawsze. Nowy zapis do pamięci masowej kosztuje 20 000 gazu. Aktualizacja kosztuje 5 000 gazu. Dla porównania, prosty transfer etheru kosztuje łącznie 21 000 gazu. Zatem jeden zapis do pamięci masowej jest prawie tak drogi, jak cała podstawowa transakcja.
| Warstwa danych | Jak długo to trwa | Koszt gazu | Do czego to służy |
|---|---|---|---|
| Stos | Zniknął po egzekucji | ~3 gazy na operację | Matematyka, logika, porównania |
| Pamięć | Zniknęło po transakcji | 3 gazy + koszt rozbudowy | Dane tymczasowe, argumenty funkcji |
| Składowanie | Stały | 5000-20 000 gazu na zapis | Salda tokenów, rejestry własności, ustawienia |
Jeśli kiedykolwiek zastanawiałeś się, dlaczego wdrożenie inteligentnego kontraktu jest tak drogie, oto dlaczego. Wdrożenie zapisuje cały bajtkod i dane początkowe kontraktu w pamięci masowej. To dużo, bo aż 20 000 operacji gazowych naraz.
Jeśli brzmi to znajomo, to powinno. Zwykłe komputery działają w ten sam sposób. Rejestry procesora są szybkie, ale niewielkie, podobnie jak stos. Pamięć RAM jest większa i wolniejsza, podobnie jak pamięć operacyjna. Dyski twarde przechowują wszystko, ale kosztują najwięcej czasu na zapis, podobnie jak pamięć masowa. Twórcy Ethereum celowo to skonfigurowali. Chcą, abyś na zawsze odczuwał finansowy ból związany z przechowywaniem danych w łańcuchu, więc przechowujesz tylko to, co naprawdę jest potrzebne.
Opłaty za gaz na EVM: jak obliczane są ceny Ethereum
Muszę poruszyć kwestię gazu, ponieważ jest to jednocześnie najsprytniejszy i najbardziej frustrujący element egzaminu elektronicznego.
EVM jest maszyną zupełną w sensie Turinga. Mówiąc wprost: może wykonać dowolne obliczenia, jakie jej rzucisz. W tym pętle nieskończone. Wyobraź sobie kogoś wdrażającego kontrakt z while(true) i bez ponoszenia kosztów jego uruchomienia. Każdy węzeł się zawiesza. Blockchain się zawiesza. Koniec gry.
Gaz zapobiega temu. Każdy kod operacji ma swoją cenę. ADD kosztuje 3 jednostki gazu. SSTORE kosztuje 5000 lub 20 000 jednostek gazu. Wysyłając transakcję, ustawiasz budżet na paliwo. Obliczenia kończą się poniżej budżetu? Otrzymujesz zwrot za niewykorzystane paliwo. Osiągnięto limit? Wszystko się cofa, ale nadal płacisz za zużyte paliwo. Nieskończone pętle pożerają budżet i giną.
To, co wychodzi z Twojego portfela, to iloczyn zużycia gazu i jego ceny. Zużycie gazu zależy od tego, co faktycznie robisz w ramach transakcji. Cena gazu zmienia się w zależności od obciążenia sieci, mierzonego w gwei (jednej miliardowej eteru). Dużo osób handluje? Cena gazu rośnie. Spokojna niedziela? Cena gazu spada.
I tu zaczyna się robić ciekawie. Pamiętacie moje 87 dolarów za miętę z 2021 roku? Gaz kosztował wtedy regularnie 100-200 gwei. Lato DeFi i szaleństwo na NFT sprawiły, że sieć działała na pełnych obrotach. Przenieśmy się na początek 2026 roku, a średnia cena gazu wynosi około 3 gwei. Podstawowy transfer ETH kosztuje od około 0,30 do 0,67 dolara. To spadek o 96% w porównaniu z 2021 rokiem.
| Rok | Średnia opłata transakcyjna | Zakres cen gazu | Co to spowodowało? |
|---|---|---|---|
| 2021 | ~24 dolary | 100-200 gwei | Mania NFT, farming plonów DeFi |
| 2022 | 5-15 dolarów | 30-80 gwei | Krach na rynku, niższa aktywność |
| 2023 | 2-8 dolarów | 15-40 gwei | Ustabilizowanie się rynku niedźwiedzia |
| 2024 | 0,50-2 dolary | 5-15 gwei | Aktualizacja Dencun, EIP-4844 |
| I kwartał 2026 r. | 0,30-0,67 USD | ~3 gwei | Migracja L2, transakcje blobów |
Co się zmieniło? Dwie rzeczy. Po pierwsze, aktualizacja Dencun w marcu 2024 roku wprowadziła protokół EIP-4844, który stworzył „blobową” pamięć masową dla rollupów. Przed wprowadzeniem blobów sieci warstwy 2 musiały publikować swoje dane jako calldata w sieci głównej Ethereum, co było kosztowne. Bloby są tymczasowe i znacznie tańsze, co obniża koszty publikacji L2 o około 95%. Po drugie, większość aktywności została po prostu przeniesiona do sieci warstwy 2. Gdy swap Uniswap działa w Arbitrum zamiast w sieci głównej, warstwa bazowa pozostaje pusta.
W sieciach warstwy 2 wymiana może kosztować mniej niż grosz. Arbitrum, Base i Optimism korzystają z EVM, więc kod Solidity działa w ten sam sposób. Płacisz tylko ułamek gazu.

Kompatybilność z EVM: dlaczego ponad 390 blockchainów skopiowało projekt Ethereum
W tym miejscu historia EVM przestaje być interesująca i zaczyna mieć znaczenie dla całej branży.
Kiedy BNB Chain wystartował, Binance nie wynalazł nowej maszyny wirtualnej. Wziął EVM i zmodyfikował go. Polygon zrobił to samo. Avalanche, Fantom, Cronos, Harmony, Gnosis Chain: ta sama historia. Nawet specjalnie zaprojektowane rollupy warstwy 2, takie jak Arbitrum i Optimism, uruchamiają EVM natywnie. Rezultatem jest ekosystem ponad 390 łańcuchów kompatybilnych z EVM, choć tylko około 40-50 wykazuje znaczącą aktywność dzienną.
Po co kopiować Ethereum zamiast budować od nowa? Trzy powody, wszystkie praktyczne.
Po pierwsze, programiści. Na świecie jest ponad 20 000 programistów Solidity. Uruchom łańcuch EVM, a każdy z nich będzie mógł wypuścić kod od pierwszego dnia bez nauki nowego języka. Solana używa Rusta. Aptos i Sui używają Move. Te łańcuchy musiały stworzyć swoje pule programistów od podstaw. Łańcuch EVM całkowicie pomija ten problem.
Po drugie, darmowe narzędzia. MetaMask, Hardhat, Foundry, Ethers.js, OpenZeppelin, Etherscan. Cały zestaw narzędzi Ethereum działa na dowolnym łańcuchu EVM bez żadnych zmian. Ten sam portfel. Ten sam framework testowy. Ten sam eksplorator bloków. To oszczędza lata pracy.
Po trzecie, DeFi rozwija się wraz z EVM. Uniswap, Aave, Curve, SushiSwap. Wszystkie działają na co najmniej pięciu łańcuchach EVM. Kontrakty kopiują i wklejają z Ethereum do Polygon, Arbitrum i BNB Chain. Ten sam kod, ten sam audyt, ten sam model bezpieczeństwa. Mosty łączą płynność. EVM jest spoiwem.
Ale kopiowanie EVM oznacza również kopiowanie jego problemów. Transakcja po transakcji. Słowa 256-bitowe na procesorach 64-bitowych, co zwiększa narzut. System gazowy, który działa, ale dodaje złożoności, którą pomijają nowsze maszyny wirtualne. SVM Solany uruchamia transakcje równolegle. MoveVM ma model zasobów, który eliminuje całe kategorie błędów. FuelVM zapożycza pomysły z nowoczesnej konstrukcji procesorów.
Czy któryś z nich dogonił EVM w kwestii adopcji? Nie. Ani trochę. Lepsza technologia na papierze nie przebije efektów sieciowych w rzeczywistości. EVM ma najwięcej programistów, najwięcej aktywnych protokołów, najwięcej audytowanych wzorców kodu i najwięcej blizn po włamaniach i przetrwaniu. W kryptowalutach, gdzie jeden błąd może pochłonąć dziewięciocyfrowe kwoty, blizny liczą się bardziej niż benchmarki.
Stan Ethereum i sposób, w jaki EVM utrzymuje konsensus
Ta część jest bardziej techniczna, ale istotna. Wyjaśnia, dlaczego węzły Ethereum potrzebują prawdziwego sprzętu i dlaczego zapisywanie danych w łańcuchu bloków kosztuje fortunę.
Ethereum przechowuje ogromną tabelę wyszukiwania. Podaj jej dowolny adres, a zwróci saldo etheru, nonce (liczbę transakcji), a w przypadku adresów kontraktów – pełny bajtkod i wszystkie zapisane dane. Miliony adresów. Setki gigabajtów. Taki jest stan Ethereum.
Wszystko to znajduje się w drzewie Merkle Patricia. W skrócie: to drzewo, w którym każda gałąź otrzymuje swój własny hash, a wszystkie hashe zwijają się w jeden hash główny na górze. Ten hash główny znajduje się w nagłówku każdego bloku. Przenieś 0,001 ETH między dwoma portfelami, a hash główny całkowicie się zmieni. Walidatory sprawdzają bloki, uruchamiając każdą transakcję, obliczając wynikowy hash główny i porównując go. Ten sam hash? Blok jest dobry. Inny hash? Blok zostanie odrzucony.
Uruchamianie węzła oznacza aktualizowanie całego drzewa z każdym blokiem. To jest w rzeczywistości największy problem skalowalności Ethereum. Sama maszyna wirtualna jest wystarczająco szybka. Stan po prostu rośnie. Każdy SSTORE dodaje nowy liść do drzewa. Każdy nowy kontrakt gromadzi więcej danych. Drzewa Verkle mogą to rozwiązać. Zespół Ethereum buduje je od kilku lat. Umożliwią one węzłom sprawdzanie bloków bez przechowywania pełnego stanu. Jeśli Verkle zostanie uruchomiony, utrzymanie węzła stanie się znacznie tańsze, a więcej osób będzie mogło dołączyć do grupy walidatorów.
Wdrożenie EVM: jedna specyfikacja, wielu klientów
Większość ludzi nie zdaje sobie z tego sprawy: „EVM” to specyfikacja, a nie program. To dokument, który mówi: „biorąc pod uwagę te dane wejściowe, wygeneruj te dane wyjściowe”. Każdy może zbudować własną wersję w dowolnym języku, pod warunkiem, że jest ona zgodna ze specyfikacją.
Geth jest najważniejszy. Napisany w Go. Działa na większości węzłów Ethereum. Ale są też inne: Nethermind (C#), Besu (Java, stworzona dla przedsiębiorstw), Erigon (Go, zoptymalizowana pod kątem dysków) i Reth (Rust, stworzony przez Paradigm). Główni twórcy oprogramowania rzeczywiście chcą tej różnorodności. Dlaczego? Jeśli 95% węzłów korzysta z Geth, a Geth zgłasza krytyczny błąd, cała sieć ma kłopoty. Rozproszony na pięciu klientów, błąd dotyka tylko 20% węzłów. Reszta działa dalej.
Sieci warstwy 2 dodają swój własny akcent. Arbitrum stworzyło zmodyfikowaną wersję o nazwie Arbitrum VM. Optymizm dąży do „ekwiwalencji EVM”, czyli identycznego zachowania bajt po bajcie. ZkSync Era idzie dalej. Kompiluje bajtkod EVM do formatu, który obsługuje dowody zerowej wiedzy. Zupełnie inna ścieżka wykonania w tle. Ale dla programisty Solidity? Nadal wygląda tak samo. Fakt, że radykalnie różne architektury prezentują programistom ten sam wygląd, jest szczerze mówiąc jedną z najbardziej niedocenianych cech EVM.
Jako programista, nie ma dla Ciebie większego znaczenia, który klient przetwarza Twój kontrakt. Piszesz Solidity, kompilujesz do bajtkodu, wdrażasz. Specyfikacja gwarantuje wszędzie ten sam rezultat.
Rozwój inteligentnych kontraktów na EVM: z czym tak naprawdę mają do czynienia deweloperzy
Twórcy stron internetowych, którzy próbują tworzyć na potrzeby EVM, otrzymują niemiłe ostrzeżenie. Błędy kosztują prawdziwe pieniądze. Nie da się naprawić wersji produkcyjnej. Zepsuty kontrakt pozostanie niesprawny, chyba że zaplanujesz to z wyprzedzeniem.
Solidity obsługuje ponad 90% kontraktów EVM. Narzędzia stały się lepsze. Hardhat oferuje JavaScript/TypeScript z wtyczkami. Foundry korzysta z Rusta, działa szybciej i pozwala pisać testy w samym Solidity. Oba rozwiązania uruchamiają lokalną maszynę EVM, dzięki czemu można testować bez ponoszenia kosztów. Wybrałbym Foundry w każdym nowym projekcie. Gdy zestaw testów przekroczy setkę, różnica w szybkości staje się oczywista.
Standardy tokenów utrzymują porządek w ekosystemie. ERC-20 obejmuje tokeny zamienne, takie jak USDT, LINK, UNI. ERC-721 dotyczy NFT. ERC-1155 obsługuje kontrakty wielotokenowe. ERC-4626 generuje skarbce. Wszystkie działają tak samo w każdym łańcuchu EVM. Napisz kontrakt raz, wdróż go na Ethereum, Arbitrum, Base i Polygon. Ten sam kod, to samo zachowanie.
Bezpieczeństwo? Słabe. Ataki reentrancy pochłonęły setki milionów dolarów na przestrzeni lat. Hack DAO w 2016 roku podzielił Ethereum na dwie części z powodu błędu reentrancy, który pozwolił atakującemu zapętlić wypłaty i uszczuplić 60 milionów dolarów. Przepełnienia liczb całkowitych były plagą, dopóki Solidity 0.8 nie dodał domyślnych kontroli w 2021 roku. Błędy kontroli dostępu wciąż pojawiają się w kodzie audytowanym przez zespoły zawodowe. Narzędzia takie jak Slither, Mythril i Certora wychwytują pewne błędy, ale nic nie zastąpi porządnego audytu. Nawet audyty pomijają pewne kwestie. Tak po prostu jest.
Wdrażanie już dziś: podstawowy token ERC-20 kosztuje 5-20 dolarów w sieci głównej. Pełny protokół DeFi? Może kilkaset dolarów. W sieciach L2? Grosze. Nic dziwnego, że 65% nowych kontraktów w 2025 roku pojawiło się na warstwie 2.
Ekosystem EVM w 2026 r.: Dominacja warstwy 2 i co dalej
Trzy lata temu sieci warstwy 2 miały 4 miliardy dolarów w TVL. Teraz przekraczają 50 miliardów dolarów. Sam Arbitrum ma 16,6 miliarda dolarów. Baza wynosi 10 miliardów dolarów. Optymizm sięga 6 miliardów dolarów. Ta zmiana nastąpiła, ponieważ opłaty za L2 spadły prawie do zera. Swapy subpenny w większości konsolidacji. Nawet opłaty za sieć główną spadły poniżej dolara. Ludzie mówili, że Ethereum jest za drogie i wszyscy powinni korzystać z Solany. To stwierdzenie nie sprawdza się tak, jak kiedyś.
Abstrakcja konta (ERC-4337) po cichu zmieniła zasady gry w latach 2025 i 2026. Inteligentne portfele pozwalają użytkownikom płacić za gaz w stablecoinach, łączyć kilka działań w jedną transakcję i odzyskiwać konta bez fraz źródłowych. Jeśli kiedykolwiek widziałeś znajomego, który wściekle zrezygnował z kryptowalut, ponieważ MetaMask kazał mu zatwierdzić dwa wyskakujące okienka dla jednej transakcji, rozumiesz, dlaczego to ważne. Różnica między portfelem kryptowalut a zwykłą aplikacją bankową maleje.
Co dalej? Obserwuję kilka rzeczy. EOF (format obiektu EVM) oczyszcza kod bajtowy, dzięki czemu walidacja jest tańsza, a narzędzia działają lepiej. Badania nad wykonywaniem równoległym mogłyby pozwolić EVM obsługiwać niezależne transakcje jednocześnie, a nie pojedynczo. To dopiero początek, ale jeśli się powiedzie, przepustowość wzrośnie bez żadnych zmian dla programistów. A drzewa Verkle są coraz bliżej wdrożenia.
Konkurencja jest jednak realna. SVM Solany zapewnia wyższą przepustowość. MoveVM wprowadził wzorce, które zapobiegają całym kategoriom błędów. Ale spójrz na liczby. Ekosystem EVM generuje ponad 190 miliardów dolarów w DeFi TVL. Miesięczny wolumen DEX przekracza 400 miliardów dolarów. Ponad 20 000 deweloperów korzysta z jego potencjału. Prawie 11 lat testów bojowych. Nowsze maszyny wirtualne wygrywają w testach porównawczych. EVM wygrywa we wszystkim, co naprawdę się liczy, gdy w grę wchodzą prawdziwe pieniądze.