Máy ảo Ethereum (EVM)

EVM (Ethereum Virtual Machine) là máy ảo Ethereum. Chịu trách nhiệm cung cấp năng lượng cho hầu hết các blockchain tồn tại. Nó được xem là một phần của Ethereum thực hiện việc triển khai hợp đồng thông minh.

Có thể hiểu đơn giản là các EVM sẽ đóng vai trò trung gian trong việc thực thi các smart contract (hợp đồng thông minh) ở trên mạng lưới Ethereum. Mỗi một Ethereum node được trang bị một EVM riêng, điều này sẽ đảm bảo tính bảo mật và phi tập trung của mạng lưới.

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.


Cơ chế hoạt động. (Nguồn: coin98.net)

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). 


Hàm toán học. (Nguồn: coin68.com)

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

EVM rất cần thiết cho giao thức Ethereum và là công cụ hỗ trợ cho công cụ đồng thuận của hệ thống Ethereum. Nó cho phép bất cứ ai thực hiện mã trong một hệ sinh thái không tin tưởng mà tại đó kết quả hoạt động có thể được đảm bảo và hoàn toàn xác định thực hiện các hợp đồng thông minh.

Đối với mọi chỉ thị được triển khai trên EVM, người ta cho ra một chi phí thực hiện có tên là Gas. Khi người dùng muốn đào ether, họ dự trữ một số ether để sẵn sàng chi trả phí Gas này.

Bằng cách sử dụng phí giao dịch Gas, có hai vấn đề chính được giải quyết: Trình xác nhận đảm bảo đã nhận được số tiền trả trước ban đầu, ngay cả khi việc khai thác không thành công. Các thợ đào có thể sử dụng năng lực khai thác dưới mức số tiền đã trả trước đó. Thay vì lặp đi lặp lại vô thời hạn, việc khai thác sẽ cứ tiếp diễn cho đến khi hết phí Gas.

Khi một giao dịch được gửi đến mạng lưới, thợ đào có thể thực hiện giao dịch, thực thi mã liên quan. Trình xác nhận sẽ đảm bảo rằng:

  • Tất cả thông tin về giao dịch là hợp lệ.
  • Người thanh toán có đủ tiền để chi trả cho việc thực hiện giao dịch.
  • EVM không gặp phải bất kì trường hợp ngoại lệ nào trong quá trình thực thi.

Ethereum có thể cho phép chúng ta tạo ra các nền kinh tế chia sẻ dữ liệu, các sự kiện gọi vốn cộng đồng ngang hàng, hợp đồng thông minh, thị trường cho thuê không gian ổ cứng chưa được sử dụng trên máy tính xách tay của bạn, Uber hoặc Facebook bị phân tán (các sản phẩm không có công ty), v.v... Về cơ bản, Ethereum giống như internet vào năm 1994, vậy nên không ai biết tương lai sẽ xảy ra những điều gì.

Khả năng tương thích EVM là một khái niệm phổ biến xung quanh blockchain và tài chính phi tập trung (DeFi). Toàn bộ blockchain có thể được tạo với khả năng tương thích EVM. BNB Chain, Polygon hoặc Cronos là những hệ sinh thái sở hữu các ứng dụng và giao thức phi tập trung có khả năng tương thích với EVM.

Khi một blockchain có khả năng tương thích EVM, điều đó có nghĩa là các nhà phát triển đã viết code để hoạt động và thực thi hợp đồng thông minh phù hợp với các tiêu chuẩn EVM. Nhiều blockchain hướng tới khả năng tương thích với EVM để đơn giản hóa việc di chuyển từ Ethereum sang blockchain của họ.

Khi ngày càng nhiều blockchain xuất hiện, nhu cầu mở rộng quy mô sẽ càng trở nên khó khăn hơn nếu cần một code mới. Hãy tưởng tượng nếu mọi hợp đồng thông minh blockchain cần một ngôn ngữ lập trình mới để viết hợp đồng. Việc thu hút các lập trình viên tham gia công việc này quả là một nhiệm vụ không hề đơn giản.

Tạo môi trường để thực thi code tương thích với EVM sẽ giúp các nhà phát triển Ethereum dễ dàng di chuyển hợp đồng thông minh sang chuỗi tương thích với EVM mà không cần phải viết lại code từ đầu. Đây được xem là phương án tối ưu để nâng cao hiệu quả về khả năng mở rộng trên Ethereum.