
Cách mạng tính toán ngoại chuỗi: Tìm hiểu chi tiết về bộ xử lý phụ ZK và tiềm năng ứng dụng trong DeFi và DAO
Tuyển chọn TechFlowTuyển chọn TechFlow

Cách mạng tính toán ngoại chuỗi: Tìm hiểu chi tiết về bộ xử lý phụ ZK và tiềm năng ứng dụng trong DeFi và DAO
Bài viết này chủ yếu thảo luận về các phương pháp triển khai bộ xử lý đồng, các loại ứng dụng cũng như định hướng phát triển trong tương lai.
Tác giả: Kernel Ventures Turbo Guo
Phản biện: Kernel Ventures Mandy, Kernel Ventures Joshua
TL;DR
ZK coprocessor là một giải pháp cho phép dApp tận dụng tài nguyên tính toán bên ngoài chuỗi. Bài viết này chủ yếu thảo luận về các phương pháp triển khai coprocessor, các ứng dụng khác nhau và định hướng phát triển trong tương lai, bao gồm những nội dung chính sau:
-
zkVM của RISC Zero là một giải pháp ZK coprocessor, cho phép hợp đồng trên chuỗi gọi zkVM bên ngoài chuỗi để chạy mã Rust cụ thể, trả kết quả về chuỗi và cung cấp bằng chứng zkp để hợp đồng xác minh tính đúng đắn của quá trình tính toán.
-
ZK coprocessor có nhiều cách triển khai khác nhau. Ngoài zkVM, người dùng cũng có thể tự viết mạch ZK tùy chỉnh cho chương trình hoặc sử dụng các framework có sẵn để viết mạch, từ đó cho phép hợp đồng tận dụng tài nguyên tính toán bên ngoài chuỗi.
-
ZK coprocessor có thể phát huy vai trò trong DeFi, ví dụ như đưa việc tính toán AMM ra ngoài chuỗi, giúp giao thức thu thập giá trị tương tự MEV, hoặc cho phép AMM thực hiện các logic vận hành phức tạp và tốn nhiều tài nguyên tính toán. ZK coprocessor còn có thể giúp các giao thức cho vay tính lãi suất theo thời gian thực, minh bạch hóa việc tính toán ký quỹ,... zkAMM có hai cách triển khai: một là dùng zkVM, hai là dùng zkOracle.
-
ZK coprocessor còn có các ứng dụng tiềm năng khác, ví dụ như ví tiền có thể dùng ZK coprocessor để thực hiện xác thực danh tính bên ngoài chuỗi, coprocessor cũng có thể giúp trò chơi trên chuỗi thực hiện các phép tính phức tạp hơn, giảm phí gas cần thiết cho quản trị DAO, v.v.
-
Cuộc đua ZK coprocessor vẫn chưa ngã ngũ. So với việc tự viết mạch, việc dùng một dự án làm giao diện để gọi tài nguyên bên ngoài chuỗi thân thiện hơn với nhà phát triển. Tuy nhiên, nhà cung cấp dịch vụ tính toán nào (nhà cung cấp đám mây truyền thống, chia sẻ tài nguyên phi tập trung) được tích hợp phía sau "giao diện" đó lại là một chủ đề đáng bàn khác.
1. Ý nghĩa và ứng dụng của ZK Coprocessor

