
So sánh công nghệ zkEVM và zkVM: Mở khóa khả năng tính toán có thể xác minh
Tuyển chọn TechFlowTuyển chọn TechFlow

So sánh công nghệ zkEVM và zkVM: Mở khóa khả năng tính toán có thể xác minh
Bài viết này sẽ so sánh sự khác biệt về mặt kỹ thuật giữa zkEVM và zkVM, đồng thời giới thiệu RISC Zero zkVM và mạng Bonsai sắp ra mắt của nó.
Tác giả: Erik Kaneda, Kỹ sư cấp cao tại RISC Zero
Biên dịch: Maxlion
Lời mở đầu
Bài viết này sẽ so sánh sự khác biệt kỹ thuật giữa zkEVM và zkVM, đồng thời giới thiệu về RISC Zero zkVM và mạng Bonsai sắp ra mắt của nó. Về RISC Zero, đây là một zkVM phổ quát; RISC Zero zkVM là một máy tính có thể xác minh được, hoạt động tương tự như một vi xử lý nhúng RISC-V thực sự, cho phép các lập trình viên viết mã chứng minh ZK giống như viết bất kỳ mã nào khác. Hỗ trợ viết chứng minh ZK bằng Rust và C++, cũng như mọi ngôn ngữ có thể biên dịch sang RISC-V.
Bối cảnh
Với sự gia tăng về độ phức tạp của các hợp đồng thông minh hiện nay, các dapp ngày càng tiên tiến hơn, không gian khối ngày càng khan hiếm và chi phí thực thi mã trên chuỗi cũng tăng theo. Nói cách khác, nếu logic DeFi của bạn trở nên tốn nhiều tài nguyên tính toán, hoặc logic trò chơi trên chuỗi của bạn cần thêm sức mạnh xử lý, bạn nên cân nhắc sử dụng zkVM hoặc zkEVM để chuyển phần logic ứng dụng phức tạp ra khỏi chuỗi.
Trong bài blog này, tôi muốn giải thích sự khác biệt mà chỉ một chữ cái có thể mang lại trong trường hợp này. Tôi sẽ bắt đầu bằng tổng quan về EVM, sau đó là zkEVM, rồi đến zkVM. zkEVM cho phép bạn di chuyển các ứng dụng Solidity ra ngoài chuỗi, trong khi zkVM của RISC Zero và mạng Bonsai sắp tới cho phép bạn viết mã mở rộng, độc lập với chuỗi bằng Rust.
Tìm hiểu nhanh về EVM:
EVM là viết tắt của Ethereum Virtual Machine (Máy ảo Ethereum), bạn có thể xem nó như phần mềm thực thi tất cả các giao dịch trên Ethereum.

