Máy ảo Ethereum bản chất là ngoài chuỗi, tập hợp mạng lưới các máy tính chạy song song với với mạng lưới blockchain Ethereum. Hệ thống máy ảo độc lập và tương tác các dữ liệu với nhau thường qua các giao thức đồng thuận mà không cần thông qua chuỗi chính, kết nối với chuỗi chính Ethereum thông qua các smartcontract. Có rất nhiều hệ thống máy ảo tương tác với Blockchain Ethereum. Các máy ảo phải thông qua hợp đồng thông minh để tương tác theo một bộ quy tắc của Ethereum và xác thực các thông tin đưa vào chuỗi với giao thức là hàm băm rút gọn của SHA-3-256.

Mỗi nút Ethereum trong mạng chạy một EVM và thực hiện các hướng dẫn giống nhau. EVM đã được lập trình trong C++, Go, Haskell, Java, Python, Ruby, Rust và WebAssembly (hiện đang được phát triển).

Mạng lưới Ethereum là blockchain hoạt động liên tục luôn tồn tại ở một trạng thái , không bị gián đoạn và bất biến của cỗ máy trạng thái đặc biệt này;  Đó là môi trường mà tất cả các tài khoản Ethereum và hợp đồng thông minh đang sống.  Tại bất kỳ khối nhất định nào trong chuỗi, Ethereum có một và chỉ một trạng thái ‘chuẩn’ và EVM là thứ xác định các quy tắc để tính toán trạng thái hợp lệ mới từ khối này sang khối khác

Phương thức hoạt động của EVM (Ethereum Virtual Machine) 

Chúng ta thường nghĩ đến Bitcoin như là một sổ cái phân tán, cho phép một loại tiền tệ phi tập trung sử dụng các công cụ cơ bản của mật mã.  Tiền điện tử hoạt động như một loại tiền tệ ‘bình thường’ do các quy tắc chi phối điều gì ta có thể và không thể làm để sửa đổi sổ cái.  Ví dụ: một địa chỉ Bitcoin không thể tiêu nhiều Bitcoin hơn số Bitcoin đã nhận trước đó.  Những quy tắc này làm nền tảng cho tất cả các giao dịch trên Bitcoin và nhiều blockchain khác.

Mặc dù Ethereum có tiền điện tử riêng (Ether) tuân theo gần như chính xác các quy tắc trực quan, nó cũng cho phép một chức năng mạnh mẽ hơn nhiều: hợp đồng thông minh (smart contract).  Đối với tính năng phức tạp hơn này, cần phải có một phép loại suy phức tạp hơn.  Thay vì một sổ cái phân tán, Ethereum là một máy trạng thái phân tán (machine state).  Trạng thái của Ethereum là một cấu trúc dữ liệu lớn không chỉ chứa tất cả các tài khoản và số dư, mà còn là một trạng thái máy, có thể thay đổi từ khối này sang khối khác theo một bộ quy tắc được xác định trước và có thể thực thi mã máy tùy ý.  Các quy tắc cụ thể của việc thay đổi trạng thái từ khối này sang khối khác được xác định bởi EVM.

EVM hoạt động như một hàm toán học: Cho một đầu vào, nó tạo ra một đầu ra xác định.  Do đó, khá hữu ích khi mô tả chính thức hơn Ethereum là có chức năng chuyển đổi trạng thái (state transition function):

Công thức toán học của EVM

Với trạng thái cũ hợp lệ (S) và một tập hợp các giao dịch hợp lệ mới (T), hàm chuyển đổi trạng thái Ethereum Y (S, T) tạo ra trạng thái đầu ra hợp lệ mới S ‘.

State

Trong định nghĩa của Ethereum, trạng thái là một cấu trúc dữ liệu khổng lồ được gọi là Merkle Patricia Trie đã được sửa đổi, giữ cho tất cả các tài khoản được liên kết bằng các hàm băm và có thể rút gọn thành một hàm băm gốc duy nhất được lưu trữ trên blockchain.

Transactions

Giao dịch là hướng dẫn được ký bằng mật mã từ các tài khoản.  Có hai loại giao dịch: giao dịch dẫn đến cuộc gọi tin nhắn (message) và giao dịch dẫn đến tạo hợp đồng (contract).  Việc tạo hợp đồng dẫn đến việc tạo một tài khoản hợp đồng mới có chứa mã bytecode của hợp đồng thông minh đã được biên dịch.  Bất cứ khi nào tài khoản khác thực hiện một cuộc gọi tin nhắn đến hợp đồng đó, nó sẽ thực thi mã bytecode của nó.

 

EVM

EVM thực thi như một máy xếp chồng với độ sâu 1024 mục (item).  Mỗi mục là một từ 256-bit word, được chọn để tương thích tối đa với lược đồ băm SHA-3-256 ( the SHA-3-256 hash scheme).

Trong quá trình thực thi, EVM duy trì một bộ nhớ tạm thời (như một mảng byte được đánh địa chỉ từ), không tồn tại giữa các giao dịch.

Tuy nhiên, hợp đồng có chứa bộ ba lưu trữ Merkle Patricia (dưới dạng mảng từ có thể xác định địa chỉ từ), được liên kết với tài khoản được đề cập và một phần của trạng thái toàn cầu.

Mã bytecode của hợp đồng thông minh đã biên dịch thực thi dưới dạng một số mã opc EVM, thực hiện các hoạt động ngăn xếp tiêu chuẩn như XOR, AND, ADD, SUB, v.v. EVM cũng triển khai một số hoạt động ngăn xếp dành riêng cho blockchain, chẳng hạn như ADDRESS, BALANCE, SHA3, BLOCKHASH, v.v.

EVM IMPLEMENTATIONS

Tất cả việc triển khai EVM phải tuân thủ đặc điểm kỹ thuật được mô tả trong Ethereum Yellowpaper.

Trong lịch sử 5 năm của Ethereum, EVM đã trải qua một số sửa đổi và có một số triển khai EVM bằng các ngôn ngữ lập trình khác nhau.

Tất cả các khách hàng Ethereum đều có triển khai EVM.

Ngoài ra, có nhiều triển khai độc lập, bao gồm:

  • Py-EVM –
  • Python evmone – C ++
  • ethereumjs-vm –
  • JavaScript eEVM – C ++ Hyperledger Burrow – Go

Tổng kết

EVM (Ethereum Virtual Machine) là hệ thống máy ảo hỗ trợ chạy để xác thực các trạng thái của mạng blockchain Ethereum, nó thuộc layer1 cho phép tương tác và xác thực các dữ liệu với nhau mà không thông qua chuỗi chính. Đồng thời có thể tương tác với chuỗi chính qua các smartcontract để ghi đè các dữ liệu lên khối và xác thực các dữ liệu lên các khối thông qua hàm băm được rút gọn.