Trọng tâm của ZK coprocessor là chuyển việc tính toán từ trên chuỗi ra ngoài chuỗi, dùng ZK để chứng minh độ tin cậy của quá trình tính toán bên ngoài chuỗi, giúp hợp đồng thông minh xử lý khối lượng lớn tính toán một cách dễ dàng, đồng thời đảm bảo tính xác minh được tính đúng đắn của kết quả. Tư duy này tương tự như zkRollup, nhưng Rollup là lớp giao thức sử dụng tài nguyên tính toán bên ngoài chuỗi, còn ZK coprocessor là dApp tận dụng tài nguyên bên ngoài chuỗi.
Ở đây chúng tôi dùng RISC Zero để giải thích một cách triển khai ZK coprocessor, tuy nhiên ZK coprocessor có nhiều cách triển khai khác nhau, sẽ được giới thiệu thêm ở phần sau. RISC Zero đã phát triển kiến trúc Bonsai ZK coprocessor, trong đó trọng tâm là zkVM của RISC Zero, cho phép lập trình viên tạo bằng chứng zkp cho sự kiện "một đoạn mã Rust đã được thực thi đúng". Sau khi có zkVM, quy trình triển khai ZK coprocessor cụ thể như sau:
-
Lập trình viên gửi yêu cầu đến hợp đồng relay của Bonsai, tức là yêu cầu chạy chương trình mong muốn trong zkVM
-
Hợp đồng relay chuyển yêu cầu tới pool yêu cầu bên ngoài chuỗi
-
Bonsai thực thi yêu cầu bên ngoài chuỗi trong zkVM, tiến hành các phép tính quy mô lớn, sau đó tạo ra một biên lai (receipt).
-
Các bằng chứng này, còn gọi là "biên lai", được Bonsai công bố trở lại trên chuỗi thông qua hợp đồng relay.

