Skip to content Skip to footer

Bukti Penipuan dan Mesin Virtual

Catatan: Artikel ini merupakan hasil terjemahan dari Fraud Proofs and Virtual Machines

Disclaimer : Publikasi artikel ini adalah hasil terjemahan komunitas untuk anggota komunitas Oasis Network. Pemeriksaan yang ketat diberlakukan untuk memberikan terjemahan yang akurat, tetapi masih terdapat kemungkinan atas kesalahan dan kelalaian. Oasis Network tidak bertanggungjawab atas keakuratan, reliabilitas atau aktualitas tehadap informasi yang diterjemahkan

Artikel ini adalah ringkasan dari makalah penelitian — SoK: Validating Bridges as a Scaling Solution for Blockchains — Ditulis oleh CEO dan Pendiri Oasis Labs Dawn Song, Patrick McCorry, Bennet Yee dan aslinya diterbitkan oleh Chris Buckland di blognya.

Rollup menyediakan penskalaan blockchain dengan memindahkan eksekusi ke domain yang berbeda. Data transaksi diletakkan di rantai utama, tetapi transaksi tidak dieksekusi di sana. Sebaliknya mereka dieksekusi di jaringan rollup, dan secara berkala sebuah komitmen ke status rollup saat ini diposting kembali ke rantai utama. Ini berarti bahwa node mainnet tidak lagi diperlukan untuk menjalankan transaksi, mengurangi bebannya.

Tetapi bagaimana rantai utama dapat diyakinkan bahwa kondisi rollup yang dilakukan sudah benar ? Rollup datang dalam dua kategori berbeda, yang memecahkan masalah ini dengan cara terpisah:

  • zk-rollups: Komitmen terbukti benar dengan pembuktian zero knowledge yang menyertainya.
  • Rollup optimis: Komitmen diterima dengan optimis, tetapi validator memeriksanya dan menyerahkan bukti penipuan jika mereka menemukan komitmen yang salah. Dalam kasus rollupoptimis, komitmen juga disebut penegasan, karena status sedang ditegaskan dan tidak terbukti.
Rollup optimis memerlukan validator untuk memeriksa transisi status dan mengirimkan bukti penipuan jika mereka menemukannya

Rollup optimis memerlukan validator untuk memeriksa status transisidan mengirimkan bukti penipuan jika mereka menemukannya

Dalam postingan ini kami hanya akan fokus pada rollup optimis, dan bukti penipuan yang membuat mereka tetap aman. Kami akan melihat bagaimana mereka saat ini digunakan oleh dua rollup optimis populer — Arbitrum dan Optimism — dan apa arah penelitian bukti penipuan saat ini.

Untuk detail lebih lanjut tentang cara kerja rollup secara umum, saya dapat merekomendasikan posting blog ini.

Bukti Penipuan (Fraud Proof)

Bukti penipuan saat terdapat dua jenis:

  1. Non-interaktif
  2. Interaktif

Bukti penipuan non-interaktif memungkinkan suatu pihak untuk membuktikan ketidakbenaran suatu pernyataan tanpa partisipasi pihak lain. Mereka melakukan ini dengan mengeksekusi semua status transisi antara dua komitmen yang ditegaskan untuk menunjukkan bahwa komitmen yang dihasilkan berbeda dari yang ditegaskan. Bukti penipuan non-interaktif memiliki manfaat karena mudah untuk dipikirkan dan dirancang. Namun, kecuali menggunakan zk-proof, transisi antara dua pernyataan harus cukup kecil untuk dieksekusi secara on-chain yang dikombinasikan dengan kemampuan Ethereum saat ini, menempatkan batasan transisi berat yang dapat diverifikasi secara efektif dengancara bukti penipuan ini.

Bukti penipuan interaktif membutuhkan dua atau lebih pihak bekerja sama untuk menunjukkan bahwa suatu pernyataan valid atau tidak valid. Dalam praktiknya, desain saat ini melibatkan pembela (pihak yang membuat pernyataan), dan penantang. Penantang meminta pembela membagi dua pernyataan mereka menjadi sub-pernyataan, di mana penantang kemudian dapat memilih sub-pernyataan yang tidak mereka setujui. Mereka melanjutkan dengan meminta bagi dua sub-pernyataan, dan seterusnya, sampai mereka mencapai pernyataan yang mewakili operasi yang cukup kecil untuk dieksekusi pada rantai. Bukti penipuan interaktif memperkenalkan kompleksitas kerja sama antar pihak. Insentif yang terlibat di sana membuat mereka secara inheren lebih rumit untuk dirancang dengan aman. Namun, satu-satunya batasan mengenai eksekusi adalah bahwa satu operasi harus dapat dieksekusi secara on-chain, yang berarti bahwa transaksi dan blok dalam rollup tidak dibatasi oleh batasan L1 mana pun.

