Tổng quan
Máy tính của Thế giới. Cỗ máy không thể ngăn cản. Trái tim của Ethereum. Máy ảo Ethereum (EVM) có nhiều tên gọi làm nổi bật tầm quan trọng của nó đối với mạng Ethereum. Đó là tính năng cốt lõi khiến nó không chỉ là một ‘sổ cái phân tán’ như Bitcoin mà còn là một “máy trạng thái phân tán”. EVM cho phép các nhà phát triển tạo các hợp đồng thông minh bằng ngôn ngữ lập trình có tên là Solidity. Một ứng dụng phổ biến của hợp đồng thông minh là quản lý việc tạo và trao đổi mã token. Nhiều ứng dụng và giao thức sử dụng mã token để thưởng cho người dùng cho các hành động quan trọng đối với mục tiêu của nó. Nếu không có EVM, điều này sẽ không thể thực hiện được.
Vậy EVM là gì? Tại sao lại ví EVM như là trái tim của Ethereum?. Hôm nay, GFS Blockchain sẽ bật mí và giải đáp các thắc mắc này trong bài viết dưới đây nhé.
EVM – Máy ảo Ethereum là gì?
Nếu bạn đã từng tải xuống một bộ phim, bài hát hoặc phần mềm (tất nhiên là hợp pháp) từ BitTorrent thì bạn có thể hiểu những lợi ích của một mạng phi tập trung. Ngay cả khi bạn là cơ quan quyền lực nhất trên thế giới, việc đánh sập một mạng phi tập trung là điều khó khăn vì nó sẽ yêu cầu dừng từng thành viên của mạng.
Một cách tốt để đưa một mạng phi tập trung mở rộng quy mô là sử dụng máy ảo (VM). Điều này là do máy ảo có thể chạy trên các hệ điều hành và phần cứng khác nhau và từ bất kỳ vị trí địa lý nào. Máy ảo hoạt động như một lớp trừu tượng giữa mã và máy thực thi mã.
Máy ảo hoạt động theo cách tương tự như một máy vật lý với bộ lưu trữ, bộ nhớ và CPU nhưng chúng hoạt động hoàn toàn dưới dạng mã. Về lý thuyết, bất kỳ ai cũng có thể chạy một máy ảo, điều này làm cho nó trở thành một nền tảng có tính di động cao cho một mạng phi tập trung. Với EVM, nó sử dụng một mạng lưới các node phi tập trung để thực thi các hợp đồng thông minh.
Bản thân giao thức Ethereum chỉ tồn tại với mục đích giữ cho hoạt động liên tục, 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 tồn tại. 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.
Những tính năng chính:
- Thuyết quyết định (Determinism)
- Chấm dứt (Terminable)
- Bị cô lập (Isolated)
Thuyết quyết định
Một chương trình là xác định nếu nó cung cấp cùng một đầu ra cho cùng một tập hợp các đầu vào, bất kể nó thực thi mã bao nhiêu lần. Một ví dụ hoàn hảo của một hàm xác định là các phép toán cổ điển. Ví dụ: giả sử rằng tất cả các số có cơ số 10, 1 + 4 sẽ luôn là 5, bất kể bạn lặp lại thao tác này bao nhiêu lần.
Vì vậy, tại sao điều này lại quan trọng khi nói đến hợp đồng thông minh?
Vì các dApp này có xu hướng xử lý hàng triệu đô la một lúc, nên người dùng cần biết cách mã phản ứng trong từng giai đoạn thực thi của nó.
Chấm dứt
Bạn phải lưu ý rằng các hợp đồng thông minh Ethereum là hoàn chỉnh. Nếu được cung cấp đủ thời gian và nguồn lực, hợp đồng thông minh sẽ có thể giải quyết mọi vấn đề. Tuy nhiên, không thể nói liệu một hợp đồng có thể kết thúc tất cả các hoạt động trong một thời hạn nhất định hay không. Đây là lý do tại sao hợp đồng thông minh nên có cơ chế chấm dứt. Các hợp đồng thông minh Ethereum sử dụng “gas” để xác định tuổi thọ. Thời điểm vượt qua giới hạn gas của hợp đồng, nó sẽ dừng tất cả các hoạt động.
Bị cô lập
Cuối cùng, một hợp đồng thông minh nên chạy trong một môi trường hoàn toàn bị cô lập. Nếu có điều gì đó xảy ra với hợp đồng thông minh (như hack hoặc lỗi), thì điều đó sẽ không ảnh hưởng đến phần còn lại của giao thức cơ bản.
Có hai hệ thống mà hợp đồng thông minh có thể sử dụng để hỗ trợ ba tính năng này. Hai hệ thống này là Máy ảo và Docker container. Vì các thiết kế hợp đồng của Docker không mang tính xác định nên theo mặc định, Ethereum đã quyết định sử dụng máy ảo.
Hoạt động của Máy ảo Ethereum
Các hệ điều hành truyền thống như Windows và iOS chỉ cần chạy trên một hệ thống tại một thời điểm. Tuy nhiên, máy ảo là các bản tóm tắt cấp cao hơn đã được tạo ra trên các hệ điều hành gốc để tái tạo hoạt động của một máy vật lý.
Chính xác thì EVM giúp bạn như thế nào?
Một máy ảo cho phép bạn chạy cùng một nền tảng trên một số kiến trúc phần cứng và hệ điều hành khác nhau đồng thời. Đây là lý do tại sao máy ảo là một sự phù hợp tuyệt vời cho một mạng phi tập trung như Ethereum. Mục tiêu chính của Ethereum là trở thành một siêu máy tính toàn cầu cho các nhà phát triển thuê tài nguyên máy tính để xây dựng các hợp đồng thông minh và các ứng dụng phi tập trung của riêng họ. EVM hoạt động khá giống như máy tính toàn cầu này, có thể truy cập bởi nhiều node trên khắp thế giới.
Ngăn xếp và máy trạng thái
EVM có thêm hai tính năng của một máy ảo. Thứ nhất, nó là một máy trạng thái có thể đọc đầu vào và thay đổi trạng thái của nó cho phù hợp. Thêm vào đó, nó là một máy dựa trên ngăn xếp, trong đó cấu trúc bộ nhớ được tổ chức và truy cập như một ngăn xếp.
Ngăn xếp là cấu trúc dữ liệu tuyến tính trong đó các hoạt động được thực hiện bằng cách sử dụng LIFO hoặc Last In First Out.
Hãy xem xét ví dụ sau:
Trong ngăn xếp trên, phần dữ liệu đầu tiên được chèn vào đó là Orange và phần dữ liệu cuối cùng là Apple. Vì vậy, nếu chúng ta lấy dữ liệu ra khỏi ngăn xếp bằng logic LIFO, thì mảnh đầu tiên chúng ta lấy là Apple và mảnh cuối cùng là Orange.
Bây giờ, chúng ta hãy xem xét các hoạt động ngăn xếp – Push và Pop.
Push: Hành động thêm dữ liệu vào ngăn xếp.
Pop: Hành động xóa các mục khỏi ngăn xếp bằng phương pháp LIFO.
Các hoạt động ngăn xếp trên EVM
Trong một máy ảo dựa trên ngăn xếp, các hoạt động được thực thi như sau:
- Dữ liệu và toán hạng đầu tiên được đưa ra.
- Các hoạt động tương ứng được thực hiện.
- Kết quả được đẩy trở lại ngăn xếp.
Nhìn vào sơ đồ sau:
- Chúng ta bật ra hai số đầu tiên 20 và 7.
- Hai số sau đó được cộng lại, cho chúng ta 27.
- Cuối cùng, kết quả được đẩy trở lại ngăn xếp.
Ưu điểm của hệ thống dựa trên ngăn xếp của EVM
Cấu trúc ngăn xếp đảm bảo rằng EVM không cần biết địa chỉ chính xác của các toán hạng. Cấu trúc ngăn xếp chắc chắn sẽ luôn trỏ VM đến toán hạng tiếp theo. Điều này loại bỏ chi phí hoạt động đáng kể và tăng hiệu quả tổng thể.
EVM có trạng thái thế giới, trạng thái máy và ROM ảo. Trạng thái thế giới lưu trữ tất cả các tài khoản trong mạng, trạng thái máy bao gồm dữ liệu như bộ đếm chương trình, gas khả dụng, ngăn xếp và bộ nhớ. Cuối cùng, ROM ảo đọc mã cấp máy gọi là “EVM bytecode”. Đây là một ngôn ngữ duy nhất mà chỉ EVM mới có thể hiểu được.
EVM bytecode
Đầu tiên chúng ta sẽ phân tích rõ ràng hai thuật ngữ: “bytecode” và “EVM bytecode”. Trong khoa học máy tính, “bytecode” là một ngôn ngữ máy tính được biên dịch từ mã nguồn và chạy trên Máy ảo. Bytecode không phải con người có thể đọc được nhưng máy tính có thể đọc được.
[Dòng]
Mã nguồn -> Bytecode -> Mã máy
Mã nguồn: Tập tin được viết bằng ngôn ngữ lập trình như Java, Solidity.
Bytecode: Được biên dịch từ mã nguồn và chạy trên Máy ảo như JVM, EVM
Mã máy: Mã chỉ hệ điều hành mới đọc được. Bytecode được chuyển đổi thành Mã máy và cuối cùng được thực thi.
Khi bạn đã hiểu bytecode là gì, bạn sẽ dễ dàng hiểu “EVM bytecode” là gì. Mã byte EVM được biên dịch từ Solidity và thực thi trên EVM.
Luồng hoạt động của EVM bytecode
- Hợp đồng solidity/vyper được biên dịch thành bytecode. Trình biên dịch được sử dụng ở đây được gọi là “solc.”
- Bytecode được mạng đọc và xử lý.
- Bytecode là đại diện nhị phân của opcode rắn. Các trình biên dịch là một thành phần quan trọng của toàn bộ quá trình trao đổi vì EVM sẽ không hiểu bất kỳ ngôn ngữ nào khác ngoại trừ mã bytecode.
- Mỗi mã opcode được đặt một tên có thể đọc được trong thông số kỹ thuật và được đại diện bằng một mã số. Ví dụ: số 0X01 đại diện cho opcode ADD.
Chức năng Máy ảo Ethereum
- EVM là đơn vị xử lý phi tập trung của toàn bộ mạng Ethereum. Mỗi và mọi giao dịch, tương tác, thực hiện hợp đồng thông minh chỉ có thể xảy ra thông qua EVM.
- Nó chịu trách nhiệm về tất cả các cấu trúc dữ liệu khác nhau, bao gồm các lệnh, toán hạng và dữ liệu được xử lý.
- EVM tìm nạp và thực thi lệnh cũng như giải mã các toán hạng thông qua một bộ điều phối lệnh.
- EVM cũng theo dõi các thành phần mạng như Trạng thái thế giới, Trạng thái lưu trữ và Thông tin khối.
- Tạo môi trường thời gian chạy cho các hợp đồng thông minh trên mạng Ethereum. Môi trường này bao gồm thông tin được sử dụng để thực hiện các giao dịch cụ thể như: giá gas (giá gas hiện tại), Codesize (kích thước của cơ sở giao dịch), Người gọi (địa chỉ người nhận giao dịch) và Nguồn gốc (địa chỉ người gửi giao dịch).
Các trường hợp sử dụng của EVM
Bây giờ chúng ta đã đề cập đến từng yếu tố của EVM, hãy xem cách các phần này kết hợp với nhau để giúp cung cấp năng lượng cho các dự án trong Ethereum:
Mã token ERC-20
Mã token ERC-20 là mã token có thể được chuyển giữa các địa chỉ, có số lượng cố định và giá trị của chúng giống nhau trên toàn mạng. Các hợp đồng thông minh tuân theo cấu trúc dữ liệu xác định trên EVM được sử dụng để tạo mã token ERC-20. Cấu trúc dữ liệu này kiểm soát việc đặt tên, phân phối, số lượng cung cấp và giám sát mã token.
Sàn giao dịch phi tập trung
Một sàn giao dịch phi tập trung triển khai các hợp đồng thông minh để cho phép người dùng trao đổi mã token ERC-20. Các hợp đồng thông minh này được gọi là Nhà tạo thị trường tự động (AMM) vì chúng cho phép người dùng đóng góp vào nhóm thanh khoản của một số mã token nhất định mà không cần bất kỳ bên thứ ba nào kiểm soát. Một số sàn giao dịch phổ biến như Uniswap và SushiSwap là ứng dụng của mô hình AMM này.
Mã token ERC-721
Tiêu chuẩn mã token phổ biến rộng rãi khác là người anh em họ không thể thay thế của ERC-20 là ERC-721 . Các hợp đồng thông minh này được sử dụng để mint NFT (mã token không thể thay thế), là các mã token có giá trị duy nhất trên toàn bộ chuỗi khối. Tạo ra các tác phẩm nghệ thuật độc đáo là trường hợp sử dụng lớn nhất đối với các loại mã token này. Các dự án khác trong không gian trò chơi như Axie Infinity và God Unchained sử dụng những mã token này để thu thập trong trò chơi.
Các vấn đề với Máy ảo Ethereum
Đối với tất cả các chức năng tuyệt vời của nó, có bốn vấn đề lớn với EVM làm hạn chế thông lượng tổng thể của mạng:
- Vì EVM phải xử lý rất nhiều hoạt động khác nhau và đa dạng nên EVM không nhanh như mong muốn. Đặc điểm kỹ thuật opcode của EVM không thay đổi theo thời gian và không được tối ưu hóa cho các nền tảng phần cứng khác nhau.
- Mở rộng ở điểm đầu tiên, vì EVM phải tiến hành rất nhiều hoạt động khác nhau, nó có xu hướng trở thành một nút thắt cổ chai trong hoạt động. Như bạn có thể tưởng tượng, điều này ảnh hưởng đáng kể đến hiệu quả mạng tổng thể.
- EVM không phát triển nhiều so với đặc điểm kỹ thuật ban đầu của nó. Đây là lý do tại sao công cụ và hỗ trợ ngôn ngữ cần thiết để viết hợp đồng là rất hạn chế.
Tổng kết
EVM làm cho Ethereum trở thành một nền tảng chứ không chỉ là một chuỗi khối, vô số các trường hợp sử dụng rộng rãi chưa từng có đã được triển khai trên Ethereum, giúp TVL của Ethereum có khi đã vượt hơn 300 tỷ USD, một con số làm bất kỳ doanh nghiệp khởi nghiệp truyền thống nào cũng thèm khát. Tuy nhiên, EVM không phải là một hệ thống hoàn hảo. Có nhiều thách thức xung quanh tốc độ giao dịch và thông lượng mạng. Đây là một lĩnh vực trọng tâm của cộng đồng phát triển và lộ trình cho Ethereum 2.0. Và EVM sẽ tiến hóa như thế nào để giúp Ethereum tiến nhanh hơn trên con đường đến với Ethereum 2.0?
Trong bài viết kỳ tới, GFS sẽ hé lộ những điều thú vị xung quanh chủ đề này, các bạn đón đọc và cập nhật tin tức mỗi ngày tại GFSblockchain nhé.