Chương trình được chứng minh trong Bonsai được gọi là Guest Program, và "biên lai" dùng để chứng minh rằng guest program đã được thực thi đúng. Biên lai bao gồm một journal và một con dấu (seal). Cụ thể, Journal chứa đầu ra công khai của ứng dụng zkVM, còn seal dùng để chứng minh tính hợp lệ của biên lai, tức là chứng minh guest program đã được thực thi đúng – bản thân seal cũng là một zkSTARK do bên chứng minh tạo ra. Việc xác minh biên lai có thể đảm bảo rằng journal được xây dựng dựa trên mạch điện đúng.
Bonsai đơn giản hóa quy trình biên dịch từ mã Rust sang bytecode zkVM, tải lên chương trình, thực thi trong VM và phản hồi bằng chứng, giúp lập trình viên tập trung hơn vào thiết kế logic chương trình. Không chỉ một phần logic hợp đồng, mà toàn bộ logic hợp đồng cũng có thể được chạy bên ngoài chuỗi. RISC Zero còn sử dụng kỹ thuật continuations, chia nhỏ việc tạo một bằng chứng lớn thành nhiều phần nhỏ, mỗi phần được chứng minh riêng biệt. Như vậy vừa có thể tạo bằng chứng cho chương trình lớn, vừa không chiếm quá nhiều bộ nhớ.Ngoài RISC Zero, các dự án như IronMill, =nil; Foundation và Marlin cũng cung cấp các giải pháp phổ quát tương tự.
2. Ứng dụng của ZK Coprocessor trong DeFi
2.1 AMM - Bonsai làm coprocessor
zkUniswap là một loại AMM sử dụng tài nguyên tính toán bên ngoài chuỗi, trọng tâm là đưa một phần tính toán swap ra ngoài chuỗi và sử dụng Bonsai. Người dùng khởi tạo yêu cầu swap trên chuỗi. Hợp đồng relay của Bonsai nhận yêu cầu, khởi động tính toán bên ngoài chuỗi. Sau khi Bonsai hoàn tất tính toán, nó trả kết quả và bằng chứng về hàm callback trong EVM. Nếu bằng chứng được xác minh thành công, swap sẽ được thực hiện.
Tuy nhiên, swap không diễn ra trong một lần duy nhất, quá trình yêu cầu và thực thi nằm ở các transaction khác nhau, điều này gây ra rủi ro nhất định: trạng thái của pool có thể thay đổi giữa lúc gửi yêu cầu và lúc hoàn tất swap. Vì việc xác minh dựa trên trạng thái pool tại thời điểm gửi yêu cầu. Nếu một yêu cầu đang chờ xử lý mà trạng thái pool thay đổi, thì việc xác minh sẽ thất bại.
Để giải quyết vấn đề này, các nhà phát triển đã thiết kế một cơ chế khóa pool. Khi người dùng gửi yêu cầu, mọi hoạt động ngoài việc thanh toán swap đều bị khóa, cho đến khi swap được kích hoạt thành công trên chuỗi hoặc quá thời gian chờ (thời gian này được thiết lập trước). Với giới hạn thời gian, ngay cả khi relay hay zkp gặp sự cố, pool cũng sẽ không bị khóa mãi. Thời gian giới hạn cụ thể có thể là vài phút.
zkUniswap có thiết kế đặc biệt đối với MEV, nhằm mục đích để giao thức thu giữ giá trị MEV. Về lý thuyết, zkAMM cũng có MEV, vì người gửi giao dịch đầu tiên có thể khóa trước, nên mọi người vẫn sẽ đua gas, và các builder vẫn có thể sắp xếp thứ tự các giao dịch yêu cầu. Nhưng zkUniswap sẽ tự thu giữ lợi nhuận MEV bằng phương pháp đấu giá Hà Lan biến đổi lãi suất (VRGDA).
zkUniswap lấy quyền khóa (lock) để đấu giá giảm dần. Nếu lock được bán nhanh, giao thức biết nhu cầu cao và tự động tăng giá; nếu tốc độ bán chậm lại, giao thức sẽ hạ giá. Đây sẽ trở thành nguồn thu mới. Tức là, giao thức cung cấp một sản phẩm mới để quyết định thứ tự giao dịch, và tiền cạnh tranh cho thứ tự này trực tiếp chảy vào tay dự án thông qua sản phẩm mới này – rất tiềm năng.
2.2 AMM - zkOracle làm coprocessor
Ngoài việc dùng zkVM, một số người đề xuất dùng zkOracle để tận dụng tài nguyên tính toán bên ngoài chuỗi, và zkOracle là oracle kết hợp đầu vào và đầu ra. Oracle thông thường có hai loại: input oracle và output oracle. Input oracle là loại đưa dữ liệu bên ngoài chuỗi (được xử lý/tính toán) lên chuỗi, còn output oracle là loại đưa dữ liệu trên chuỗi (được xử lý/tính toán) ra ngoài chuỗi. Oracle I/O (vừa vào vừa ra), hay còn gọi là zkOracle, thực hiện đầu ra trước rồi mới đầu vào, giúp chuỗi tận dụng tài nguyên tính toán bên ngoài.
zkOracle vừa sử dụng dữ liệu trên chuỗi làm nguồn dữ liệu, vừa dùng ZK để đảm bảo các nút oracle không gian lận trong tính toán, từ đó thực hiện chức năng của coprocessor. Do đó, có thể đặt phần tính toán cốt lõi của AMM vào trong zkOracle, vừa thực hiện chức năng AMM truyền thống, vừa có thể thực hiện các thao tác phức tạp và tốn tài nguyên tính toán hơn.