Mỗi nút tham gia mạng Ethereum bằng cách chạy phần mềm này (như các triển khai geth). Trên Ethereum, các giao dịch được biểu diễn bằng mã, dưới dạng gọi là bytecode EVM – đại diện cho các lệnh của EVM. Về cơ bản, những lệnh này tập trung vào các phép tính toán học, lấy thông tin từ blockchain và trao đổi tiền bạc. Trên thế giới có rất nhiều máy ảo, mỗi loại đều có chuyên môn riêng. Máy ảo của Ethereum đặc biệt quan trọng vì nó phù hợp hơn với các ứng dụng tài chính phi tập trung (DeFi).
"zk" là gì, và tại sao mọi người đều đặt nó trước các từ khác?
Một trong những xu hướng "ngầu" nhất gần đây là đặt "zk" trước các từ – hai chữ cái này đại diện cho bằng chứng kiến thức không (zero-knowledge proof). Wikipedia có rất nhiều ví dụ (tôi thích nhất là bài toán "hai quả bóng và người bạn mù màu"). Nếu bạn chưa quen thuộc với chúng, tôi khuyên bạn nên dành vài phút đọc các ví dụ về bằng chứng kiến thức không ngay lúc này.
Tóm lại, bằng chứng kiến thức không cho phép thực hiện tính toán có thể xác minh được. Bạn có thể xem nó như một cách đảm bảo rằng những tính toán nào đã được hoàn thành và kết quả là đúng. Một cách để các máy tính thống nhất về kết quả tính toán là yêu cầu mọi máy chạy cùng đoạn mã và so sánh kết quả. Tùy vào từng phép tính, điều này có thể rất tốn kém đối với các hệ thống có nguồn lực hạn chế. Bằng cách sử dụng một khuôn khổ bằng chứng kiến thức không như RISC Zero, các máy có thể đảm bảo việc thực thi tính toán là đúng bằng cách kiểm tra tính hợp lệ toán học của bằng chứng, thay vì phải lặp lại việc chạy cùng đoạn mã (như EVM).
Tại RISC Zero, chúng tôi gọi các bằng chứng này là "biên lai" (receipts), và trong phần còn lại của bài blog này, tôi sẽ dùng thuật ngữ này. Mỗi biên lai bao gồm một định danh mã hóa cho biết tính toán nào đã được thực hiện, cùng nhật ký các đầu ra công khai của tính toán đó. Dù nghe có vẻ đơn giản, nhưng điều này có nghĩa là máy móc có thể tạo ra biên lai để "chứng minh" rằng một tính toán đã hoàn tất.
Vậy chuyện gì xảy ra khi bạn đặt "zk" trước EVM?
Thuật ngữ zkEVM mô tả phần mềm chạy hợp đồng thông minh trên bộ máy bytecode EVM và tạo ra biên lai cho một tính toán cụ thể (hoặc giao dịch). Phần mềm này thường có thể chứng minh hai hoặc nhiều biên lai là hợp lệ và tạo ra một biên lai mới. Nhờ cơ chế này, zkEVM có thể thực hiện nhiều giao dịch và dùng một biên lai duy nhất để đại diện cho tất cả – được gọi là "Rollup". Các dự án viết bằng Solidity có thể dùng zkEVM để mở rộng quy mô, thay vì thực hiện mọi tính toán trên chuỗi, họ chỉ đăng một biên lai duy nhất lên blockchain để đại diện cho nhiều giao dịch xảy ra bên ngoài chuỗi. Có nhiều loại zkEVM khác nhau; nếu bạn muốn tìm hiểu sâu hơn, hãy đọc bài viết này.

