Hiệu suất xử lý giao dịch luôn là thách thức kỹ thuật lớn trong Web3 mà các public blockchain phải đối mặt. Làm thế nào để cải thiện đáng kể TPS của các giao dịch mà không làm giảm tính bảo mật và tính phi tập trung. Sự xuất hiện của các blockchain do Solana và Aptos đại diện đã tạo ra tiếng vang lớn để vượt qua nút thắt về khả năng mở rộng của các chuỗi công cộng bằng cách thực hiện các giao dịch song song.
Vì máy ảo Ethereum là hệ thống đưa các hợp đồng thông minh vào blockchain, nó không chỉ có số lượng các nhà phát triển dApp mà còn có nhiều chuỗi công khai mới trực tiếp sử dụng EVM làm công cụ thực hiện giao dịch hợp đồng thông minh. Sự phổ biến là hiển nhiên, nhưng bị giới hạn bởi quá trình thực thi tuần tự (Sequential Execution), EVM chắc chắn bị chỉ trích rộng rãi về khả năng mở rộng.
Những nhà phát triển có thể cải thiện hiệu suất bằng cách thực hiện các giao dịch song song không? Hôm nay chúng ta sẽ cùng thảo luận về vấn đề này.
Cơ chế thực hiện giao dịch EVM
Các giao dịch trong EVM giống như một quá trình chuyển đổi trạng thái. Giả sử gọi giao dịch đầu vào là σt và giao dịch đầu ra là σt+1.
Cần lưu ý rằng trạng thái t trước khi thực hiện mỗi giao dịch và trạng thái σt + 1 sau khi thực hiện đều là trạng thái của tất cả các tài khoản trong orderbook (chẳng hạn như số dư, nonce, storageroot,…), điều đó tạo điều kiện cho việc phát triển các ứng dụng thực tế ở một mức độ nhất định, nhưng mỗi giao dịch cần làm lại từ đầu, dẫn đến nhiều hạn chế và khả năng mở rộng. Chính vì thế mà có ít trường hợp chuỗi dựa trên EVM tăng TPS bằng cách thực hiện các giao dịch song song.
Những thách thức của việc thực hiện song song
Dựa trên mô hình kể trên, rất khó để tăng thông lượng mạng bằng cách sử dụng lại tài nguyên phần cứng của các nút thông qua thực thi song song.
Ví dụ đưa ra như sau: Giao dịch tx1 chuyển từ A sang B và giao dịch tx2 chuyển từ C sang D, thông thường chúng có thể thực hiện song song, bởi vì cả hai không liên quan gì đến nhau, nhưng nếu tx2 được điều chỉnh để chuyển từ B sang C, tình hình sẽ khác.
Nếu số dưa ban đầu của B là 0, A chuyển 5 token trong tx1 cho B, B lại chuyển 3 token trong tx2 cho C, chúng ta sẽ thấy rằng tx2 sẽ không thể thực hiện vì tx1 chưa thực hiện xong thì B không đủ số dư thực hiện, gây nên sự xung đột trạng thái trên chuỗi.
Tất nhiên, đối với các giao dịch chỉ thực hiện chuyển tiền thì sẽ gặp lỗi trên. Các dApp thường triển khai một số yêu cầu đặc biệt trong máy ảo EVM thông qua logic hợp đồng thông minh. Khi này EVM sẽ thực hiện các thao tác của người dùng theo một logic, không thể xác định chỉ bằng cách phân tích nội dung giao dịch.
Thực hiện thông qua Optimism
Chúng ta không thể phân tích mối quan hệ của các giao dịch trước, liệu chúng ta có thể thực hiện tất cả các giao dịch thông qua Optimism một cách độc lập không?
Giải pháp PE (thực hiện song song) của dự án Aptos là một đại diện cho ý tưởng này Theo dữ liệu do bên dự án công bố, trong kịch bản phụ thuộc lẫn nhau thấp, hiệu quả thực hiện giao dịch cao nhất có thể là thực hiện nối tiếp gấp 16 lần.
Mặc dù không có cơ chế tương tự như Block-STM trong EVM, chúng có thể đạt được khả năng tương thích với EVM bằng cách tối ưu hóa một chút logic thực thi của các giao dịch trong khối và hỗ trợ việc phân chia các giao dịch dường như không liên quan thành các đợt hỗ trợ, tức là:
Trước tiên, bạn có thể xây dựng các phụ thuộc giao dịch thành một loạt các tập hợp giao dịch có thể được thực hiện theo từng đợt theo địa chỉ tài khoản của người gửi và người nhận, đồng thời thực thi chúng một cách độc lập theo các chuỗi khác nhau (hoặc coroutines), sau đó đợi tất cả các giao dịch được thực thi. So sánh và phân tích tập đọc (tất cả các biến trạng thái được sử dụng) và tập ghi (tất cả kết quả được tạo bởi giao dịch cần được ghi lại trên chuỗi) được sử dụng trong quá trình thực hiện và kiểm tra số thứ tự giao dịch (số thứ tự giao dịch trong khối).
Liệu tập hợp đọc của giao dịch tiếp theo có giao nhau với tập ghi của tất cả các giao dịch với số thứ tự giao dịch trước đó hay không, nếu không, kết quả thực hiện là chính xác; ngược lại điều đó có nghĩa là giao dịch cần dựa vào trạng thái ới của giao dịch trước đó và cần viết lại theo kết quả mới.
Đọc và ghi tập hợp các giao dịch do người dùng chỉ định
Các giao dịch chuyển khoản có thể đơn giản xác nhận sự phụ thuộc giữa các giao dịch, trong khi hợp đồng thông minh không thể xác định chúng thuộc tài khoản nào trước khi EVM thực hiện nó, nhưng người dùng gửi giao dịch có thể xác định giao dịch trong hầu hết các trường hợp.
Ví dụ blockchain Sui, các giao dịch được người dùng chỉ định phụ thuộc vào chữ ký được xác nhận, điều này giúp đơn giản hóa logic của việc phân tích tương quan giao dịch.
EVM lại không có cơ chế như vậy, dù cho Vitalik và Holiman đệ trình về việc chỉ định danh sách truy cập giao dịch EIP-2930 đã được thông qua trên Ethereum và được triển khai, nhưng đề xuất không bắt buộc người dùng chỉ định tất cả danh sách truy cập.
Nếu bạn muốn triển khai các bộ đọc và ghi do người dùng chỉ định trong EVM, bạn cần gửi một đề xuất EIP mới trong Ethereum. Ngoài ra, người dùng cần xác định Hỗ trợ SDK bộ read-write.
Tổng kết
Kiến trúc EVM có thể thực hiện giao dịch song song nhưng phức tạp hơn. Chuỗi công khai là một cơ sở hạ tầng mà mọi người đều có thể tiếp xúc, không thể phủ nhận rằng sức mạnh xử lý của nó càng mạnh thì càng tốt. Tuy nhiên, điều này không có nghĩa là bất kỳ giao dịch nào cũng cần phải có trên chuỗi.