2.3 Các ứng dụng khác như tính lãi suất cho vay, tính ký quỹ
Bỏ qua phương thức triển khai, với ZK coprocessor có thể thực hiện nhiều chức năng.Ví dụ, giao thức cho vay không cần thiết lập trước tham số, mà có thể điều chỉnh lãi suất theo tình hình vay mượn thực tế. Ví dụ, khi nhu cầu vay tăng cao thì nâng lãi suất để thu hút nguồn cung, khi nhu cầu giảm thì hạ lãi suất. Điều này đòi hỏi giao thức phải liên tục cập nhật dữ liệu trên chuỗi và thực hiện hàng loạt tính toán để đưa ra tham số phù hợp – điều này cần đến tính toán bên ngoài chuỗi (trừ khi chi phí trên chuỗi cực kỳ thấp).
Các phép tính phức tạp như tính số dư ký quỹ, lãi/lỗ chưa thực hiện, số tiền thanh lý... cũng có thể chuyển sang thực hiện bởi coprocessor. Ưu điểm của việc dùng coprocessor là giúp các ứng dụng minh bạch và có thể xác minh hơn, logic của engine ký quỹ không còn là một hộp đen bí mật. Dù tính toán được thực hiện bên ngoài chuỗi, người dùng vẫn có thể hoàn toàn tin tưởng vào tính đúng đắn của nó. Ngoài ra, cách tiếp cận này cũng phù hợp với việc tính toán quyền chọn.
3. Các ứng dụng khác của ZK Coprocessor
3.1 Ví tiền - Dùng Bonsai làm coprocessor
Bonfire Wallet dùng zkVM để đưa việc tính toán xác thực danh tính ra ngoài chuỗi. Mục tiêu của ví này là cho phép người dùng dùng thông tin sinh trắc học (dấu vân tay) hoặc phần cứng mã hóa yubikey để tạo ví burner.
Cụ thể, Bonfire Wallet sử dụng WebAuthn – một tiêu chuẩn xác thực web phổ biến – cho phép người dùng xác thực trên web mà không cần mật khẩu, chỉ cần dùng thiết bị. Trong ví Bonfire, người dùng tạo một khóa công khai (không phải khóa trên chuỗi, dành cho WebAuthn dùng) thông qua WebAuthn, sau đó dùng nó để tạo ví.
Mỗi ví Burner đều có một hợp đồng trên chuỗi, trong đó chứa khóa công khai WebAuthn, và hợp đồng cần xác minh chữ ký WebAuthn của người dùng. Tuy nhiên, phép tính này rất nặng, nên Bonsai được dùng để chuyển tính toán ra ngoài chuỗi, thông qua một chương trình guest zkVM để xác minh chữ ký bên ngoài chuỗi và tạo zkp để xác minh trên chuỗi.

3.2 Truy xuất dữ liệu trên chuỗi - Người dùng tự viết mạch ZK
Axiom là một ứng dụng không dùng zkVM nhưng áp dụng giải pháp coprocessor theo cách khác. Trước tiên, hãy tìm hiểu Axiom muốn làm gì: nó muốn tận dụng ZK coprocessor để cho phép hợp đồng đọc thông tin lịch sử trên chuỗi. Thực tế, việc cho phép hợp đồng đọc dữ liệu lịch sử rất khó, vì hợp đồng thông minh thường chỉ lấy dữ liệu thời gian thực, và rất tốn kém; hợp đồng khó có thể lấy được các dữ liệu có giá trị như số dư tài khoản trước đây hoặc lịch sử giao dịch.