Jadi, bukti penipuan apa yang digunakan oleh beberapa rollup optimis saat ini?

Rollup Optimisme (Optimism Rollup)

Bukti penipuan non-interaktif adalah tempat yang paling menarik untuk memulai, dan memang inilah arah yang diambil Rollup Optimisme untuk versi pertama mereka. Namun, untuk V2 mereka bergerak menuju penggunaan bukti interaktif. Untuk mengetahui alasannya, mari kita lihat lebih dekat batasan bukti penipuan non-interaktif.

Bukti penipuan non-interaktif perlu menjalankan transisi status penuh antara dua pernyataan. Rollup ini memilih tingkat transaksi sebagai perincian untuk transisi status, berharap memungkinkan pengguna untuk dapat melakukan transaksi Ethereum normal pada rollup mereka.

Namun, menjalankan kembali transaksi Ethereum yang terjadi pada rollup kembali di Mainnet Ethereum, sebenarnya tidak didukung oleh Ethereum. Ini karena transaksi memiliki akses ke status dan akun yang mendasari rantai, yang berbeda antara rollup dan mainnet.

Agar Rollup Optimisme dapat menjalankan kembali transaksi mereka di mainnet, mereka perlu mengganti opcode yang mengakses status dan akun dengan yang sintetis yang melakukan panggilan ke kontrak tertentu yang telah diisi sebelumnya dengan status terkait. Jumlah total 18 opcode telah diganti dengan cara ini, dengan 6 lainnya dihapus sama sekali. Bytecode dengan opcode ini diganti dengan panggilan fungsi, yang dikatakan berjalan di dalam Optimistic Virtual Machine (OVM). Optimisme membentuk kompiler Solidity untuk memungkinkan pengembang mengkompilasi kontrak mereka untuk OVM.

Lifetime of a contract in Optimism
  1. Mengganti status instruksi akses dengan panggilan kontrak sangat membengkakkan ukuran bytecode dari beberapa kontrak. Ethereum memiliki batas ~25kB pada batas ukuran kontrak yang berarti bahwa setelah diterjemahkan dari EVM ke OVM, beberapa kontrak akan memerlukan refactoring (pemfaktoran ulang) atau perlu dipecah agar memungkinkan untuk digunakan kembali selama proses bukti penipuan.
  2. Melakukan panggilan daripada menggunakan akses status asli membutuhkan lebih banyak gas, sehingga transaksi yang berjalan di OVM secara efektif memiliki batas gas yang lebih rendah daripada yang setara dengan yang dijalankan di Ethereum.

Kontrak yang diterjemahkan dari EVM ke OVM bytecode mengalami dua hambatan utama:

Kedua batasan ini memengaruhi pengembang dan pengguna kontrak, membutuhkan banyak upaya bagi pengembang untuk menulis ulang kontrak yang dirancang untuk berjalan di mainnet Ethereum. Mengingat bahwa pengembangan kontrak adalah proses yang mahal, memakan waktu, dan keamanan yang intensif, keterbatasan ini menimbulkan rintangan yang signifikan untuk penerapan Rollup Optimisme V1 dan merupakan alasan utama mereka berpindah menuju bukti penipuan interaktif.

Rollup Arbitrase (Arbitrum Rollup)

Rollup yang saat ini menggunakan bukti penipuan interaktif dalam produksi adalah Arbitrum. Protokol mereka memungkinkan pembela dan penantang untuk membagi dua pernyataan satu sama lain sampai mereka menemukan satu langkah yang tidak mereka setujui, lalu jalankan secara on-chain. Ukuran langkah tunggal yang dipilih oleh Arbitrum adalah ukuran instruksi tunggal. Mengeksekusi satu instruksi dari mesin virtual memerlukan penyediaan akses ke keadaan internal mesin virtual. Ini termasuk tumpukan dan memori, serta status dan global. Penerjemah untuk mesin virtual harus ditulis yang dapat berjalan di Ethereum, dan menjalankan instruksi tunggal.

