
Hiểu về chuỗi SUAVE của Flashbots dưới góc nhìn nhà phát triển: Ngoài MEV, EVM + TEE còn mang lại những khả năng gì?
Tuyển chọn TechFlowTuyển chọn TechFlow

Hiểu về chuỗi SUAVE của Flashbots dưới góc nhìn nhà phát triển: Ngoài MEV, EVM + TEE còn mang lại những khả năng gì?
SUAVE Chain mang đến khả năng mạnh mẽ đáng kể cho việc phát triển ứng dụng thông qua việc tích hợp môi trường TEE, mở ra rất nhiều kịch bản ứng dụng tiềm năng.
Tác giả: ZHIXIONG PAN, DUGUBUYAN
SUAVE là một dự án phi tập trung do Flashbots phát triển, xây dựng một mạng lưới sở hữu môi trường TEE (Môi trường thực thi đáng tin cậy), nhằm giải quyết các vấn đề như lưu giữ khóa và sự tin tưởng giữa nhiều bên trong quy trình MEV. Đồng thời, việc tích hợp TEE vào dự án SUAVE mở ra nhiều khả năng ứng dụng vượt xa việc giải quyết riêng lẻ vấn đề MEV.
Các kho mã liên quan đến SUAVE
Dự án SUAVE được phát triển trên nền tảng Ethereum, do đó nó tự nhiên tương thích với EVM. Hiện tại, các dự án liên quan của SUAVE trên GitHub bao gồm: SUAVE-geth, SUAVE-std, SUAVE-examples, v.v.
Trong đó, SUAVE-geth là mã lớp thực thi được mở rộng từ geth, chủ yếu bổ sung thêm môi trường tính toán mã hóa cùng một số precompile (tiền biên dịch) chạy trong môi trường này. Đặc biệt cần nhấn mạnh là việc thêm chức năng tiền biên dịch cho yêu cầu HTTPS tiêu chuẩn, giúp nhà phát triển tận dụng môi trường TEE để cung cấp cho người dùng chức năng truy cập các mạng khác. Ngoài ra, nó bao gồm loạt precompile phục vụ các chức năng sử dụng TEE như lấy tham số mã hóa, lưu trữ thông tin mã hóa và truy xuất thông tin đã mã hóa — những thành phần này tạo nên cơ sở hạ tầng phát triển dựa trên môi trường đáng tin cậy.
SUAVE-std là một dự án được xây dựng nhằm hỗ trợ nhà phát triển dễ dàng sử dụng hơn, có thể hiểu là một thư viện công cụ phát triển. Ví dụ, nó đóng gói cách sử dụng yêu cầu HTTP, thậm chí còn xây dựng thêm một thư viện mã nguồn để dùng ChatGPT, giúp nhà phát triển không cần phải tự xây dựng gói tin yêu cầu hay phân tích phản hồi từ ChatGPT — chỉ cần thay thế API key của mình khi cấu hình yêu cầu HTTP. Môi trường an toàn TEE đảm bảo an toàn cho API key vì toàn bộ quá trình này đều diễn ra bên trong môi trường TEE. Ban đầu, thư viện chuẩn ChatGPT mặc định sử dụng mô hình GPT-3.5-turbo, nhiệt độ (temperature) mặc định là 0.7. Hiện nay giao diện đã linh hoạt hơn, cho phép truyền mô hình và các tham số khác như đối số.
Dự án SUAVE-examples chủ yếu giới thiệu một số ví dụ minh họa về cách phát triển ứng dụng, hoặc nói đúng hơn là tài liệu hướng dẫn dành cho người mới bắt đầu. Các nhà phát triển mới tiếp cận lập trình ứng dụng SUAVE có thể học hỏi và so sánh qua các ví dụ trong dự án này.
Thực hành phát triển SUAVE
Do SUAVE được mở rộng từ Ethereum (môi trường thực thi của nó được gọi là MEVM - Máy ảo Ethereum đã sửa đổi), nên việc phát triển hợp đồng thông minh hoàn toàn tương thích với EVM. Tài liệu phát triển chính thức đều sử dụng Solidity để minh họa. Vì vậy, kinh nghiệm phát triển bằng Solidity có thể áp dụng trực tiếp. Trong phát triển ứng dụng SUAVE, việc viết hợp đồng thông minh có thể hiểu là phát triển Solidity với chức năng tính toán mã hóa trong môi trường TEE.
Có một vài precompile MEVM quan trọng của SUAVE. Thứ nhất là confidentialInputs, precompile này nhận các tham số được mã hóa từ yêu cầu ứng dụng — thường là các thông tin bí mật như khóa riêng, API key,... Việc đảm bảo an toàn yêu cầu rằng văn bản rõ (plaintext) của dữ liệu này chỉ tồn tại bên trong môi trường TEE. Trong quá trình phát triển ứng dụng, ta dùng interface này để lấy văn bản rõ. Quá trình truyền tải hoàn toàn được mã hóa và đáng tin cậy — nguyên lý sẽ được giải thích sau. Thứ hai là confidentialStore, dùng để lưu trữ thông tin bí mật. Sau khi lấy được thông tin nhạy cảm từ tham số, nếu chưa cần dùng ngay thì có thể lưu lại để sử dụng sau. Thứ ba là confidentialRetrieve, dùng để yêu cầu văn bản rõ dữ liệu nhạy cảm từ ngữ cảnh TEE khi cần tham gia vào tính toán.
Việc SUAVE đảm bảo an toàn lưu trữ thông tin nhạy cảm cho phép nhà phát triển xây dựng các kịch bản như: "Người dùng tải lên khóa riêng, bên thứ ba thực hiện tính toán nghiệp vụ, khi điều kiện thỏa mãn, bên thứ ba có thể trực tiếp dùng khóa riêng của người dùng để ký kết. Như vậy, bên thứ ba có thể dùng khóa riêng của người dùng để ký theo một số quy tắc nhất định, nhưng tuyệt đối không thể biết được nội dung văn bản rõ của khóa."
SUAVE sử dụng yêu cầu HTTPS để thực hiện thao tác nối chuỗi (cross-chain). Bộ công cụ của nó bao gồm một thư viện tên là gateway, dùng để đọc thông tin giữa các chuỗi — bản chất là người dùng thiết lập RPC node của một chuỗi nào đó, phổ biến hơn là người dùng tải lên thông tin API key của Infura, Etherscan,... rồi khi cần gọi, chỉ cần dùng yêu cầu HTTP tới node tương ứng. Khi cần ghi thông tin nối chuỗi, bộ công cụ có gói transaction giúp nhà phát triển mã hóa dữ liệu theo chuẩn EIP1559, cuối cùng phát sóng giao dịch qua giao diện eth_sendRawTransaction.
Một kịch bản sử dụng đáng chú ý khác là biên dịch bytecode từ Solidity, sau đó tải lên như một tham số bí mật và lưu trữ; khi điều kiện thỏa mãn thì triển khai (deploy) và gọi thực thi, từ đó hình thành một thư viện riêng tư. Kịch bản này có thể mở rộng thành: khóa riêng + thư viện bytecode riêng tư. Như vậy, khi ủy quyền gọi cho bên thứ ba, có thể đạt được giao dịch hoàn toàn riêng tư.
Đặc điểm của SUAVE
Trạng thái cuối cùng của SUAVE là một chuỗi, ta gọi là chuỗi SUAVE. Chuỗi SUAVE có thể coi là một chuỗi đã hiện thực MEVM. Vì là chuỗi tương thích EVM, chúng ta cũng có thể xây dựng các tài sản như ERC20, ERC721 trên SUAVE, các thao tác trên chuỗi không khác gì các chuỗi dòng EVM. Tuy nhiên điểm đặc biệt ở đây là có thêm các thao tác ngoài chuỗi, chẳng hạn như gửi giao dịch đến node của chuỗi khác. Kết quả của các thao tác ngoài chuỗi hoặc các điều kiện sử dụng có thể được lưu trữ trên chuỗi SUAVE, và kết quả lưu trữ này được đảm bảo bởi cơ chế đồng thuận. Điều này giúp đạt được tính nhất quán giữa tính toán ngoài chuỗi và trạng thái trên chuỗi. Ví dụ, nhà phát triển có thể viết một hợp đồng thông minh ghi lại một số điều kiện trên chuỗi (cũng có thể chỉnh sửa), khi truy cập node mạng của một chuỗi nào đó, nếu kết quả trả về thỏa mãn yêu cầu, thì tiến hành chuyển một tài sản ERC20 đã định trước.
Tất cả những điều trên đều là tính năng mang lại nhờ khả năng tính toán đáng tin cậy ngoài chuỗi của SUAVE. Chúng ta biết rằng SUAVE do đội ngũ Flashbots phát triển, và Flashbots xem SUAVE là "Tương lai của MEV", do đó xử lý giao dịch dạng bundle chắc chắn là chức năng thiết yếu. Với chuỗi SUAVE dựa trên môi trường đáng tin cậy, nguyên lý liên quan MEV rất đơn giản: ghép giao dịch dạng bundle và gửi đến node relay của Flashbots. Khóa riêng có thể được lưu trữ riêng tư, thậm chí cả mã nguồn cũng vậy, tạo nên tiềm năng sử dụng khổng lồ. Ví dụ, các builder không chỉ nhận được phần thưởng gas trên chuỗi mục tiêu mà còn có thể nhận thêm một số tài sản kỹ thuật số trên chuỗi SUAVE. Đối với thị trường MEV, việc linh hoạt định nghĩa nghiệp vụ trong điều kiện thông tin riêng tư được đảm bảo an toàn là điều hiện tại chưa làm được (hiện tại chỉ có thể dựa vào niềm tin, hợp đồng, uy tín thương mại... bảo vệ qua kênh ngoại chuỗi).
Công cụ phát triển và cơ sở hạ tầng của SUAVE
Đối với nhà phát triển, việc phát triển một dapp ngoài phần hợp đồng thông minh trên chuỗi, thì các công cụ phía frontend như ether.js cũng rất quan trọng. Trong phát triển ứng dụng SUAVE, do chuỗi SUAVE được cải tiến từ EVM, nên các công cụ như ether.js, web3.js vẫn có thể sử dụng bình thường. Những công cụ này tương tác với hợp đồng thông minh trên chuỗi SUAVE không khác gì với các chuỗi tương thích EVM khác, nhưng chỉ có thể gọi các chức năng không thuộc môi trường confidential. Một hợp đồng thông minh trên chuỗi SUAVE bao gồm các thao tác trên chuỗi (chỉ chuỗi SUAVE) và ngoài chuỗi (các thao tác nối chuỗi cũng thuộc nhóm này). Thao tác ngoài chuỗi thực tế là tính toán trong môi trường confidential. Đối với tính toán môi trường confidential, đội ngũ Flashbots cung cấp SDK cho hai ngôn ngữ (Go và TypeScript), cách dùng được giới thiệu chi tiết trong tài liệu SUAVE. Khi gửi giao dịch liên quan tính toán riêng tư đến node SUAVE (Flashbots gọi là Yêu cầu tính toán riêng tư - Confidential Compute Request), có thể đưa kèm confidentialInputs — tức là các tham số riêng tư. Toàn bộ quá trình truyền tải, văn bản rõ của tham số này chỉ xuất hiện duy nhất bên trong môi trường TEE.
Cuối cùng, về việc triển khai hợp đồng thông minh, mạng thử nghiệm của chuỗi SUAVE tên là Regil, tuy nhiên hiện đã được nâng cấp thành Toliman. Phương pháp triển khai được mô tả chi tiết trong tài liệu SUAVE. Cách triển khai, cách tương tác sau khi triển khai,... đều không khác gì việc triển khai hợp đồng thông minh Ethereum.
Kettle
Sau khi triển khai hợp đồng thông minh, cách thức vận hành thực tế có sự khác biệt so với Ethereum. Đơn vị thực thi chính của SUAVE được gọi là Kettle. Kettle chính là môi trường chạy TEE của SUAVE (bao gồm một node MEVM và một nơi lưu trữ dữ liệu bí mật - confidential data store). Khi nhà phát triển viết và triển khai hợp đồng thông minh, người dùng gửi yêu cầu tính toán riêng tư (gọi tắt là CCR), bất cứ khi nào hợp đồng thông minh cần dùng đến tính toán riêng tư, thực tế đều do Kettle thực hiện.
Sơ đồ cấu trúc của Kettle như sau:

Chúng ta có thể thấy, nhà phát triển dùng ngôn ngữ Solidity để phát triển và triển khai ứng dụng, cuối cùng các yêu cầu đến Kettle đều được xử lý bởi MEVM. Bên trong MEVM ngoài chức năng của geth còn bổ sung thêm một số precompile để lưu trữ, truy xuất dữ liệu riêng tư,... Ngoài ra, nó còn xử lý (bao gồm sửa đổi, truy xuất) trạng thái trên chuỗi SUAVE.
Nhiệm vụ chính của Kettle là nhận và xử lý tính toán riêng tư, cũng như lưu trữ và truy xuất dữ liệu bí mật. Lấy ví dụ lưu trữ một dữ liệu riêng tư: người dùng phía frontend dùng SDK hoặc công cụ suave geth gửi yêu cầu CCR đến một hợp đồng thông minh trên chuỗi SUAVE. SDK hoặc công cụ suave geth sẽ dùng khóa dữ liệu (khóa đối xứng) để mã hóa dữ liệu riêng tư. Khóa dữ liệu này chỉ xuất hiện bên trong môi trường Kettle, node RPC của SUAVE cũng chỉ nhìn thấy văn bản mã hóa. Việc Kettle và node có quan hệ một-một hay không, từ tài liệu SUAVE hiện chưa thấy làm rõ. Tương tự, nguyên lý chi tiết về bản thân Kettle, node và trao đổi khóa cũng chưa được giới thiệu trong tài liệu. Tuy nhiên, dựa trên quy trình mã hóa/giải mã đã biết, nhà phát triển có cơ sở tin rằng dữ liệu riêng tư được bảo vệ an toàn từ phía người dùng đến bên trong môi trường TEE của Kettle.
Kettle lưu trữ dữ liệu riêng tư trong confidential data store. Khi nhà phát triển viết hợp đồng thông minh, họ sẽ chỉ định ai được truy cập và sửa đổi dữ liệu. Kettle sẽ phát hành thông tin này qua mạng Transport. Nếu chỉ định chỉ hợp đồng này được truy cập, thì các yêu cầu CCR sau này cũng phải gửi đến đúng Kettle này, vì việc lưu trữ dữ liệu của Kettle không được cập nhật toàn cục. Sau khi nhà phát triển triển khai hợp đồng thông minh, người dùng truy cập Kettle tương ứng (trong yêu cầu CCR có một tham số bắt buộc phải chỉ định địa chỉ Kettle), lúc đó dữ liệu riêng tư mới có thể truy cập được. Khi người dùng gửi CCR và yêu cầu dữ liệu riêng tư trong hợp đồng thông minh, họ dùng ID và khóa được tạo khi lưu dữ liệu để truy xuất — nghĩa là dữ liệu riêng tư được truy cập và sử dụng theo cơ chế khóa-giá trị (key-value).
Các yêu cầu HTTP cũng do Kettle xử lý. Rõ ràng, đây là những công việc nằm ngoài chuỗi SUAVE, nghĩa là chúng được thực hiện bởi một node đơn lẻ. Mặc dù SUAVE là một chuỗi, nhưng thuộc tính blockchain của nó khá yếu — khi Kettle xử lý yêu cầu CCR, sẽ không có nhiều node cùng chạy và xác minh. Lý do rất đơn giản: truy cập tài nguyên ngoài chuỗi không thể đảm bảo tính幂 đẳng (idempotency). Do đó, kết quả của các công việc ngoài chuỗi này thực tế phụ thuộc vào node. Vì vậy, nhà phát triển cần lưu ý địa chỉ Kettle khi triển khai (xét theo điểm này, Kettle có thể coi như một hợp đồng thông minh đặc biệt), các yêu cầu CCR sau này của người dùng phải kèm theo địa chỉ Kettle tương ứng.
Ngoài ra, còn một vấn đề đáng chú ý đối với nhà phát triển. Hiện tại trên mạng thử nghiệm Toliman, Kettle không đảm bảo đang chạy trong môi trường TEE. Do đó, khi phát triển hợp đồng thông minh trên mạng thử nghiệm, cần chú ý bảo vệ dữ liệu riêng tư, không để rò rỉ thông tin thật sự nhạy cảm.
Tổng kết
Chuỗi SUAVE, nhờ tích hợp môi trường TEE, đã mang lại khả năng mạnh mẽ cho việc phát triển ứng dụng, mở ra vô số kịch bản tiềm năng. Các thao tác nối chuỗi đơn giản và thuận tiện cũng tạo không gian sáng tạo lớn cho thiết kế Dapp.
Thiết kế Kettle của chuỗi SUAVE có khả năng xử lý tài nguyên ngoài chuỗi, điều này đặt ra vấn đề về xác minh và đồng thuận. Một Kettle thiếu trung thực có thể gây tổn hại nghiêm trọng đến mạng. Làm sao để đảm bảo Kettle không hành xử ác ý, hoặc nếu có thì bị trừng phạt, hoặc đảm bảo chi phí cho hành vi ác ý đủ cao — tất cả đều là những vấn đề cần được giải quyết. Chuỗi SUAVE hiện sử dụng cơ chế đồng thuận PoA, liệu nó có chịu được kiểm nghiệm thực tiễn hay không, các nhà phát triển vẫn đang chờ đợi quan sát.
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