Các nút Axiom truy cập dữ liệu trên chuỗi cần thiết và thực hiện các tính toán chỉ định bên ngoài chuỗi, sau đó tạo bằng chứng kiến thức không (zero-knowledge proof) chứng minh rằng kết quả được tính toán đúng từ dữ liệu trên chuỗi hợp lệ. Bằng chứng này được xác minh trên chuỗi để đảm bảo hợp đồng có thể tin tưởng kết quả.
Việc tạo zkp cho tính toán bên ngoài chuỗi đòi hỏi phải biên dịch chương trình vào mạch ZK. Như đã đề cập, có thể dùng zkVM để làm việc này, nhưng Axiom cho rằng có nhiều lựa chọn, cần cân nhắc hiệu suất, linh hoạt và trải nghiệm phát triển:
-
Mạch tùy chỉnh: Lập trình viên tự thiết kế mạch cho chương trình – hiệu suất tốt nhất nhưng tốn thời gian phát triển;
-
eDSL/DSL: Lập trình viên vẫn tự viết mạch, nhưng có các framework hỗ trợ giải quyết các vấn đề liên quan đến ZK, giúp cân bằng hiệu suất và trải nghiệm phát triển.
-
zkVM: Lập trình viên dùng máy ảo có sẵn để chạy ZK – rất tiện lợi nhưng theo Axiom thì hiệu quả rất thấp.
Do đó, Axiom chọn phương án thứ hai và còn cung cấp cho người dùng một bộ module ZK đã được tối ưu để tự thiết kế mạch.
Dự án tương tự Axiom là Herodotus, nhưng nó muốn làm middleware truyền tải thông tin xuyên chuỗi. Vì xử lý thông tin xảy ra bên ngoài chuỗi, nên việc các chuỗi khác nhau nhận được dữ liệu đã xử lý là hợp lý. Một dự án khác là Space and Time dùng kiến trúc tương tự để thực hiện lập chỉ mục dữ liệu.
3.3 Các ứng dụng khác như trò chơi trên chuỗi, quản trị DAO
Ngoài ra, trò chơi trên chuỗi và quản trị DAO cũng có thể dùng ZK coprocessor. RISC Zero cho rằng bất kỳ tính toán nào vượt quá 250k gas khi dùng ZK coprocessor sẽ rẻ hơn, mặc dù cách tính cụ thể cần được kiểm chứng thêm. Quản trị DAO cũng có thể dùng ZK coprocessor vì liên quan đến nhiều người và nhiều hợp đồng, tốn rất nhiều tài nguyên tính toán. RISC Zero khẳng định việc dùng Bonsai có thể giảm 50% phí gas.ZKML về bản chất cũng theo tư duy ZK coprocessor, do đó Modulus Labs, Giza cũng là các dự án trong lĩnh vực này, chỉ là khái niệm ZK coprocessor rộng hơn.
Ngoài ra, lĩnh vực ZK coprocessor còn có một số dự án hỗ trợ như ezkl, cung cấp trình biên dịch tạo mạch ZK, bộ công cụ triển khai ZK, công cụ chuyển tính toán từ chuỗi ra ngoài chuỗi, v.v.
4. Triển vọng tương lai
Coprocessor mang đến cho ứng dụng trên chuỗi tài nguyên tính toán bên ngoài như 'đám mây', cung cấp lượng tính toán lớn với chi phí tương đối rẻ, trong khi chuỗi chỉ xử lý các tính toán cần thiết. Trên thực tế, zkVM cũng có thể chạy trên đám mây, ZK coprocessor về bản chất là một kiến trúc, là cách thức chuyển tính toán từ chuỗi ra ngoài chuỗi, và nhà cung cấp tài nguyên tính toán bên ngoài không bị giới hạn.
Về bản chất, tài nguyên tính toán bên ngoài chuỗi có thể do các hãng lớn truyền thống cung cấp, thậm chí là chia sẻ tài nguyên tính toán phi tập trung, hoặc thiết bị cá nhân. Ba hướng đi này có sự khác biệt rõ rệt: các hãng lớn truyền thống có thể cung cấp giải pháp tính toán bên ngoài chuỗi tương đối trưởng thành; trong tương lai, tính "robustness" của chia sẻ tài nguyên tính toán phi tập trung có thể mạnh hơn; còn tính toán cục bộ của người dùng cũng đầy tiềm năng sáng tạo. Tuy nhiên, hiện tại nhiều dự án ZK coprocessor đang ở giai đoạn cung cấp dịch vụ đóng nguồn, vì hệ sinh thái ngành chưa hình thành, chưa thể tách nhỏ dịch vụ và giao cho các dự án khác nhau. Trong tương lai có hai khả năng:
-
Mỗi khâu của ZK coprocessor sẽ có hàng loạt dự án cạnh tranh lẫn nhau
-
Một dự án có trải nghiệm dịch vụ tốt sẽ chiếm phần lớn thị trường
Xét từ góc độ lập trình viên, khi sử dụng ZK coprocessor họ có thể chỉ dùng một dự án "giao diện", đây cũng là lý do Amazon Cloud chiếm phần lớn thị trường – lập trình viên sẽ quen thuộc với một cách triển khai. Tuy nhiên, nhà cung cấp dịch vụ tính toán bên ngoài chuỗi nào (nhà cung cấp đám mây truyền thống, chia sẻ tài nguyên phi tập trung) được tích hợp phía sau dự án "giao diện" đó lại là một chủ đề đáng bàn khác trong ngành.
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














