Tiêu đề gốc: "Hiểu chuỗi SUAVE của Flashbots từ góc nhìn của nhà phát triển: Ngoài MEV, còn có những khả năng nào khác cho EVM + TEE? 》
Tác giả gốc: ZHIXIONG PAN, DUGUBUYAN, ChainFeeds Research
Chuỗi SUAVE mang đến những khả năng đủ mạnh mẽ cho quá trình phát triển ứng dụng bằng cách giới thiệu môi trường TEE và các kịch bản ứng dụng tiềm năng của nó rất nhiều. Ngoài ra, hoạt động chuỗi chéo đơn giản và thuận tiện của nó cũng cung cấp đủ không gian cho trí tưởng tượng trong thiết kế Dapp.
SUAVE là một dự án phi tập trung do Flashbots phát triển. Nó thiết lập một mạng lưới với môi trường TEE để giải quyết các vấn đề gặp phải trong quy trình MEV như quyền lưu giữ khóa và sự tin tưởng lẫn nhau giữa nhiều bên. Đồng thời, việc bổ sung TEE vào dự án SUAVE mang đến cho SUAVE nhiều khả năng hơn ngoài việc giải quyết vấn đề MEV.
Dự án SUAVE dựa trên phần mở rộng của Ethereum, do đó về cơ bản nó tương thích với EVM. Các dự án liên quan hiện tại trên GitHub bao gồm: SUAVE-geth, SUAVE-std, SUAVE-examples, v.v.
Trong số đó, SUAVE-geth là mã lớp thực thi được mở rộng dựa trên geth. Nó chủ yếu bổ sung một môi trường điện toán được mã hóa dựa trên geth, cũng như một số bản biên dịch trước trong môi trường điện toán được mã hóa. Điều đáng chú ý là tính năng biên dịch trước các yêu cầu HTTPS chuẩn đã được thêm vào, cho phép các nhà phát triển sử dụng môi trường TEE để cung cấp cho người dùng khả năng truy cập các mạng khác. Ngoài ra, nó bao gồm một loạt các biên dịch trước dựa trên các chức năng sử dụng TEE, chẳng hạn như lấy các tham số mã hóa, lưu trữ thông tin mã hóa và lấy thông tin mã hóa, 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 tạo ra để thuận tiện cho các nhà phát triển và có thể được 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 các yêu cầu HTTP và thậm chí đóng gói một thư viện mã sử dụng ChatGPT trên cơ sở này. Điều này cho phép các nhà phát triển tránh phải tự mình lắp ráp các tin nhắn yêu cầu ChatGPT và phân tích cú pháp các tin nhắn trả về ChatGPT. Họ chỉ cần thay thế khóa API của riêng họ khi lắp ráp các thông báo yêu cầu HTTP. Môi trường bảo mật TEE đảm bảo tính bảo mật của khóa API vì mọi thứ đều được thực hiện trong môi trường TEE. Ban đầu, thư viện chuẩn ChatGPT sử dụng mô hình GPT-3.5-turbo theo mặc định và nhiệt độ mặc định là 0,7. Hiện nay, một giao diện linh hoạt đã được thêm vào và các mô hình cũng có thể được truyền vào dưới dạng tham số.
Dự án ví dụ SUAVE chủ yếu nhằm mục đích trình bày một số trường hợp về cách phát triển ứng dụng hoặc nói chính xác hơn là đây là hướng dẫn dành cho người mới bắt đầu. Đối với những nhà phát triển mới làm quen với phát triển ứng dụng SUAVE, họ có thể tìm hiểu và so sánh thông qua các trường hợp trong dự án này.
Vì SUAVE dựa trên phần mở rộng 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 quá trình phát triển hợp đồng thông minh tương thích với EVM và tất cả các tài liệu phát triển chính thức đều được giới thiệu trong Solidity. Do đó, đối với các nhà phát triển, kinh nghiệm phát triển Solidity có thể được tận dụng tối đa. Trong phát triển ứng dụng SUAVE, việc phát triển hợp đồng thông minh có thể được hiểu là phát triển Solidity với các hàm tính toán được mã hóa trong môi trường TEE.
Có một số chương trình biên dịch trước SUAVE MEVM quan trọng. Đầu tiên làconfidentialInputs. Bản biên dịch trước này chấp nhận các tham số mã hóa từ các yêu cầu của ứng dụng. Tham số này thường là một số thông tin riêng tư cần được mã hóa, chẳng hạn như khóa riêng, khóa API, v.v. Tính bảo mật của tham số này phải được đảm bảo bằng cách yêu cầu văn bản thuần túy của tham số này chỉ có thể xuất hiện trong môi trường TEE. Trong phát triển ứng dụng, thông tin này được thu thập thông qua giao diện này. Quá trình truyền tải được mã hóa hoàn toàn, an toàn và đáng tin cậy. Chúng ta sẽ nói về nguyên tắc này sau. Thứ hai làconfidentialStore, được dùng để lưu trữ thông tin riêng tư. Khi chúng ta lấy thông tin riêng tư từ các tham số, chúng ta thường không cần thông tin đó để tham gia vào phép tính tại thời điểm đó, vì vậy chúng ta lưu trữ thông tin đó để sử dụng sau. Thứ ba là lấy lại bí mật. Giao diện này được sử dụng để yêu cầu dữ liệu văn bản thuần túy từ môi trường ngữ cảnh TEE khi cần thông tin riêng tư cho các tính toán tiếp theo.
Lưu trữ thông tin riêng tư an toàn của SUAVE cho phép các nhà phát triển triển khai kịch bản sau: "Người dùng tải khóa riêng lên, sau đó bên thứ ba thực hiện các tính toán kinh doanh. Khi các điều kiện được đáp ứng, bên thứ ba có thể trực tiếp sử dụng khóa riêng của người dùng để ký. Theo cách này, bên thứ ba có thể sử dụng khóa riêng của người dùng để ký theo các quy tắc nhất định, nhưng bên thứ ba sẽ không bao giờ có thể lấy được văn bản thuần túy của khóa riêng."
SUAVE sử dụng các yêu cầu HTTPS cho các hoạt động chuỗi chéo. Có một thư viện gọi là gateway trong bộ công cụ của nó để đọc trực tiếp thông tin chuỗi chéo. Bản chất của nó là người dùng thiết lập nút RPC của một chuỗi nhất định. Thông thường, người dùng tải lên thông tin khóa API như Infura và Etherscan, sau đó sử dụng trực tiếp các yêu cầu HTTP đến nút tương ứng khi họ cần gọi. Khi cần ghi thông tin chuỗi chéo, bộ công cụ bao gồm một gói giao dịch có thể giúp các nhà phát triển mã hóa các thông báo như EIP1559 và cuối cùng phát sóng giao dịch thông qua giao diện eth_sendRawTransaction.
Một tình huống sử dụng khác đáng đề cập là tải lên và lưu trữ mã bytecode được Solidity biên dịch dưới dạng tham số riêng tư, triển khai và gọi mã này khi các điều kiện được đáp ứng, do đó tạo thành một thư viện riêng tư. Kịch bản sử dụng này có thể được mở rộng thành: khóa riêng + thư viện bytecode riêng. Theo cách này, các giao dịch hoàn toàn riêng tư có thể được thực hiện khi thực hiện các cuộc gọi ủy quyền của bên thứ ba.
Trạng thái cuối cùng của SUAVE là một chuỗi, mà chúng tôi gọi là chuỗi SUAVE. Chúng ta có thể coi chuỗi SUAVE là chuỗi triển khai MEVM. Vì đây là blockchain tương thích với EVM nên chúng ta cũng có thể xây dựng các tài sản như ERC20, ERC721, v.v. trên SUAVE và các hoạt động trên chuỗi của nó không khác gì so với các chuỗi EVM. Tuy nhiên, tính độc đáo của nó nằm ở việc bổ sung các hoạt động ngoài chuỗi, chẳng hạn như gửi giao dịch đến các nút ở các chuỗi khác. Kết quả của các hoạt động ngoài chuỗi hoặc điều kiện sử dụng có thể được lưu trữ trên chuỗi SUAVE và kết quả được lưu trữ được đảm bảo bằng sự đồng thuận. Điều này sẽ đảm bảo tính nhất quán giữa các tính toán ngoài chuỗi và trạng thái trên chuỗi. Ví dụ, các nhà phát triển có thể viết hợp đồng thông minh và ghi lại một số điều kiện trên chuỗi (cũng có thể sửa đổi được). Khi truy cập vào một nút mạng chuỗi nhất định và kết quả trả về đáp ứng các yêu cầu, một tài sản ERC20 được thiết lập trước sẽ được chuyển giao.
Những điều nêu trên đều là các tính năng mà công nghệ điện toán đáng tin cậy ngoài chuỗi của SUAVE mang lại. Chúng tôi biết rằng SUAVE được phát triển bởi nhóm Flashbots và nhóm Flashbots coi SUAVE là "Tương lai của MEV", do đó xử lý giao dịch theo gói chắc chắn là cần thiết. Dựa trên chuỗi SUAVE trong môi trường đáng tin cậy, các nguyên tắc liên quan đến MEV rất đơn giản: lắp ráp các giao dịch bó và gửi chúng đến nút chuyển tiếp Flashbots. Khóa riêng có thể được lưu trữ riêng tư và thậm chí mã cũng có thể được lưu trữ riêng tư, tạo ra tiềm năng sử dụng rất lớn. Ví dụ, ngoài phần thưởng gas trên chuỗi mục tiêu, người xây dựng cũng có thể nhận được một số tài sản kỹ thuật số nhất định trên chuỗi SUAVE. Đối với thị trường MEV, việc có thể linh hoạt xác định hoạt động kinh doanh trong khi vẫn đảm bảo an toàn cho thông tin cá nhân là điều mà MEV hiện tại chưa thể thực hiện được (hiện tại, MEV chỉ có thể cung cấp các bảo đảm ngoài chuỗi truyền thống dựa trên sự tin tưởng, hợp đồng, thiện chí, v.v.).
Đối với các nhà phát triển, ngoài việc phát triển hợp đồng thông minh trên chuỗi, các bộ công cụ như ether.js trong phát triển giao diện người dùng cũng là một phần quan trọng trong quá trình phát triển dapp. Trong quá trình phát triển các ứng dụng SUAVE, vì chuỗi SUAVE dựa trên EVM nên các công cụ như ether.js và web3.js cũng có thể được sử dụng. Các công cụ này tương tác với các hợp đồng thông minh trên chuỗi SUAVE và các chuỗi tương thích EVM khác theo cùng một cách, nhưng chỉ có thể gọi các hàm trong môi trường không bảo mật. Hợp đồng thông minh chuỗi SUAVE được chia thành các hoạt động trên chuỗi (ám chỉ chuỗi SUAVE) và ngoài chuỗi (các hoạt động xuyên chuỗi cũng được bao gồm trong danh mục này). Các hoạt động ngoài chuỗi thực chất đề cập đến các tính toán môi trường bí mật. Đối với môi trường điện toán bảo mật, nhóm Flashbots cung cấp SDK bằng hai ngôn ngữ (Go và TypeScript), được mô tả trong tài liệu SUAVE. Khi gửi giao dịch tính toán riêng tư (được nhóm Flashbots gọi là Yêu cầu tính toán bí mật) đến một nút SUAVE, các đầu vào bí mật, là các tham số riêng tư, có thể được truyền vào. Trong toàn bộ quá trình truyền, văn bản thuần túy cuối cùng của tham số này sẽ chỉ xuất hiện trong môi trường TEE.
Cuối cùng, khi nói đến việc triển khai hợp đồng thông minh, mạng thử nghiệm của chuỗi SUAVE được gọi là Regil, nhưng hiện đã được nâng cấp lên 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, v.v. không khác gì cách triển khai hợp đồng thông minh Ethereum.
Sau khi hợp đồng thông minh được triển khai, hoạt động thực tế của nó sẽ khác với Ethereum. Đơn vị thực hiện chính của SUAVE được gọi là Kettle. Kettle là môi trường thời gian chạy TEE của SUAVE (bao gồm một nút MEVM và kho lưu trữ dữ liệu bí mật). Sau khi các nhà phát triển viết và triển khai hợp đồng thông minh, người dùng sẽ gửi các yêu cầu tính toán bí mật (sau đây gọi là CCR). Khi các hợp đồng thông minh cần sử dụng tính toán bảo mật, chúng thực sự được điều hành bởi Kettle.
Sơ đồ cấu trúc của Kettle như sau:

