Czym jest Virtual Machine? Proste wyjaśnienie

Czym jest Virtual Machine? Proste wyjaśnienie

Czym jest Virtual Machine?

Virtual Machine, często skracana do VM, to środowisko programowe, które zachowuje się jak komputer albo jak środowisko, w którym mogą działać programy. To, które z tych dwóch znaczeń ma zastosowanie, zależy od typu VM.

W przypadku systemowej VM otrzymujesz w praktyce kompletny wirtualny komputer. Może on uruchamiać własny system operacyjny, przechowywać dane i korzystać z połączenia sieciowego. Prawdziwy fizyczny komputer nazywa się hostem. Wirtualne komputery działające na nim nazywa się guestami.

Procesowa VM to z kolei środowisko wykonawcze dla kodu programu. Dobrym przykładem jest Java Virtual Machine, czyli JVM.

W świecie krypto działa Ethereum Virtual Machine, często skracana do EVM, w podobny sposób. Nie jest to wirtualny komputer z własnym systemem operacyjnym, lecz środowisko, które wykonuje smart contracts zgodnie ze stałymi regułami.

VM można więc traktować jako warstwę programową, która określa, jak wykonywany jest wirtualny komputer albo kod programu.


Najważniejsze informacje

  • Virtual Machine to programowe środowisko komputerowe albo środowisko wykonawcze dla kodu.
  • Systemowa VM odwzorowuje kompletny komputer.
  • Procesowa VM wykonuje kod programu w ramach stałego runtime.
  • EVM to blockchainowa VM dla smart contracts, a nie wirtualny komputer osobisty.
  • VM-y mogą pomagać oddzielać od siebie środowiska i wykonywać kod według stałych reguł.

Jak działa Virtual Machine?

To, jak działa VM, zależy od jej typu.

W przypadku systemowej VM między fizycznym sprzętem a wirtualnymi komputerami zwykle znajduje się hypervisor. Hypervisor to oprogramowanie, które rozdziela zasoby takie jak moc obliczeniowa, pamięć, przestrzeń dyskowa i przepustowość sieci hosta między różne maszyny wirtualne.

Wyobraź sobie, że jeden fizyczny serwer uruchamia trzy maszyny wirtualne. Każda VM może wtedy działać tak, jakby miała własny komputer, choć w rzeczywistości wszystkie współdzielą sprzęt tego samego hosta. Hypervisor decyduje, z jakich zasobów może korzystać każda VM, i w miarę możliwości oddziela od siebie poszczególne środowiska.

Dostępna wydajność nadal zależy od fizycznego komputera. Jeśli host ma za mało pamięci, mocy obliczeniowej lub miejsca na dysku, maszyny wirtualne również mogą to odczuć.

Procesowa VM działa inaczej. Kod programu jest w niej wykonywany w ramach stałego środowiska programowego. Kod Javy jest na przykład zamieniany na instrukcje, które może wykonać JVM. Dzięki temu ten sam kod może działać na różnych systemach operacyjnych i różnych typach sprzętu, o ile dostępna jest odpowiednia JVM.

Blockchainowe VM-y wykonują kod programu zgodnie ze stałymi regułami, które są takie same dla uczestniczących nodes. Dzięki temu ten sam kod z tym samym wejściem powinien zawsze dawać ten sam wynik.

Jakie są rodzaje Virtual Machines?

Virtual Machines dzieli się zwykle na dwa główne typy: systemowe i procesowe.

Czym jest systemowa Virtual Machine?

Systemowa Virtual Machine to wirtualny komputer, na którym może działać własny system operacyjny i aplikacje.

VM otrzymuje wirtualne odpowiedniki sprzętu, takie jak procesor, pamięć, przestrzeń dyskowa i połączenie sieciowe. Hypervisor zarządza następnie tym, jak poszczególne maszyny wirtualne korzystają z rzeczywistego sprzętu hosta.

Hyper-V i KVM to przykłady technologii, dzięki którym można tworzyć takie maszyny wirtualne.

Zaletą tego rozwiązania jest to, że na jednym fizycznym serwerze mogą działać różne systemy operacyjne. Dzięki temu można oddzielać od siebie różne aplikacje lub środowiska pracy bez potrzeby używania osobnego fizycznego komputera dla każdego z nich.

Taka separacja może też pomagać w bezpieczeństwie. Jeśli jedna maszyna wirtualna ulegnie awarii albo zostanie zaatakowana, nie oznacza to automatycznie, że pozostałe VM-y również zostaną dotknięte. Nadal ważna pozostaje jednak bezpieczna konfiguracja hosta i hypervisora.

Czym jest procesowa Virtual Machine?

Procesowa Virtual Machine to środowisko wykonawcze dla kodu programu, a nie pełny wirtualny komputer z własnym systemem operacyjnym.

Dobrym przykładem jest Java Virtual Machine (JVM). Program Java jest zamieniany na format pośredni, który JVM potrafi zrozumieć. Odpowiednia JVM może następnie wykonywać ten kod na różnych systemach operacyjnych i różnych typach sprzętu.