Karena mereka perlu menulis penerjemah mesin virtual, Arbitrum memilih untuk menulis yang baru yang dioptimalkan untuk kasus penggunaan mereka dalam membuktikan eksekusi langkah tunggal, daripada menulis penerjemah untuk EVM. Contoh pengoptimalan yang mereka lakukan adalah mengubah struktur memori VM menjadi tidak dapat diubah, sehingga selalu dapat diakses dalam waktu yang konstan daripada logaritmik seperti yang diperlukan oleh struktur EVM saat ini. Mereka menyebut rollup ini mesin virtual yang dioptimalkan AVM (Arbitrum Virtual Machine).

Lifetime of a contract in Arbitrum

Kontrak dan transaksi AVM tidak memiliki batasan yang sama dengan OVM, karena transaksi tidak pernah dieksekusi ulang secara penuh, mereka bahkan dapat melebihi batasan pada mainnet Ethereum jika node Arbitrum memilih untuk mengizinkannya. Menulis VM baru memiliki kelebihan lain. Karena apa pun yang ditulis dalam kode AVM dapat dibuktikan di Ethereum, pengembang Arbitrum dapat memasukkan opcode baru selama mereka dapat didukung oleh opcode EVM. Hal ini memungkinkan mereka untuk dengan mudah menggabungkan kegiatan node lain, seperti membaca transaksi dari kontrak Kotak Masuk mereka, ke dalam rangkaian operasi yang dapat dibuktikan benar. Arbitrum dapat menggunakan jenis bukti penipuan yang sama untuk setiap kegiatan node mereka yang ingin mereka buktikan.

Salah satu kekurangan utama dari menulis VM baru adalah mungkin tidak selalu kompatibel dengan Ethereum, dan jika kompatibilitas memungkinkan, upaya ekstra mungkin diperlukan untuk mencapainya.

Divergensi (Perbedaan) pada Ethereum

Kedua pendekatan di atas berbeda dari EVM, yang menimbulkan tantangan teknis bagi Arbitrum, Optimism, dan penggunanya. Pengembang yang menulis kontrak untuk EVM akanberharap kontrak mereka berjalan di AVM dan OVM, mereka akan mengharapkan titik akhir node JSON-RPC untuk berjalan secara konsisten, yang memungkinkan untuk terjadi dalam beberapa kasus tetapi tidak dalam kasus lain.

Contoh di mana Arbitrum telah mencapai kesimbangan adalah dalam menerima transaksi EVM. Arbitrum telah menulis kompiler EVM ke AVM yang berjalan sendiri di AVM. Ini berarti bahwa transaksi yang ditandatangani dan dikirimkan dalam bytecode EVM dapat dikompilasi dengan cara yang dapat dibuktikan sebagai bagian dari eksekusinya.

Contoh di mana tidak ada rollup sejauh ini yang dapat mencapai kesimbangan lengkap adalah dalam semantik gas: Optimism telah menggantikan beberapa opcode yang mungkin memerlukan lebih banyak gas, dan Arbitrum telah menyesuaikan biaya gas untuk mencerminkan biaya pada AVM.

Konvergen (Persamaan) pada Ethereum

Pilihan bukti penipuan Optimism telah menyebabkan pembatasan signifikan bagi penggunanya, dan menghadirkan penghalang untuk penerapan. Mereka sekarang beralih ke bukti penipuan interaktif untuk menghilangkan batasan itu..

Namun, tidak seperti versi Arbitrum saat ini, mereka tidak ingin merancang mesin virtual baru, melainkan mencoba menemukan representasi EVM yang dapat dibuktikan secara on-chain dengan efisien. Melakukannya adalah upaya untuk mempertahankan kompatibilitas 100% dengan EVM dan Ethereum. Mereka kemudian dapat membuat perubahan minimal pada basis kode klien Ethereum yang ada dan menjalankannya sebagai klien rollup, mewarisi keamanan dan kerja keras yang telah dimasukkan ke dalamnya. Ini juga berarti bahwa mereka mencapai kompatibilitas dengan semua titik akhir JSON-RPC yang ada dan alat yang mengandalkannya tanpa upaya tambahan apa pun.

