Judul asli: "Memahami rantai SUAVE Flashbots dari sudut pandang pengembang: Selain MEV, kemungkinan lain apa yang ada untuk EVM + TEE?" 》
Penulis asli: ZHIXIONG PAN, DUGUBUYAN, ChainFeeds Research
Dengan memperkenalkan lingkungan TEE, rantai SUAVE menghadirkan kemampuan yang kuat untuk pengembangan aplikasi, dan potensi skenario penerapannya sangat banyak. Selain itu, pengoperasian lintas rantai yang sederhana dan nyaman juga memberikan ruang imajinasi yang cukup pada desain Dapp.
SUAVE adalah proyek terdesentralisasi yang dikembangkan oleh Flashbots. SUAVE membangun jaringan dengan lingkungan TEE untuk menyelesaikan masalah yang dihadapi dalam proses MEV, seperti penyimpanan kunci dan rasa saling percaya multi-pihak. Pada saat yang sama, penambahan TEE dalam proyek SUAVE memberi SUAVE lebih banyak kemungkinan selain menyelesaikan masalah MEV.
Pustaka kode terkait SUAVE
Proyek SUAVE didasarkan pada ekstensi Ethereum, sehingga secara inheren kompatibel dengan EVM. Proyek terkait saat ini di GitHub meliputi: SUAVE-geth, SUAVE-std, SUAVE-examples, dll.
Diantaranya, SUAVE-geth adalah kode lapisan eksekusi yang diperluas berdasarkan geth. Ini terutama menambahkan lingkungan komputasi terenkripsi berdasarkan geth, serta beberapa prakompilasi dalam lingkungan komputasi terenkripsi. Yang paling penting untuk disebutkan adalah penambahan prakompilasi untuk permintaan HTTPS standar, yang memungkinkan pengembang menggunakan lingkungan TEE untuk memberi pengguna kemampuan mengakses jaringan lain. Selain itu, berisi serangkaian prakompilasi berdasarkan fungsi penggunaan TEE, seperti memperoleh parameter enkripsi, menyimpan informasi enkripsi, dan memperoleh informasi enkripsi, dll., yang membentuk infrastruktur pengembangan berdasarkan lingkungan tepercaya.
SUAVE-std adalah proyek yang dibuat untuk kenyamanan pengembang dan dapat dipahami sebagai perpustakaan alat pengembangan. Misalnya, ia mengemas cara menggunakan permintaan HTTP, dan bahkan mengemas pustaka kode untuk menggunakan ChatGPT atas dasar ini. Hal ini menghilangkan kebutuhan bagi pengembang untuk menyusun pesan permintaan ChatGPT dan mengurai sendiri pesan balasan ChatGPT. Ganti saja kunci API Anda sendiri saat mengirim pesan. Lingkungan keamanan TEE menjamin keamanan kunci API, karena semuanya dilakukan di lingkungan TEE. Awalnya, perpustakaan standar ChatGPT menggunakan model GPT-3.5-turbo secara default, dan suhu default adalah 0,7. Kini antarmuka yang fleksibel telah ditambahkan, dan model juga dapat diteruskan sebagai parameter.
Proyek contoh SUAVE terutama untuk menunjukkan beberapa kasus bagaimana melakukan pengembangan aplikasi, atau mungkin lebih cocok sebagai tutorial untuk pemula. Bagi developer yang masih baru dalam pengembangan aplikasi SUAVE dapat belajar dan membandingkan melalui kasus-kasus di proyek ini.
Praktek pengembangan SUAVE
Karena SUAVE didasarkan pada ekstensi Ethereum (lingkungan yang dapat dieksekusi disebut MEVM, atau Mesin Virtual Ethereum yang Dimodifikasi), pengembangan kontrak pintar kompatibel dengan EVM, dan dokumen pengembangan resmi diperkenalkan di Solidity. Oleh karena itu, bagi pengembang, pengalaman pengembangan Solidity sangat berguna. Dalam pengembangan aplikasi SUAVE, pengembangan kontrak pintar dapat dipahami sebagai pengembangan Soliditas dengan fungsi komputasi enkripsi di lingkungan TEE.
Ada beberapa prakompilasi utama SUAVE MEVM. Yang pertama adalah secretInputs. Prakompilasi ini menerima parameter enkripsi dari permintaan aplikasi. Parameter ini biasanya berupa beberapa informasi pribadi yang perlu dienkripsi, seperti kunci pribadi, kunci API, dll. Jaminan keamanannya harus mengharuskan teks biasa hanya dapat muncul di dalamnya. lingkungan TEE., dan dalam pengembangan aplikasi, memperoleh informasi ini bergantung pada antarmuka ini untuk mendapatkan teks biasa. Proses transmisi sepenuhnya terenkripsi, aman dan andal. Prinsipnya akan kita bahas nanti. Yang kedua adalah secretStore, yang digunakan untuk menyimpan informasi pribadi dari parameter, seringkali informasi tersebut tidak diperlukan untuk berpartisipasi dalam perhitungan pada saat itu, sehingga disimpan untuk penggunaan selanjutnya. Yang ketiga adalah ConfidentialRetrieve. Antarmuka ini digunakan ketika meminta data teks biasa dari konteks TEE ketika informasi pribadi diperlukan untuk berpartisipasi dalam perhitungan.
Penyimpanan informasi pribadi SUAVE yang aman memungkinkan pengembang untuk mencapai skenario berikut: "Pengguna mengunggah kunci pribadi, dan kemudian pihak ketiga melakukan perhitungan bisnis. Ketika kondisi terpenuhi, pihak ketiga dapat langsung menggunakan kunci pribadi pengguna untuk menandatangani. Dengan cara ini Pihak ketiga dapat menggunakan kunci pribadi pengguna untuk menandatangani berdasarkan aturan tertentu, tetapi pihak ketiga tidak akan pernah bisa mendapatkan teks biasa dari kunci pribadi tersebut.”
SUAVE menggunakan permintaan HTTPS untuk operasi lintas rantai. Ada perpustakaan yang disebut gateway dalam kumpulan alatnya untuk membaca informasi lintas rantai secara langsung. Intinya adalah pengguna menyetel node RPC dari rantai tertentu ., lalu di Saat Anda perlu menelepon, cukup gunakan HTTP untuk meminta node yang sesuai. Ketika diperlukan untuk menulis informasi lintas rantai, terdapat paket transaksi di kumpulan alat, yang dapat membantu pengembang menyandikan pesan seperti EIP1559, dan akhirnya menyiarkan transaksi melalui antarmuka eth_sendRawTransaction.
Ada skenario penggunaan lain yang perlu disebutkan, yaitu mengunggah dan menyimpan bytecode yang dikompilasi oleh Solidity sebagai parameter pribadi, lalu menerapkan dan memanggilnya ketika kondisi terpenuhi, sehingga membentuk perpustakaan pribadi. Skenario penggunaan ini dapat diperluas ke: kunci pribadi + perpustakaan bytecode pribadi. Dalam hal ini, transaksi yang sepenuhnya pribadi dapat dicapai dengan melakukan panggilan titipan pihak ketiga.
Fitur SUAVE
Keadaan akhir dari SUAVE adalah sebuah rantai, yang kita sebut rantai SUAVE. Kita dapat menganggap rantai SUAVE sebagai rantai yang mengimplementasikan MEVM. Karena ini adalah blockchain yang kompatibel dengan EVM, kami juga dapat membangun aset seperti ERC20 dan ERC721 di SUAVE, dan operasi on-chainnya tidak berbeda dengan seri EVM. Namun keunikannya terletak pada penambahan operasi off-chain, seperti pengiriman transaksi ke node di rantai lain. Hasil operasi off-chain atau kondisi penggunaan dapat disimpan di rantai SUAVE, dan hasil yang disimpan dijamin berdasarkan konsensus. Hal ini memastikan konsistensi antara perhitungan off-chain dan status on-chain. Misalnya, pengembang dapat menulis kontrak pintar untuk mencatat beberapa kondisi pada rantai (yang juga dapat dimodifikasi). Ketika node jaringan rantai tertentu diakses dan hasil yang dikembalikan memenuhi persyaratan, transfer aset ERC20 tertentu akan dilakukan. dilakukan.
Di atas adalah semua fitur yang dibawa oleh komputasi tepercaya off-chain SUAVE. Kita tahu bahwa SUAVE dikembangkan oleh tim Flashbots, dan SUAVE dianggap sebagai "Masa Depan MEV" oleh tim Flashbots, jadi pemrosesan transaksi bundel pasti diperlukan Berdasarkan rantai SUAVE di lingkungan tepercaya, prinsip-prinsip terkait MEV adalah sangat sederhana: transaksi Bundel perakitan dikirim ke node relai Flashbots. Kunci pribadi dapat disimpan secara pribadi, bahkan dalam bentuk kode, sehingga membuka potensi besar untuk digunakan. Misalnya, selain imbalan gas di rantai target, pembangun juga bisa mendapatkan aset digital tertentu di rantai SUAVE. Untuk pasar MEV, dimungkinkan untuk mendefinisikan layanan secara fleksibel sambil memastikan keamanan informasi pribadi, sesuatu yang saat ini tidak dapat dilakukan oleh MEV (saat ini hanya jaminan off-chain tradisional berdasarkan kepercayaan, kontrak, niat baik, dll.) yang dapat dicapai.
Alat dan infrastruktur pengembangan SUAVE
Bagi pengembang, selain pengembangan kontrak pintar on-chain, rangkaian alat seperti ether.js dalam pengembangan front-end juga merupakan bagian penting dari pengembangan dapp. Dalam pengembangan aplikasi SUAVE, karena rantai SUAVE dimodifikasi berdasarkan EVM, alat seperti ether.js dan web3.js juga dapat digunakan. Alat ini berinteraksi dengan kontrak pintar pada rantai SUAVE tidak berbeda dengan rantai lain yang kompatibel dengan EVM . Namun hanya fungsi di lingkungan non-rahasia yang dapat dipanggil. Kontrak pintar dari rantai SUAVE dibagi menjadi operasi on-chain (mengacu pada rantai SUAVE) dan off-chain (operasi lintas-rantai juga termasuk dalam kategori ini). Operasi off-chain sebenarnya mengacu pada perhitungan lingkungan rahasia. Untuk komputasi lingkungan rahasia, tim Flashbots menyediakan SDK dalam dua bahasa (Go dan TypeScript). Saat mengirimkan transaksi komputasi pribadi (disebut Permintaan Komputasi Rahasia oleh tim Flashbots) ke node SUAVE, Anda dapat memasukkan input rahasia, yang merupakan parameter pribadi. Selama seluruh proses transmisi, teks biasa akhir dari parameter ini hanya akan muncul di lingkungan TEE.
Terakhir, terkait penerapan kontrak pintar, nama testnet rantai SUAVE adalah Regil, namun kini telah ditingkatkan dan disebut Toliman. Metode penerapan dijelaskan secara rinci dalam dokumen SUAVE. Metode penerapannya, metode interaksi pasca penerapan, dll. tidak berbeda dengan penerapan kontrak pintar Ethereum.
Ketel
Setelah kontrak pintar diterapkan, operasi sebenarnya berbeda dari Ethereum. Unit eksekusi utama SUAVE disebut Kettle. Kettle adalah lingkungan operasi TEE SUAVE (mencakup node MEVM dan penyimpanan data rahasia). Setelah pengembang menulis dan menerapkan kontrak pintar, pengguna mengirimkan permintaan komputasi rahasia (selanjutnya disebut CCR). Ketika kontrak pintar perlu menggunakan komputasi rahasia, kontrak tersebut sebenarnya dijalankan oleh Kettle.
Diagram struktur Ketel adalah sebagai berikut:
Kita dapat melihat bahwa pengembang menggunakan bahasa soliditas untuk mengembangkan dan menyebarkan aplikasi. Setelah permintaan akhir dikirim ke Kettle, semuanya diproses oleh MEVM. Selain fungsi geth, MEVM juga menambahkan beberapa prakompilasi ke dalamnya, yang dapat menyimpan dan mengambil data pribadi. Selain itu, ia menangani (termasuk memodifikasi, mengambil) status pada rantai SUAVE.
Tugas utama Kettle adalah menerima dan memproses penghitungan pribadi, serta menangani penyimpanan dan pengambilan data pribadi. Mengambil penyimpanan data pribadi tertentu sebagai contoh, keseluruhan prosesnya adalah sebagai berikut: front-end pengguna menggunakan SDK atau alat suave geth untuk memulai permintaan CCR ke kontrak pintar di rantai SUAVE akan menggunakan kunci data (kunci simetris) untuk Data dienkripsi. Kunci data ini hanya akan muncul di lingkungan Kettle, dan node RPC SUAVE hanya akan melihat teks tersandi. Apakah ada hubungan satu-ke-satu antara ketel dan node tidak terlihat dalam dokumentasi SUAVE. Demikian pula, prinsip rinci Kettle itu sendiri, node, dan pertukaran kunci tidak diperkenalkan dalam dokumen. Namun, berdasarkan proses enkripsi dan dekripsi yang diketahui, pengembang memiliki alasan untuk percaya bahwa perlindungan data dapat dijamin antara front-end pengguna dan lingkungan TEE internal Kettle.
Data pribadi Kettle akan disimpan di penyimpanan data rahasia. Saat pengembang mengembangkan kontrak pintar, mereka akan menentukan pengunjung dan pengubah data. Kettle akan mempublikasikannya melalui jaringan Transportnya. Jika kontrak ini ditentukan untuk akses, permintaan CCR berikutnya akan juga Harus dikirim ke Kettle ini karena penyimpanan data Kettle tidak diperbarui secara global. Setelah pengembang menerapkan kontrak pintar dan pengguna mengakses Kettle yang sesuai (ada parameter dalam permintaan CCR, alamat Kettle harus ditentukan), data pribadinya dapat diakses. Ketika pengguna mengirimkan CCR dan meminta data pribadi dalam kontrak pintar, ID dan kunci yang dibuat saat menyimpan data terkait digunakan untuk pengambilan. Dengan kata lain, akses data pribadi diakses dan digunakan melalui nilai kuncinya.
Permintaan HTTP, dll. juga ditangani oleh Kettle. Jelas sekali, ini adalah pekerjaan di luar rantai SUAVE, yang berarti bahwa pekerjaan ini dijalankan oleh satu node. Meskipun SUAVE adalah sebuah rantai, properti blockchainnya lemah. Saat Kettle menjalankan permintaan CCR, tidak akan ada Jalankan di banyak node dan lalu verifikasi. Alasannya sangat sederhana. Mengakses sumber daya di luar rantai jelas tidak menjamin idempoten. Jadi ini adalah tugas di luar rantai SUAVE, dan hasilnya sebenarnya bergantung pada node. Oleh karena itu, pengembang harus memperhatikan alamat Kettle saat menerapkan (dari sudut pandang ini, Kettle dapat dianggap sebagai kontrak pintar khusus), dan permintaan CCR pengguna selanjutnya harus membawa alamat Kettle yang sesuai.
Selain itu, ada masalah lain yang patut menjadi perhatian pengembang. Pada jaringan pengujian Toliman saat ini, ketel tidak dijamin dapat dijalankan di lingkungan TEE. Oleh karena itu, ketika mengembangkan kontrak pintar di jaringan pengujian, Anda harus memperhatikan perlindungan data pribadi dan tidak membocorkan data yang benar-benar pribadi.
Meringkaskan
Dengan memperkenalkan lingkungan TEE, rantai SUAVE menghadirkan kemampuan yang kuat untuk pengembangan aplikasi, dan potensi skenario penerapannya sangat banyak. Pengoperasian lintas rantai yang sederhana dan nyaman juga memberikan ruang imajinasi yang cukup pada desain Dapp.
Desain Kettle pada rantai SUAVE mampu menangani sumber daya di luar rantai, sehingga menimbulkan masalah verifikasi dan konsensus. Ketel yang Tidak Jujur merusak Internet. Bagaimana memastikan bahwa Kettle tidak melakukan kejahatan, atau bahwa kejahatan dapat dihukum, atau bahwa akibat dari melakukan kejahatan cukup tinggi, semuanya merupakan masalah yang perlu diselesaikan. Pengembang masih menunggu untuk melihat apakah model PoA yang digunakan dalam konsensus rantai SUAVE dapat memenuhi pertimbangan praktis.
Tautan asli