JVM określa, jakie instrukcje są dostępne i jak kod Java powinien zachowywać się podczas wykonywania. Dokładna realizacja techniczna może się różnić w zależności od JVM.

Blockchainowe VM-y są bardziej podobne do tego typu VM niż do pełnego wirtualnego komputera, ponieważ służą przede wszystkim do wykonywania kodu programu według stałych reguł.

Jaką rolę pełni Virtual Machine w blockchainie?

W programowalnym blockchainie Virtual Machine określa, jak wykonywane są smart contracts i inny kod programu.

VM ustala, jakie instrukcje są możliwe i w jaki sposób mogą one zmieniać stan blockchaina. Dzięki temu różne nodes mogą wykonywać i weryfikować tę samą transakcję według tych samych zasad.

Ethereum wykorzystuje w tym celu Ethereum Virtual Machine (EVM). Ethereum zapisuje nie tylko transakcje, ale także aktualny stan obejmujący między innymi konta, salda i dane smart contracts.

Gdy smart contract zostaje wdrożony na Ethereum, skompilowany kod programu jest zapisywany jako bytecode. Jeśli ktoś później wywoła ten kontrakt, EVM wykona ten bytecode.

Virtual Machine i mechanizm konsensusu pełnią przy tym różne funkcje. VM określa, co transakcja robi od strony technicznej. Konsensus sprawia natomiast, że uczestnicy zgadzają się, które transakcje i jaki nowy stan zostaną zaakceptowane przez sieć.

Nie każdy blockchain ma ogólną VM dla smart contracts. Bitcoin używa na przykład Bitcoin Script do określania warunków wydawania bitcoinów. Jest to rozwiązanie celowo bardziej ograniczone niż ogólne środowisko smart contractów, takie jak EVM.

Jak działa Ethereum Virtual Machine (EVM)?

Transakcja Ethereum może na przykład wysyłać ETH, tworzyć nowy smart contract albo wywoływać istniejący smart contract.

Gdy smart contract jest tworzony, skompilowany bytecode zostaje zapisany na koncie kontraktu. Jeśli ktoś później wywoła ten kontrakt, EVM wykona ten bytecode.

EVM działa jak maszyna stosowa. Stos można sobie wyobrazić jako stos wartości. EVM może umieszczać wartości na tym stosie i ponownie ich używać do wykonywania obliczeń.

Stos EVM może zawierać maksymalnie 1 024 elementy. Każdy element ma 256 bitów.

Podczas wykonywania EVM korzysta tymczasowo z pamięci do obliczeń. Ta pamięć znika po zakończeniu transakcji. Smart contracts mogą też przechowywać dane w trwałej pamięci kontraktu, aby były dostępne przy późniejszych transakcjach.

Każda instrukcja EVM, nazywana też opcode, ma określony koszt gazu. Gas pokazuje, ile mocy obliczeniowej i innych zasobów sieciowych zużywa dana operacja. Limit gazu transakcji określa, ile gazu może maksymalnie zużyć wykonanie.

Ostatecznie płacisz za gaz, który został faktycznie zużyty. W przypadku transakcji Ethereum zgodnych z EIP-1559 cena gazu składa się między innymi z base fee i priority fee. Base fee jest spalana. Priority fee trafia do walidatora, który proponuje blok zawierający transakcję.

Przykład: Załóżmy, że wysyłasz transakcję do smart contractu, aby przenieść tokeny. EVM wykonuje kod kontraktu, sprawdza warunki i aktualizuje zapisane salda, jeśli wszystko się zgadza. Do wykonania tych instrukcji transakcja zużywa gas.

Jakie inne blockchainowe Virtual Machines istnieją?

Oprócz EVM istnieją też inne środowiska blockchainowe do wykonywania programów i smart contracts. Mogą one korzystać z innych języków programowania, modeli przechowywania danych i zasad wykonywania.

Solana używa na przykład runtime, w którym programy są wykonywane jako bytecode sBPF. Programy są kompilowane do plików ELF z kodem sBPF, a następnie działają w odizolowanym środowisku.

Zamiast gazu Solana używa między innymi compute units do mierzenia, ile mocy obliczeniowej zużywa transakcja. Poszczególne instrukcje w ramach transakcji korzystają z tego samego compute budget.

Sui używa języka programowania Move do smart contracts. Smart contracts są publikowane na blockchainie jako Move packages i mogą tworzyć oraz modyfikować obiekty on-chain.

Sui działa przy tym w oparciu o model obiektowy. Obiekt on-chain ma między innymi unikalny ID, właściciela i numer wersji. Transakcje mogą te obiekty odczytywać, modyfikować, przekazywać lub tworzyć nowe obiekty.

Różni się to od Ethereum, gdzie centralną rolę odgrywają konta i pamięć kontraktów. Blockchainowe VM-y mogą więc mieć ten sam ogólny cel, ale być zbudowane zupełnie inaczej od strony technicznej.