Tampaknya Arbitrum telah menyadari nilai dari pendekatan ini juga, dan dalam postingan blog terbaru mereka, mereka telah menguraikan pendekatan yang akan menggerakkan mereka ke arah itu.

Ada beberapa cara agar ini dapat dilakukan:

  1. Memperluas set instruksi untuk menyertakan validasi blok penuh, dan pisahkan setiap langkah besar menjadi sub-langkah yang lebih kecil. Proyek Macula adalah upaya untuk ini. Ini bertujuan untuk menghasilkan jejak eksekusi untuk eksekusi penuh dari sebuah blok Ethereum, kemudian menulis penerjemah untuk jejak eksekusi ini. Dengan demikian, semua operasi dalam satu blok dapat dibagi dua menjadi satu langkah dan kemudian dieksekusi secara on-chain. Ini berkaitan dengan opcode yang mungkin tidak efisien untuk pembuktian, seperti menyalin memori, dengan memecahnya menjadi sub-instruksi yang jumlahnya akan sama dengan eksekusi instruksi asli.
Lifetime of a contract in Macula
  1. Menggunakan arsitektur yang ada, yang lebih dapat diterima untuk membuktikan dan mengimplementasikan penerjemah EVM untuk itu. Proyek Cannon mengekstrak bagian Geth yang digunakan untuk memverifikasi blok. Kemudian mengkompilasi bagian-bagian Geth ke set instruksi yang lebih dapat dibuktikan — seperti MIPS atau RISC-V. Ketika MIPS-Geth ini digunakan untuk memverifikasi blok, jejak eksekusi direkam. Jejak eksekusi inilah yang dapat dibagi dua pihak untuk menemukan satu instruksi yang tidak mereka setujui, yang kemudian akan dieksekusi secara berantai menggunakan penerjemah MIPS on-chain . Ini juga tampaknya menjadi arah yang akan diambil oleh Arbitrum, namun ketimbang MIPS, mereka bermaksud menggunakan standar WASM.
Lifetime of a contract in Cannon
  1. Membuat bukti pengetahuan nol dari eksekusi satu langkah. Daripada menjalankan satu langkah pada rantai, kontrak malah dapat memverifikasi bahwa bukti pelaksanaan langkah tunggal itu valid. Membuktikan transisi keadaan besar, seperti transaksi penuh, dalam zk saat ini tidak mungkin dilakukan dalam periode waktu yang singkat, namun menghasilkan bukti untuk satu langkah harus dapat dilakukan. Pendekatan ini sedang diselidiki oleh para peneliti di Oasis Labs dan UC Berkeley, tetapi juga dijelaskan dalam makalah Arbitrum.
Lifetime of a contract with a single step zk

Masing-masing metode ini akan memberikan bukti penipuan yang tidak memiliki batasan penghambat penerapan bagi pengguna dan memungkinkan node rollup untuk menjalankan implementasi Ethereum yang ada yang mewarisi keamanan, pemeliharaan, dan kompatibilitasnya dengan mainnet Ethereum.

Tetapi mereka semua membutuhkan gaya bukti penipuan interaktif yang lebih rumit. Jadi apakah mungkin untuk mencapai properti di atas menggunakan bukti penipuan non-interaktif?

Sebenarnya, ya! Saat ini ada dua pendekatan yang diketahui untuk ini:

Bukti peengetahuan nol (Zero Knowledge proof) untuk transisi status penuh. Masih ada sejumlah tantangan yang perlu diatasi oleh zk proofs untuk transaksi penuh dapat dihasilkan dalam periode waktu yang singkat (block time). Namun jika bukti pengetahuan nol digunakan sebagai bukti penipuan, tidak perlu harus efisien untuk menghasilkan bukti. Saat ini bukti penipuan memberikan periode tantangan yang panjang (~1 minggu) untuk memberikan waktu bagi penantang untuk memvalidasi rantai saat ini, menghasilkan bukti penipuan dan mengirimkannya ke Ethereum. Bahkan jika menghasilkan bukti penipuan membutuhkan waktu yang sangat lama (misalnya 1–2 hari), maka periode tantangan ini dapat diperpanjang dengan sedikit dampak pada keseluruhan protokol. Seperti bukti penipuan interaktif, gaya bukti penipuan ini dapat melebihi batas L1. Pendekatan ini sedang diteliti oleh Sumo, Consensys.