Chúng ta có thể thấy rằng các nhà phát triển sử dụng ngôn ngữ solidity để phát triển và triển khai các ứng dụng và sau khi yêu cầu cuối cùng đến Kettle, nó sẽ được xử lý bởi MEVM. Ngoài các chức năng của geth, MEVM còn bổ sung thêm một số chương trình biên dịch trước, có thể lưu trữ và truy xuất dữ liệu riêng tư, v.v. Ngoài ra, nó còn xử lý (bao gồm cả việc sửa đổi và truy xuất) trạng thái trên chuỗi SUAVE.
Nhiệm vụ chính của Kettle là tiếp nhận và xử lý các tính toán riêng tư, cũng như xử lý việc lưu trữ và truy xuất dữ liệu riêng tư. Lấy việc lưu trữ dữ liệu riêng tư làm ví dụ, toàn bộ quá trình diễn ra như sau: giao diện người dùng sử dụng SDK hoặc công cụ suave geth để khởi tạo yêu cầu CCR tới hợp đồng thông minh trên chuỗi SUAVE. SDK hoặc công cụ geth suave sẽ 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 sẽ chỉ xuất hiện trong môi trường Kettle và nút RPC của SUAVE sẽ chỉ nhìn thấy văn bản mã hóa. Tài liệu SUAVE không nêu rõ liệu kettle có mối quan hệ một-một với node hay không. Tương tự như vậy, các nguyên tắc chi tiết của Kettle, các nút và trao đổi khóa không được giới thiệu trong tài liệu. Tuy nhiên, dựa trên quá trình mã hóa và giải mã đã biết, các nhà phát triển có lý do để tin rằng việc bảo vệ dữ liệu riêng tư có thể được đảm bảo từ phía người dùng đến môi trường TEE bên trong Kettle.
Dữ liệu riêng tư của Kettle sẽ được lưu trữ trong kho dữ liệu bí mật. Khi phát triển hợp đồng thông minh, các nhà phát triển sẽ chỉ định trình truy cập và sửa đổi dữ liệu. Kettle sẽ xuất bản thông qua mạng lưới Giao thông của mình. Nếu quyền truy cập được chỉ định cho hợp đồng này, các yêu cầu CCR tiếp theo cũng phải được gửi đến Kettle này, vì lưu trữ dữ liệu của Kettle không được cập nhật toàn cầu. Sau khi nhà phát triển triển khai hợp đồng thông minh, người dùng sẽ truy cập vào Kettle tương ứng (có một tham số trong yêu cầu CCR và phải chỉ định địa chỉ Kettle) và có thể truy cập vào dữ liệu riêng tư của nó. 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, dữ liệu đó sẽ được truy xuất bằng ID và khóa được tạo khi lưu trữ dữ liệu tương ứng. Nói cách khác, dữ liệu riêng tư được truy cập và sử dụng thông qua giá trị khóa của nó.
Các yêu cầu HTTP, v.v. cũng được Kettle xử lý. Rõ ràng, đây là những tác vụ nằm ngoài chuỗi SUAVE, nghĩa là những tác vụ này được thực hiện bởi một nút duy nhất. Mặc dù SUAVE là một chuỗi nhưng tính chất blockchain của nó lại yếu. Khi Kettle chạy yêu cầu CCR, sẽ không có nhiều nút chạy và sau đó xác minh yêu cầu đó. Lý do rất đơn giản. Khi truy cập các tài nguyên bên ngoài chuỗi, không có gì đảm bảo tính bất biến. Do đó, các tác vụ này nằm ngoài chuỗi SUAVE và kết quả của chúng thực sự phụ thuộc vào từng nút. Do đó, các nhà phát triển nên chú ý đến địa chỉ Kettle trong quá trình triển khai (theo quan điểm này, Kettle có thể được coi là một hợp đồng thông minh đặc biệt) và các yêu cầu CCR của người dùng tiếp theo phải mang địa chỉ Kettle tương ứng.
Ngoài ra, còn có một vấn đề khác mà các nhà phát triển cần lưu ý. Trên mạng thử nghiệm Toliman hiện tại, không đảm bảo Kettle có thể 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, bạn phải chú ý bảo vệ dữ liệu riêng tư và tránh rò rỉ dữ liệu thực sự riêng tư.
Bằng cách giới thiệu môi trường TEE, chuỗi SUAVE mang đến những khả năng đủ mạnh mẽ cho quá trình phát triển ứng dụng và các kịch bản ứng dụng tiềm năng của nó rất nhiều. Hoạt động chuỗi chéo đơn giản và tiện lợi của nó cũng cung cấp đủ không gian cho trí tưởng tượng trong thiết kế Dapp.
Thiết kế Kettle của chuỗi SUAVE có khả năng xử lý các tài nguyên ngoài chuỗi, điều này làm nảy sinh các vấn đề về xác minh và đồng thuận. Một Kettle không trung thực có thể gây tổn hại đến mạng lưới. Làm sao để đảm bảo Kettle không làm điều ác, hoặc anh ta sẽ bị trừng phạt nếu làm điều ác, hoặc cái giá phải trả cho việc làm điều ác phải đủ cao, tất cả đều là những vấn đề cần được giải quyết. Các nhà phát triển vẫn đang chờ xem liệu mô hình PoA được chuỗi SUAVE áp dụng có thể chịu được những cân nhắc thực tế hay không.
Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:
Nhóm Telegram đăng ký: https://t.me/theblockbeats
Nhóm Telegram thảo luận: https://t.me/BlockBeats_App
Tài khoản Twitter chính thức: https://twitter.com/BlockBeatsAsia