Do czego używa się Virtual Machines?

Systemowe VM-y są często używane wtedy, gdy na jednym fizycznym serwerze trzeba uruchomić wiele systemów operacyjnych lub aplikacji. Dzieje się tak na przykład w środowiskach chmurowych i centrach danych.

Służą też do oddzielania od siebie środowisk deweloperskich, testowych i produkcyjnych. Ponadto kompletne środowiska wirtualne można zapisywać jako obrazy VM lub wirtualne dyski i później uruchamiać ponownie.

Procesowe VM-y wykorzystuje się przede wszystkim po to, aby ten sam kod programu mógł działać na różnych systemach. Dzięki temu aplikacja nie musi bezpośrednio dostosowywać się do każdej kombinacji sprzętu i systemu operacyjnego.

Blockchainowe VM-y umożliwiają programowalne transakcje. Wykonują smart contracts i dzięki temu mogą na przykład zmieniać zapisane dane, przenosić tokeny lub wykonywać inne działania zgodnie z zasadami kontraktu.

Jakie są zalety i ograniczenia Virtual Machine?

Virtual Machines mają kilka zalet, ale także ograniczenia.

W przypadku systemowych VM-ów ważne zalety to:

  • Bardziej efektywne wykorzystanie sprzętu: Wiele wirtualnych komputerów może współdzielić zasoby jednego fizycznego hosta.

  • Oddzielenie środowisk: Różne systemy operacyjne i aplikacje mogą działać niezależnie od siebie.

  • Problemy częściej pozostają ograniczone: Błąd lub awaria jednej VM nie musi automatycznie wpływać na wszystkie pozostałe VM-y na tym samym hoście.

  • Łatwiejsze ponowne użycie środowisk: Dzięki obrazom VM i wirtualnym dyskom można zapisać kompletne środowisko programowe i uruchomić je ponownie.

Ta separacja nie jest jednak całkowicie szczelna. W przypadku tak zwanego VM escape atakujący może próbować uzyskać dostęp do hypervisora lub hosta z poziomu maszyny wirtualnej. Również zła konfiguracja może osłabić separację między VM-ami.

Virtual Machines zużywają też własne zasoby. Hypervisor i różne wirtualne systemy operacyjne wymagają mocy obliczeniowej, pamięci i przestrzeni dyskowej. Jeśli zbyt wiele VM-ów korzysta z tej samej fizycznej maszyny, mogą one konkurować o te zasoby.

W przypadku procesowych VM-ów ważną zaletą jest przenośność. Z drugiej strony kod zawsze musi działać w ramach zasad i dostępnych zasobów runtime.

W blockchainowych VM-ach największą zaletą jest przewidywalne wykonywanie smart contracts. Jednocześnie obliczenia i pamięć na blockchainie są ograniczone. Sieci wyznaczają limity tego, ile mocy obliczeniowej i przestrzeni może zużyć transakcja lub smart contract.

Dodatkowo bardziej złożone obliczenia mogą powodować wyższe opłaty transakcyjne. Z tego powodu ciężkich obliczeń nie zawsze opłaca się wykonywać w całości na blockchainie.

Podsumowanie

Virtual Machine może być kompletnym wirtualnym komputerem, środowiskiem do wykonywania kodu programu albo wyspecjalizowanym runtime dla smart contracts.

Systemowe VM-y umożliwiają uruchamianie wielu odseparowanych środowisk komputerowych na tym samym fizycznym sprzęcie. Procesowe VM-y ułatwiają przenoszenie kodu programu między różnymi systemami.

W blockchainie VM-y, takie jak EVM, sprawiają, że smart contracts są wykonywane według stałych reguł. Dzięki temu transakcje mogą robić coś więcej niż tylko przesyłać wartość.

Istnieją jednak także ograniczenia. Virtual Machines nadal zależą od dostępnych zasobów, a blockchainowe VM-y dodatkowo wyznaczają limity dotyczące mocy obliczeniowej, pamięci i kosztów.

O Finst

Finst to wiodąca platforma kryptowalutowa w Holandii, oferująca bardzo niskie opłaty transakcyjne, bezpieczeństwo klasy instytucjonalnej oraz szeroki zakres usług crypto, takich jak trading, przechowywanie aktywów, staking oraz wpłaty i wypłaty fiat. Finst, założona przez byłych kluczowych członków zespołu DEGIRO, jest autoryzowana jako dostawca usług w zakresie kryptoaktywów na mocy MiCAR przez Holenderski Urząd ds. Rynków Finansowych (AFM) i obsługuje klientów detalicznych oraz instytucjonalnych w 30 krajach europejskich.

Platforma krypto dla wszystkich inwestorów

Niezależnie od tego, czy aktywnie handlujesz, czy inwestujesz długoterminowo, Finst pomaga Ci rozwijać portfel krypto z pewnością i spokojem.

Zarejestruj się