Lifetime of a contract with a full state transition zk

Bukti penipuan bare metal (Bare metal fraud proof). Tujuan awal Optimism adalah untuk mengeksekusi kode EVM pada EVM, tetapi mereka tidak dapat melakukannya karena EVM mainnet tidak akan memiliki akses ke status rollup. Tetapi apakah mungkin untuk merancang sistem yang memungkinkan untuk melakukan ini?

Ini adalah pendekatan yang diambil oleh Oasis Labs. Blockchain mereka memisahkan eksekusi menjadi jalur cepat dan lambat. Sub-komite dari grup konsensus melakukan transaksi terhadap akar status. Akar status yang dihasilkan kemudian disimpan pada rantai dasar yang divalidasi oleh grup konsensus penuh. Jika ada anggota sub-komite yang tidak setuju dengan akar status yang dihasilkan, mereka dapat meminta kelompok konsensus penuh untuk mengeksekusi kembali transisi status yang disengketakan. Validator tunggal yang jujur diperlukan dalam sub-komite untuk mewarisi keamanan rantai dasar — keamanan yang sama dengan rollup optimis.

Pendekatan ini sangat cocok dengan konsep klien tanpa status Ethereum. Dalam paradigma ini, node konsensus hanya menyimpan akar status rantai. Transaksi kemudian disertai dengan status yang mereka akses, dan saksi untuk membuktikan status itu adalah bagian dari akar status. Klien tanpa status menerima transaksi yang disertai dengan status dan mengeksekusinya terhadap root status tersimpan mereka untuk menghasilkan root status baru. Jika alih-alih mengeksekusi transaksi yang diterima terhadap root status yang tersimpan,mereka mengeksekusinya terhadap yang disediakan, maka mereka akan dapat mengeksekusi kembali transaksi untuk rantai lain yang kompatibel dengan Ethereum. Fungsi ini dapat ditambahkan sebagai jenis transaksi baru yang berperilaku sebagai berikut:

  1. Data berisi blok transaksi rollup dengan status dan saksi yang menyertainya, dan sebuah akar status.
  2. Klien mengeksekusi blok transaksi terhadap root status untuk menghasilkan root status berikutnya.
  3. Tuple dari (root status sebelumnya, hash blok transaksi, root status berikutnya) kemudian akan disimpan dalam kontrak global yang memungkinkan kontrak pintar apa pun untuk mencari informasi ini dan melakukan pemotongan, dll. berdasarkan hasil.

Dengan jenis transaksi baru seperti ini pada klien tanpa status, Ethereum akan dapat sepenuhnya menjalankan kembali transisi status untuk rantai lain yang kompatibel dengan Ethereum. Ini bisa menawarkan bukti penipuan non-interaktif sederhana untuk rollup optimis yang kompatibel dengan Ethereum. Bukti penipuan ini berjalan langsung di EVM, bukan di dalam lingkungan virtual yang dihosting di EVM — bukti penipuan bare metal.

Lifetime of a contract with bare metal fraud proofs

Rangkuman

Rollup optimistik memerlukan bukti penipuan agar tetap aman. Kami telah melihat dua rollup populer dan melihat bagaimana pilihan bukti penipuan mereka telah menyebabkan batasan bagi pengguna dan pengembang kontrak mereka (Optimism), atau tidak mempertahankan kompatibilitas penuh dengan Ethereum (Arbitrum). Kedua rollup ini bergerak menuju kompatibilitas penuh dengan Ethereum, tanpa batasan baru, dan menggunakan bukti penipuan interaktif untuk melakukan ini. Namun bukti penipuan interaktif lebih rumit untuk dibangun dengan aman, dan ada jalan penelitian saat ini untuk menemukan bukti penipuan non-interaktif yang efisien yang tidak memaksakan batasan tambahan dan masih dapat tetap kompatibel dengan Ethereum.

Terima kasih kepada Patrick McCorry, Dawn Song, Bennet Yee, dan Nicholas Liochon atas masukan dan saran mereka.

Awalnya diterbitkan oleh Chris Buckland di https://medium.com pada 22 Oktober 2021.