zkVM: Mở khóa khả năng tính toán có thể xác minh bằng cách bỏ chữ "E"
Tại RISC Zero, chúng tôi triển khai một máy ảo kiến thức không (zkVM) thay vì một zkEVM. Sự khác biệt giữa hai thứ nằm ở chữ "VM", tức là "máy ảo", vốn mang tính tổng quát hơn EVM.
Trên zkVM, bạn có thể chạy hầu hết mọi phần mềm mà một máy tính bình thường có thể chạy, chứ không chỉ phần mềm chạy được trên Ethereum. Máy tính này sử dụng kiến trúc RISC-V, là một tập lệnh dành cho tính toán phổ thông. Điều này có nghĩa RISC-V không tích hợp sẵn khái niệm địa chỉ ví hay các cấu trúc blockchain khác. Tập lệnh chủ yếu gồm các toán tử di chuyển dữ liệu giữa các vị trí bộ nhớ và thực hiện các phép toán toán học trên dữ liệu. Dù tập lệnh này có vẻ quá trừu tượng, nhưng lập trình viên không cần phải biết lập trình bằng ngôn ngữ lắp ráp để viết chương trình cho zkVM này.
So với EVM, bộ mô phỏng RISC-V nền tảng này cho phép lập trình viên viết chương trình cho zkVM bằng các ngôn ngữ như Rust, C/C++ và Go (lưu ý: hiện tại chúng tôi đang hỗ trợ Rust, còn hỗ trợ C/C++ và Go đang trong quá trình phát triển). Điều này có nghĩa lập trình viên zkVM có thể tận dụng các thư viện liên quan do cộng đồng ngôn ngữ đó phát triển. Ví dụ, chúng tôi có thể chạy các chương trình chơi game như Wordle hoặc Where's Waldo. Tuy nhiên, chúng tôi không bị giới hạn ở các trò chơi đơn giản: bạn có thể chạy nhiều chương trình khác được biên dịch sang RISC-V.
Chạy chương trình RISC-V có ích lợi gì?
Nếu bạn đang tìm kiếm các khung làm việc giúp xây dựng ứng dụng DeFi tốt hơn, bạn có thể tự hỏi tại sao chúng tôi lại nghiên cứu một khung tính toán tổng quát như RISC Zero.
Bằng cách cho phép người dùng viết chương trình bằng ngôn ngữ phổ thông, chúng tôi mở ra khả năng lập trình vượt ra ngoài thư viện Solidity. Nghĩa là logic ứng dụng không cần bị giới hạn trong những gì có thể biểu đạt bằng Solidity, và cho phép bạn viết mã độc lập với chuỗi. Những ngôn ngữ tổng quát như Rust cho phép nhà phát triển dễ dàng viết nhiều loại chương trình hơn so với các ngôn ngữ được thiết kế cho mục đích riêng biệt. Ví dụ, bạn có thể dùng Rust để viết một máy tính số học đơn giản, nhận một biểu thức toán học làm đầu vào, thực hiện phép tính và trả về kết quả. Nếu bạn nâng độ phức tạp của máy tính này lên để hỗ trợ các cấu trúc lập trình phổ biến như biến, vòng lặp và hàm, bạn sẽ tạo ra một trình thông dịch ngôn ngữ đơn giản – nhận chương trình làm đầu vào, chạy chương trình và trả về kết quả. Những chương trình này có thể được biên dịch thành RISC-V và chạy trên zkVM của RISC Zero. Với Rust, bạn có thể dùng các crate hiện có để lập trình cho ứng dụng của mình thay vì phải viết mọi thứ từ đầu.
Một trong những thư viện như vậy là crate revm trên Rust. Crate này là một triển khai của EVM được viết bằng Rust. Bằng cách sử dụng crate này, chúng tôi có thể chạy một trình thông dịch bytecode EVM trên zkVM. Nghĩa là bạn có thể chạy các hợp đồng Solidity trên trình thông dịch bytecode EVM đang chạy trên zkVM! Bằng cách này, zkVM sẽ tạo ra một biên lai đại diện cho việc thực thi EVM khi chạy hợp đồng thông minh. Điều này đã được khám phá trong bài blog của Odra và được nhóm zkPoEx sử dụng để nâng cao phần thưởng tìm lỗi.
Làm thế nào để mở rộng quy mô blockchain?
Với sự gia tăng về độ phức tạp của các hợp đồng thông minh hiện nay, nhiều người nhận thấy rằng chi phí cho mã trên chuỗi mà họ duy trì chỉ tiếp tục tăng lên cùng với quá trình phát triển. Nói cách khác, nếu logic DeFi của bạn dần trở nên tốn nhiều tài nguyên tính toán, hoặc logic trò chơi trên chuỗi của bạn cần thêm sức mạnh xử lý, zkVM của RISC Zero và mạng Bonsai sắp ra mắt cho phép bạn viết mã trên chuỗi mở rộng quy mô bằng ngôn ngữ lập trình phổ thông. Tôi đã đưa ra vài ví dụ trong bài blog này, và chúng ta đang ở thời điểm khởi đầu của một mạng lưới tính toán thực sự có thể mở rộng. Nếu bạn muốn xem điều này hoạt động ra sao, hãy bắt đầu ngay hôm nay, tham gia cộng đồng của chúng tôi, đăng ký Bonsai và cùng xây dựng một internet phi tập trung, mở rộng và dành cho mọi người.
Chào mừng tham gia cộng đồng chính thức TechFlow
Nhóm Telegram:https://t.me/TechFlowDaily
Tài khoản Twitter chính thức:https://x.com/TechFlowPost
Tài khoản Twitter tiếng Anh:https://x.com/BlockFlow_News














