Seperti yang kita ketahui, bukti penipuan adalah solusi teknis yang banyak digunakan dalam ruang blockchain. Mereka berasal dari komunitas Ethereum dan diadopsi oleh solusi Layer 2 Ethereum terkenal seperti Arbitrum dan Optimism. Setelah munculnya ekosistem Bitcoin pada tahun 2023, Robin Linus mengusulkan solusi bernama BitVM, yang, berdasarkan teknologi Bitcoin yang ada seperti Taproot, berfokus pada bukti penipuan dan menyediakan model keamanan baru untuk Bitcoin Layer 2 atau jembatan.
BitVM telah meluncurkan beberapa versi teoretis, mulai dari BitVM0 yang pertama, yang menggunakan rangkaian gerbang logika sebagai primitif, hingga versi-versi selanjutnya seperti BitVM2, yang berfokus pada Bukti Penipuan ZK dan rangkaian verifikasi Groth16. Jalur implementasi teknis yang terkait dengan BitVM telah mengalami evolusi dan pematangan, menarik perhatian banyak profesional industri. Proyek-proyek seperti Bitlayer, Citrea, BOB, Fiamma, dan Goat Network semua menggunakan BitVM sebagai salah satu teknologi inti mereka, mengimplementasikan versi-versi yang berbeda berdasarkan fondasi ini.
Dengan kelangkaan dan kompleksitas penjelasan publik tentang BitVM, kami telah meluncurkan serangkaian artikel yang bertujuan untuk mempopulerkan pengetahuan BitVM. Mengingat hubungan yang dalam antara BitVM dan bukti penipuan, artikel ini akan fokus pada bukti penipuan dan Bukti Penipuan ZK, menggunakan bahasa yang sederhana dan mudah dimengerti untuk menjelaskan konsep-konsep tersebut.
Mekanisme Bukti Penipuan Interaktif Prinsip Optimisme
Optimism adalah proyek Optimistic Rollup yang terkenal, dan infrastrukturnya terdiri dari sebuah sequencer (dengan modul utama termasuk op-node, op-geth, op-batcher, dan op-proposer) dan kontrak pintar di rantai Ethereum.
Setelah sequencer memproses sekelompok data transaksi, data DA ini akan dikirimkan ke Ethereum. Selama Anda mampu menjalankan klien node Optimism, Anda dapat mengunduh data yang diunggah oleh sequencer ke mesin lokal Anda. Anda kemudian dapat menjalankan transaksi ini secara lokal dan menghitung hash set status saat ini dari Optimism (termasuk namun tidak terbatas pada saldo saat ini dari setiap akun, dll.).
Jika pengurut mengunggah hash set status yang salah ke Ethereum, hash set status yang Anda hitung secara lokal akan berbeda. Dalam kasus ini, Anda dapat menimbulkan tantangan melalui sistem bukti penipuan. Berdasarkan penilaian, sistem akan memberlakukan pembatasan atau hukuman pada pengurut atau tidak mengambil tindakan apa pun.
Ketika menyebutkan istilah “state set,” blockchain berbasis EVM umumnya menggunakan struktur data mirip Merkle Tree untuk mencatat state set, yang disebut sebagai World State Trie. Setelah transaksi dieksekusi, state dari beberapa akun akan berubah, dan World State Trie juga akan berubah, mengakibatkan perubahan pada hash akhirnya. Ethereum menyebut hash akhir dari World State Trie sebagai StateRoot, yang mewakili perubahan pada state set.
Diagram berikut mengilustrasikan struktur stateRoot Ethereum. Seperti yang dapat kita lihat, saldo berbagai akun, hash kode yang terkait dengan akun kontrak pintar, dan data lainnya semua digabungkan ke dalam World State Trie, dari mana stateRoot dihitung.
Sistem akun Optimism dan struktur data umumnya konsisten dengan Ethereum, juga menggunakan bidang StateRoot untuk mewakili perubahan dalam kumpulan status. OP sequencer secara berkala mengunggah bidang kunci yang disebut OutputRoot ke Ethereum, yang dihitung berdasarkan StateRoot dan dua bidang lainnya.
Kembali ke pertanyaan awal, ketika Anda menjalankan klien node OP dan menghitung StateRoot dan OutputRoot saat ini secara lokal, jika Anda menemukan bahwa hasil yang Anda hitung tidak sesuai dengan yang diunggah oleh pengurutan OP, Anda dapat memulai bukti penipuan. Jadi, apa mekanisme khusus di balik ini? Di bawah ini, kami akan secara berurutan memperkenalkan verifikasi status mesin virtual MIPS dan bukti penipuan interaktif.
Seperti yang disebutkan sebelumnya, misalkan Anda menemukan bahwa OutputRoot yang diserahkan oleh pengurutan OP tidak benar, dan Anda ingin memulai sebuah 'tantangan.' Proses tantangan memerlukan menyelesaikan serangkaian interaksi on-chain, setelah itu kontrak pintar terkait akan menentukan apakah pengurut OP mengunggah OutputRoot yang salah.
Untuk memverifikasi kebenaran OutputRoot on-chain menggunakan kontrak pintar, metode paling sederhana adalah dengan menerapkan klien node OP pada rantai Ethereum, menggunakan parameter input yang sama seperti OP sequencer, menjalankan program yang sama, dan memeriksa apakah hasil perhitungan sesuai. Pendekatan ini disebut Program Bukti Kesalahan. Meskipun relatif mudah untuk diimplementasikan di luar rantai, sangat sulit untuk dijalankan pada rantai Ethereum karena dua isu:
Kontrak pintar di Ethereum tidak dapat secara otomatis memperoleh parameter input yang diperlukan untuk bukti penipuan.
Batas gas blok Ethereum terbatas, dan tidak mendukung tugas komputasi yang sangat kompleks. Oleh karena itu, kita tidak dapat sepenuhnya menerapkan klien node OP on-chain.
Isu pertama setara dengan meminta kontrak pintar on-chain untuk membaca data off-chain, yang dapat diselesaikan dengan menggunakan solusi mirip orakel. OP telah mendeploy kontrak PreimageOracle di rantai Ethereum, dan kontrak terkait bukti penipuan dapat membaca data yang diperlukan dari kontrak ini. Secara teoritis, siapapun dapat mengunggah data ke kontrak ini, namun sistem bukti penipuan OP memiliki cara untuk memverifikasi apakah data tersebut diperlukan, meskipun proses ini tidak akan dijelaskan di sini, karena tidak krusial untuk topik inti artikel ini.
Untuk masalah kedua, tim pengembangan OP menulis mesin virtual MIPS di Solidity untuk menerapkan beberapa fungsi dari klien node OP yang cukup untuk sistem bukti penipuan. MIPS adalah arsitektur set instruksi CPU yang umum, dan kode sequencer OP ditulis dalam bahasa tingkat tinggi seperti Golang/Rust. Kami dapat mengompilasi program Golang/Rust menjadi program MIPS dan memprosesnya melalui mesin virtual MIPS di rantai Ethereum.
Tim pengembangan OP menulis program yang disederhanakan dalam Golang untuk bukti penipuan, yang pada dasarnya meniru modul-modul di node OP yang menjalankan transaksi, menghasilkan blok, dan menghasilkan OutputRoot. Namun, program yang disederhanakan ini masih tidak bisa "menjalankan sepenuhnya." Dengan kata lain, setiap blok OP mengandung banyak transaksi. Setelah memproses kumpulan transaksi ini, sebuah OutputRoot dihasilkan. Meskipun Anda tahu bahwa OutputRoot tinggi blok mana yang salah, tidak realistis untuk menjalankan semua transaksi dalam blok tersebut on-chain untuk membuktikan bahwa OutputRoot yang sesuai itu salah. Selain itu, selama eksekusi setiap transaksi, serangkaian opcode MIPS diproses secara berurutan. Tidak praktis untuk menjalankan seluruh serangkaian opcode ini pada mesin virtual MIPS yang diimplementasikan dalam kontrak on-chain, karena overhead komputasi dan konsumsi gas akan terlalu besar.
Prinsip Kerja Set Instruksi MIPS
Untuk mengatasi hal ini, tim Optimism merancang sistem bukti penipuan interaktif yang bertujuan untuk menganalisis secara mendalam alur pemrosesan transaksi OP. Dengan mengamati seluruh proses perhitungan OutputRoot, sistem mengidentifikasi di opcode MIPS mana mesin virtual MIPS OP sequencer melakukan kesalahan. Jika kesalahan dikonfirmasi, dapat disimpulkan bahwa OutputRoot yang diberikan oleh sequencer tidak valid.
Dengan demikian, masalahnya menjadi jelas: proses pengemasan transaksi OP sequencer ke dalam blok dapat dibagi menjadi pemrosesan berurutan dari sejumlah besar opcode MIPS. Setelah setiap opcode MIPS dieksekusi, hash status mesin virtual berubah. Catatan-catatan ini dapat digabungkan ke dalam pohon Merkle.
Dalam proses interaktif bukti penipuan, tujuannya adalah untuk menentukan setelah opcode MIPS mana keadaan hash mesin virtual OP sequencer menjadi tidak benar, dan kemudian mereproduksi keadaan mesin virtual MIPS di-chain, menjalankan opcode dan mengamati apakah hash keadaan yang dihasilkan cocok dengan yang dikirimkan oleh sequencer. Karena hanya satu opcode MIPS yang dieksekusi di-chain, kompleksitasnya rendah dan proses perhitungan dapat diselesaikan di rantai Ethereum. Namun, untuk mencapai ini, kita perlu mengunggah informasi keadaan mesin virtual MIPS, seperti data memori parsial, ke rantai.
Dalam hal implementasi kode, kontrak pintar pada rantai Ethereum yang terkait dengan bukti penipuan akan menyelesaikan proses eksekusi opcode MIPS akhir melalui fungsi yang disebut Langkah:
Parameter dalam fungsi di atas, _stateData dan _proof, mewakili item data yang bergantung untuk eksekusi satu opcode MIPS tunggal, seperti negara registrasi mesin virtual MIPS, hash negara memori, dll. Diagram ditunjukkan di bawah ini:
Kita dapat memasukkan parameter lingkungan mesin virtual MIPS ini melalui _stateData dan _proof, menjalankan satu instruksi MIPS tunggal on-chain, dan mendapatkan hasil yang berwibawa. Jika hasil yang berwibawa yang diperoleh on-chain berbeda dari hasil yang diserahkan oleh sequencer, itu menunjukkan bahwa sequencer tersebut bersifat jahat.
Secara umum, kami mengacu pada hash dari _stateData sebagai statehash, yang secara kasar dapat dipahami sebagai hash dari seluruh status mesin virtual MIPS. Di antara beberapa bidang dalam _stateData, memRoot adalah desain paling jenius. Seperti yang kita ketahui, selama eksekusi program, sejumlah besar memori digunakan, dan CPU berinteraksi dengan data di alamat memori tertentu dengan cara membaca dan menulis. Oleh karena itu, ketika kami menjalankan opcode MIPS on-chain melalui fungsi VM.Step, kami perlu menyediakan data dari alamat memori tertentu dalam mesin virtual MIPS.
OP menggunakan arsitektur 32-bit untuk mesin virtual MIPS, dan memori-nya berisi 2^27 alamat, yang dapat diorganisir ke dalam Pohon Merkle biner 28-level. Simpul daun di level terendah berjumlah 2^27, dengan setiap daun mencatat data dari alamat memori tertentu dari mesin virtual. Hash yang dihitung dari semua data di daun-daun adalah memRoot. Diagram di bawah ini menunjukkan struktur Pohon Merkle yang mencatat data memori mesin virtual MIPS:
Kita perlu menyediakan konten dari alamat memori tertentu, dan konten ini diunggah ke rantai Ethereum melalui bidang _proof dalam fungsi langkah. Selain itu, bukti Merkle berdasarkan pohon Merkle memori harus diunggah untuk membuktikan bahwa data yang Anda (atau sequencer) berikan memang ada dalam pohon Merkle memori, bukan hasil pemalsuan.
Pada bagian sebelumnya, kami menangani masalah kedua dengan menyelesaikan eksekusi on-chain dari opcode MIPS dan verifikasi status mesin virtual. Namun bagaimana penantang dan pengurut dapat menentukan instruksi opcode MIPS yang dipertentangkan secara spesifik?
Banyak orang mungkin telah membaca penjelasan sederhana tentang bukti penipuan interaktif secara online dan mendengar tentang pendekatan pencarian biner di baliknya. Tim OP telah mengembangkan protokol yang disebut Permainan Sengketa Kegagalan (FDG). Protokol FDG mencakup dua peran: penantang dan pembela.
Jika kami menemukan bahwa OutputRoot yang dikirimkan oleh sequencer on-chain tidak benar, kami dapat bertindak sebagai challenger dalam FDG, dengan sequencer bertindak sebagai defender. Untuk membantu menemukan opcode MIPS yang perlu diproses on-chain, protokol FDG meminta peserta untuk secara lokal membangun pohon Merkle yang disebut GameTree, yang struktur spesifiknya adalah sebagai berikut:
Kita dapat melihat bahwa GameTree cukup kompleks, dengan struktur bersarang hierarkis, terdiri dari pohon tingkat pertama dan subpohon tingkat kedua. Dengan kata lain, simpul daun dari pohon tingkat pertama berisi subpohon.
Seperti yang disebutkan sebelumnya, setiap blok yang dihasilkan oleh sequencer mengandung OutputRoot, dan simpul daun pohon tingkat pertama di GameTree mewakili OutputRoot dari blok yang berbeda. Penantang dan pembela perlu berinteraksi dalam pohon Merkle yang terbentuk oleh OutputRoot untuk menentukan OutputRoot blok mana yang dipertikaikan.
Setelah blok yang dipertentangkan diidentifikasi, kami masuk ke level kedua dari GameTree. Pohon level kedua juga merupakan pohon Merkle, dengan simpul daunnya adalah hash status mesin virtual MIPS, seperti yang diperkenalkan sebelumnya. Dalam skenario bukti penipuan, penantang dan pembela akan memiliki inkonsistensi dalam simpul daun dari GameTree yang mereka bangun secara lokal. Hash status setelah memproses opcode tertentu akan berbeda.
Setelah beberapa interaksi on-chain, pihak-pihak pada akhirnya menentukan opcode yang diperselisihkan secara tepat, menentukan opcode MIPS spesifik yang perlu dijalankan on-chain.
Pada titik ini, kami telah menyelesaikan seluruh proses bukti penipuan interaktif. Untuk merangkum, dua mekanisme inti dari bukti penipuan interaktif adalah:
Permainan Perselisihan Kegagalan (FDG) pertama-tama menemukan opcode MIPS yang perlu dieksekusi on-chain, bersama dengan informasi status VM pada saat itu;
Mesin virtual MIPS yang diimplementasikan pada rantai Ethereum menjalankan opcode, menghasilkan hasil akhir.
Bukti Penipuan ZK Seperti yang dapat kita lihat, pendekatan bukti penipuan tradisional melibatkan interaksi yang sangat kompleks, memerlukan beberapa putaran interaksi dalam proses FDG dan memainkan kembali instruksi individu on-chain. Namun, solusi ini memiliki beberapa tantangan:
Beberapa putaran interaksi perlu dipicu pada rantai Ethereum, mengakibatkan puluhan interaksi yang menimbulkan biaya gas yang signifikan. 2. Proses bukti penipuan interaktif memakan waktu lama, dan setelah interaksi dimulai, Rollup tidak dapat memproses transaksi secara normal. 3. Mengimplementasikan VM khusus di rantai untuk memutar instruksi sangat kompleks, dengan tingkat kesulitan pengembangan yang tinggi.
Untuk mengatasi masalah-masalah ini, Optimism memperkenalkan konsep Bukti Penipuan ZK. Ide intinya adalah ketika seorang penantang menimbulkan tantangan, mereka menentukan transaksi yang diyakini perlu diulang di rantai. Pemutus Gulungan menyediakan bukti ZK untuk transaksi yang ditantang, yang kemudian diverifikasi oleh kontrak pintar di rantai Ethereum. Jika verifikasi berhasil, disimpulkan bahwa tidak ada kesalahan dalam memproses transaksi, dan node Gulungan tidak bersalah.
Dalam diagram, Tantangmerujuk kepada pihak yang menimbulkan tantangan, danPertahananadalah OP sequencer. Dalam keadaan normal, OP sequencer menghasilkan blok berdasarkan transaksi yang diterima dan mengirimkan komitmen keadaan dari blok-blok yang berbeda ke Ethereum. Komitmen keadaan ini dapat dilihat secara sederhana sebagai nilai hash dari blok-blok. Pihak Tantang dapat menantang berdasarkan hash blok. Setelah menerima tantangan, Pihak Bertahan menghasilkan bukti ZK untuk menunjukkan bahwa hasil generasi blok itu benar. Pada diagram, Bonsaisebenarnya adalah alat generasi bukti ZK. Dibandingkan dengan bukti penipuan interaktif, keuntungan terbesar dari Bukti Penipuan ZK adalah bahwa ia menggantikan beberapa putaran interaksi dengan satu putaran generasi bukti ZK dan verifikasi on-chain. Hal ini secara signifikan menghemat waktu dan mengurangi biaya gas. Selain itu, berbeda dengan ZK Rollups, OP Rollups berbasis Bukti Penipuan ZK tidak memerlukan pembuatan bukti setiap kali blok diproduksi. Sebaliknya, mereka hanya menghasilkan bukti ZK secara sementara saat ditantang, yang juga mengurangi biaya komputasi untuk node Rollup.
Konsep Bukti Penipuan ZK juga diadopsi oleh BitVM2. Proyek-proyek yang menggunakan BitVM2, seperti Bitlayer, Jaringan Goat, ZKM, dan Fiama, mengimplementasikan program verifikasi Bukti ZK melalui skrip Bitcoin, yang secara signifikan menyederhanakan ukuran program yang perlu dibawa ke on-chain. Karena keterbatasan ruang, artikel ini tidak akan membahas lebih detail tentang topik ini. Tetap pantau untuk artikel kami yang akan datang tentang BitVM2 untuk memperoleh pemahaman yang lebih dalam tentang jalur implementasinya!
Artikel ini diambil dari [GodRealmX], hak cipta dimiliki oleh penulis asli [Shew & Noah], jika Anda memiliki keberatan terhadap penggandaan, silakan hubungi Belajar Gate tim, dan tim akan menanganinya sesegera mungkin sesuai dengan prosedur yang relevan.
Penyangkalan: Pandangan dan opini yang terdapat dalam artikel ini hanya mewakili pandangan pribadi penulis dan tidak merupakan saran investasi apa pun.
Versi bahasa lain dari artikel diterjemahkan oleh tim Gate Learn dan tidak disebutkan di Gate.io, artikel yang diterjemahkan tidak boleh direproduksi, didistribusikan, atau dijiplak.
Seperti yang kita ketahui, bukti penipuan adalah solusi teknis yang banyak digunakan dalam ruang blockchain. Mereka berasal dari komunitas Ethereum dan diadopsi oleh solusi Layer 2 Ethereum terkenal seperti Arbitrum dan Optimism. Setelah munculnya ekosistem Bitcoin pada tahun 2023, Robin Linus mengusulkan solusi bernama BitVM, yang, berdasarkan teknologi Bitcoin yang ada seperti Taproot, berfokus pada bukti penipuan dan menyediakan model keamanan baru untuk Bitcoin Layer 2 atau jembatan.
BitVM telah meluncurkan beberapa versi teoretis, mulai dari BitVM0 yang pertama, yang menggunakan rangkaian gerbang logika sebagai primitif, hingga versi-versi selanjutnya seperti BitVM2, yang berfokus pada Bukti Penipuan ZK dan rangkaian verifikasi Groth16. Jalur implementasi teknis yang terkait dengan BitVM telah mengalami evolusi dan pematangan, menarik perhatian banyak profesional industri. Proyek-proyek seperti Bitlayer, Citrea, BOB, Fiamma, dan Goat Network semua menggunakan BitVM sebagai salah satu teknologi inti mereka, mengimplementasikan versi-versi yang berbeda berdasarkan fondasi ini.
Dengan kelangkaan dan kompleksitas penjelasan publik tentang BitVM, kami telah meluncurkan serangkaian artikel yang bertujuan untuk mempopulerkan pengetahuan BitVM. Mengingat hubungan yang dalam antara BitVM dan bukti penipuan, artikel ini akan fokus pada bukti penipuan dan Bukti Penipuan ZK, menggunakan bahasa yang sederhana dan mudah dimengerti untuk menjelaskan konsep-konsep tersebut.
Mekanisme Bukti Penipuan Interaktif Prinsip Optimisme
Optimism adalah proyek Optimistic Rollup yang terkenal, dan infrastrukturnya terdiri dari sebuah sequencer (dengan modul utama termasuk op-node, op-geth, op-batcher, dan op-proposer) dan kontrak pintar di rantai Ethereum.
Setelah sequencer memproses sekelompok data transaksi, data DA ini akan dikirimkan ke Ethereum. Selama Anda mampu menjalankan klien node Optimism, Anda dapat mengunduh data yang diunggah oleh sequencer ke mesin lokal Anda. Anda kemudian dapat menjalankan transaksi ini secara lokal dan menghitung hash set status saat ini dari Optimism (termasuk namun tidak terbatas pada saldo saat ini dari setiap akun, dll.).
Jika pengurut mengunggah hash set status yang salah ke Ethereum, hash set status yang Anda hitung secara lokal akan berbeda. Dalam kasus ini, Anda dapat menimbulkan tantangan melalui sistem bukti penipuan. Berdasarkan penilaian, sistem akan memberlakukan pembatasan atau hukuman pada pengurut atau tidak mengambil tindakan apa pun.
Ketika menyebutkan istilah “state set,” blockchain berbasis EVM umumnya menggunakan struktur data mirip Merkle Tree untuk mencatat state set, yang disebut sebagai World State Trie. Setelah transaksi dieksekusi, state dari beberapa akun akan berubah, dan World State Trie juga akan berubah, mengakibatkan perubahan pada hash akhirnya. Ethereum menyebut hash akhir dari World State Trie sebagai StateRoot, yang mewakili perubahan pada state set.
Diagram berikut mengilustrasikan struktur stateRoot Ethereum. Seperti yang dapat kita lihat, saldo berbagai akun, hash kode yang terkait dengan akun kontrak pintar, dan data lainnya semua digabungkan ke dalam World State Trie, dari mana stateRoot dihitung.
Sistem akun Optimism dan struktur data umumnya konsisten dengan Ethereum, juga menggunakan bidang StateRoot untuk mewakili perubahan dalam kumpulan status. OP sequencer secara berkala mengunggah bidang kunci yang disebut OutputRoot ke Ethereum, yang dihitung berdasarkan StateRoot dan dua bidang lainnya.
Kembali ke pertanyaan awal, ketika Anda menjalankan klien node OP dan menghitung StateRoot dan OutputRoot saat ini secara lokal, jika Anda menemukan bahwa hasil yang Anda hitung tidak sesuai dengan yang diunggah oleh pengurutan OP, Anda dapat memulai bukti penipuan. Jadi, apa mekanisme khusus di balik ini? Di bawah ini, kami akan secara berurutan memperkenalkan verifikasi status mesin virtual MIPS dan bukti penipuan interaktif.
Seperti yang disebutkan sebelumnya, misalkan Anda menemukan bahwa OutputRoot yang diserahkan oleh pengurutan OP tidak benar, dan Anda ingin memulai sebuah 'tantangan.' Proses tantangan memerlukan menyelesaikan serangkaian interaksi on-chain, setelah itu kontrak pintar terkait akan menentukan apakah pengurut OP mengunggah OutputRoot yang salah.
Untuk memverifikasi kebenaran OutputRoot on-chain menggunakan kontrak pintar, metode paling sederhana adalah dengan menerapkan klien node OP pada rantai Ethereum, menggunakan parameter input yang sama seperti OP sequencer, menjalankan program yang sama, dan memeriksa apakah hasil perhitungan sesuai. Pendekatan ini disebut Program Bukti Kesalahan. Meskipun relatif mudah untuk diimplementasikan di luar rantai, sangat sulit untuk dijalankan pada rantai Ethereum karena dua isu:
Kontrak pintar di Ethereum tidak dapat secara otomatis memperoleh parameter input yang diperlukan untuk bukti penipuan.
Batas gas blok Ethereum terbatas, dan tidak mendukung tugas komputasi yang sangat kompleks. Oleh karena itu, kita tidak dapat sepenuhnya menerapkan klien node OP on-chain.
Isu pertama setara dengan meminta kontrak pintar on-chain untuk membaca data off-chain, yang dapat diselesaikan dengan menggunakan solusi mirip orakel. OP telah mendeploy kontrak PreimageOracle di rantai Ethereum, dan kontrak terkait bukti penipuan dapat membaca data yang diperlukan dari kontrak ini. Secara teoritis, siapapun dapat mengunggah data ke kontrak ini, namun sistem bukti penipuan OP memiliki cara untuk memverifikasi apakah data tersebut diperlukan, meskipun proses ini tidak akan dijelaskan di sini, karena tidak krusial untuk topik inti artikel ini.
Untuk masalah kedua, tim pengembangan OP menulis mesin virtual MIPS di Solidity untuk menerapkan beberapa fungsi dari klien node OP yang cukup untuk sistem bukti penipuan. MIPS adalah arsitektur set instruksi CPU yang umum, dan kode sequencer OP ditulis dalam bahasa tingkat tinggi seperti Golang/Rust. Kami dapat mengompilasi program Golang/Rust menjadi program MIPS dan memprosesnya melalui mesin virtual MIPS di rantai Ethereum.
Tim pengembangan OP menulis program yang disederhanakan dalam Golang untuk bukti penipuan, yang pada dasarnya meniru modul-modul di node OP yang menjalankan transaksi, menghasilkan blok, dan menghasilkan OutputRoot. Namun, program yang disederhanakan ini masih tidak bisa "menjalankan sepenuhnya." Dengan kata lain, setiap blok OP mengandung banyak transaksi. Setelah memproses kumpulan transaksi ini, sebuah OutputRoot dihasilkan. Meskipun Anda tahu bahwa OutputRoot tinggi blok mana yang salah, tidak realistis untuk menjalankan semua transaksi dalam blok tersebut on-chain untuk membuktikan bahwa OutputRoot yang sesuai itu salah. Selain itu, selama eksekusi setiap transaksi, serangkaian opcode MIPS diproses secara berurutan. Tidak praktis untuk menjalankan seluruh serangkaian opcode ini pada mesin virtual MIPS yang diimplementasikan dalam kontrak on-chain, karena overhead komputasi dan konsumsi gas akan terlalu besar.
Prinsip Kerja Set Instruksi MIPS
Untuk mengatasi hal ini, tim Optimism merancang sistem bukti penipuan interaktif yang bertujuan untuk menganalisis secara mendalam alur pemrosesan transaksi OP. Dengan mengamati seluruh proses perhitungan OutputRoot, sistem mengidentifikasi di opcode MIPS mana mesin virtual MIPS OP sequencer melakukan kesalahan. Jika kesalahan dikonfirmasi, dapat disimpulkan bahwa OutputRoot yang diberikan oleh sequencer tidak valid.
Dengan demikian, masalahnya menjadi jelas: proses pengemasan transaksi OP sequencer ke dalam blok dapat dibagi menjadi pemrosesan berurutan dari sejumlah besar opcode MIPS. Setelah setiap opcode MIPS dieksekusi, hash status mesin virtual berubah. Catatan-catatan ini dapat digabungkan ke dalam pohon Merkle.
Dalam proses interaktif bukti penipuan, tujuannya adalah untuk menentukan setelah opcode MIPS mana keadaan hash mesin virtual OP sequencer menjadi tidak benar, dan kemudian mereproduksi keadaan mesin virtual MIPS di-chain, menjalankan opcode dan mengamati apakah hash keadaan yang dihasilkan cocok dengan yang dikirimkan oleh sequencer. Karena hanya satu opcode MIPS yang dieksekusi di-chain, kompleksitasnya rendah dan proses perhitungan dapat diselesaikan di rantai Ethereum. Namun, untuk mencapai ini, kita perlu mengunggah informasi keadaan mesin virtual MIPS, seperti data memori parsial, ke rantai.
Dalam hal implementasi kode, kontrak pintar pada rantai Ethereum yang terkait dengan bukti penipuan akan menyelesaikan proses eksekusi opcode MIPS akhir melalui fungsi yang disebut Langkah:
Parameter dalam fungsi di atas, _stateData dan _proof, mewakili item data yang bergantung untuk eksekusi satu opcode MIPS tunggal, seperti negara registrasi mesin virtual MIPS, hash negara memori, dll. Diagram ditunjukkan di bawah ini:
Kita dapat memasukkan parameter lingkungan mesin virtual MIPS ini melalui _stateData dan _proof, menjalankan satu instruksi MIPS tunggal on-chain, dan mendapatkan hasil yang berwibawa. Jika hasil yang berwibawa yang diperoleh on-chain berbeda dari hasil yang diserahkan oleh sequencer, itu menunjukkan bahwa sequencer tersebut bersifat jahat.
Secara umum, kami mengacu pada hash dari _stateData sebagai statehash, yang secara kasar dapat dipahami sebagai hash dari seluruh status mesin virtual MIPS. Di antara beberapa bidang dalam _stateData, memRoot adalah desain paling jenius. Seperti yang kita ketahui, selama eksekusi program, sejumlah besar memori digunakan, dan CPU berinteraksi dengan data di alamat memori tertentu dengan cara membaca dan menulis. Oleh karena itu, ketika kami menjalankan opcode MIPS on-chain melalui fungsi VM.Step, kami perlu menyediakan data dari alamat memori tertentu dalam mesin virtual MIPS.
OP menggunakan arsitektur 32-bit untuk mesin virtual MIPS, dan memori-nya berisi 2^27 alamat, yang dapat diorganisir ke dalam Pohon Merkle biner 28-level. Simpul daun di level terendah berjumlah 2^27, dengan setiap daun mencatat data dari alamat memori tertentu dari mesin virtual. Hash yang dihitung dari semua data di daun-daun adalah memRoot. Diagram di bawah ini menunjukkan struktur Pohon Merkle yang mencatat data memori mesin virtual MIPS:
Kita perlu menyediakan konten dari alamat memori tertentu, dan konten ini diunggah ke rantai Ethereum melalui bidang _proof dalam fungsi langkah. Selain itu, bukti Merkle berdasarkan pohon Merkle memori harus diunggah untuk membuktikan bahwa data yang Anda (atau sequencer) berikan memang ada dalam pohon Merkle memori, bukan hasil pemalsuan.
Pada bagian sebelumnya, kami menangani masalah kedua dengan menyelesaikan eksekusi on-chain dari opcode MIPS dan verifikasi status mesin virtual. Namun bagaimana penantang dan pengurut dapat menentukan instruksi opcode MIPS yang dipertentangkan secara spesifik?
Banyak orang mungkin telah membaca penjelasan sederhana tentang bukti penipuan interaktif secara online dan mendengar tentang pendekatan pencarian biner di baliknya. Tim OP telah mengembangkan protokol yang disebut Permainan Sengketa Kegagalan (FDG). Protokol FDG mencakup dua peran: penantang dan pembela.
Jika kami menemukan bahwa OutputRoot yang dikirimkan oleh sequencer on-chain tidak benar, kami dapat bertindak sebagai challenger dalam FDG, dengan sequencer bertindak sebagai defender. Untuk membantu menemukan opcode MIPS yang perlu diproses on-chain, protokol FDG meminta peserta untuk secara lokal membangun pohon Merkle yang disebut GameTree, yang struktur spesifiknya adalah sebagai berikut:
Kita dapat melihat bahwa GameTree cukup kompleks, dengan struktur bersarang hierarkis, terdiri dari pohon tingkat pertama dan subpohon tingkat kedua. Dengan kata lain, simpul daun dari pohon tingkat pertama berisi subpohon.
Seperti yang disebutkan sebelumnya, setiap blok yang dihasilkan oleh sequencer mengandung OutputRoot, dan simpul daun pohon tingkat pertama di GameTree mewakili OutputRoot dari blok yang berbeda. Penantang dan pembela perlu berinteraksi dalam pohon Merkle yang terbentuk oleh OutputRoot untuk menentukan OutputRoot blok mana yang dipertikaikan.
Setelah blok yang dipertentangkan diidentifikasi, kami masuk ke level kedua dari GameTree. Pohon level kedua juga merupakan pohon Merkle, dengan simpul daunnya adalah hash status mesin virtual MIPS, seperti yang diperkenalkan sebelumnya. Dalam skenario bukti penipuan, penantang dan pembela akan memiliki inkonsistensi dalam simpul daun dari GameTree yang mereka bangun secara lokal. Hash status setelah memproses opcode tertentu akan berbeda.
Setelah beberapa interaksi on-chain, pihak-pihak pada akhirnya menentukan opcode yang diperselisihkan secara tepat, menentukan opcode MIPS spesifik yang perlu dijalankan on-chain.
Pada titik ini, kami telah menyelesaikan seluruh proses bukti penipuan interaktif. Untuk merangkum, dua mekanisme inti dari bukti penipuan interaktif adalah:
Permainan Perselisihan Kegagalan (FDG) pertama-tama menemukan opcode MIPS yang perlu dieksekusi on-chain, bersama dengan informasi status VM pada saat itu;
Mesin virtual MIPS yang diimplementasikan pada rantai Ethereum menjalankan opcode, menghasilkan hasil akhir.
Bukti Penipuan ZK Seperti yang dapat kita lihat, pendekatan bukti penipuan tradisional melibatkan interaksi yang sangat kompleks, memerlukan beberapa putaran interaksi dalam proses FDG dan memainkan kembali instruksi individu on-chain. Namun, solusi ini memiliki beberapa tantangan:
Beberapa putaran interaksi perlu dipicu pada rantai Ethereum, mengakibatkan puluhan interaksi yang menimbulkan biaya gas yang signifikan. 2. Proses bukti penipuan interaktif memakan waktu lama, dan setelah interaksi dimulai, Rollup tidak dapat memproses transaksi secara normal. 3. Mengimplementasikan VM khusus di rantai untuk memutar instruksi sangat kompleks, dengan tingkat kesulitan pengembangan yang tinggi.
Untuk mengatasi masalah-masalah ini, Optimism memperkenalkan konsep Bukti Penipuan ZK. Ide intinya adalah ketika seorang penantang menimbulkan tantangan, mereka menentukan transaksi yang diyakini perlu diulang di rantai. Pemutus Gulungan menyediakan bukti ZK untuk transaksi yang ditantang, yang kemudian diverifikasi oleh kontrak pintar di rantai Ethereum. Jika verifikasi berhasil, disimpulkan bahwa tidak ada kesalahan dalam memproses transaksi, dan node Gulungan tidak bersalah.
Dalam diagram, Tantangmerujuk kepada pihak yang menimbulkan tantangan, danPertahananadalah OP sequencer. Dalam keadaan normal, OP sequencer menghasilkan blok berdasarkan transaksi yang diterima dan mengirimkan komitmen keadaan dari blok-blok yang berbeda ke Ethereum. Komitmen keadaan ini dapat dilihat secara sederhana sebagai nilai hash dari blok-blok. Pihak Tantang dapat menantang berdasarkan hash blok. Setelah menerima tantangan, Pihak Bertahan menghasilkan bukti ZK untuk menunjukkan bahwa hasil generasi blok itu benar. Pada diagram, Bonsaisebenarnya adalah alat generasi bukti ZK. Dibandingkan dengan bukti penipuan interaktif, keuntungan terbesar dari Bukti Penipuan ZK adalah bahwa ia menggantikan beberapa putaran interaksi dengan satu putaran generasi bukti ZK dan verifikasi on-chain. Hal ini secara signifikan menghemat waktu dan mengurangi biaya gas. Selain itu, berbeda dengan ZK Rollups, OP Rollups berbasis Bukti Penipuan ZK tidak memerlukan pembuatan bukti setiap kali blok diproduksi. Sebaliknya, mereka hanya menghasilkan bukti ZK secara sementara saat ditantang, yang juga mengurangi biaya komputasi untuk node Rollup.
Konsep Bukti Penipuan ZK juga diadopsi oleh BitVM2. Proyek-proyek yang menggunakan BitVM2, seperti Bitlayer, Jaringan Goat, ZKM, dan Fiama, mengimplementasikan program verifikasi Bukti ZK melalui skrip Bitcoin, yang secara signifikan menyederhanakan ukuran program yang perlu dibawa ke on-chain. Karena keterbatasan ruang, artikel ini tidak akan membahas lebih detail tentang topik ini. Tetap pantau untuk artikel kami yang akan datang tentang BitVM2 untuk memperoleh pemahaman yang lebih dalam tentang jalur implementasinya!
Artikel ini diambil dari [GodRealmX], hak cipta dimiliki oleh penulis asli [Shew & Noah], jika Anda memiliki keberatan terhadap penggandaan, silakan hubungi Belajar Gate tim, dan tim akan menanganinya sesegera mungkin sesuai dengan prosedur yang relevan.
Penyangkalan: Pandangan dan opini yang terdapat dalam artikel ini hanya mewakili pandangan pribadi penulis dan tidak merupakan saran investasi apa pun.
Versi bahasa lain dari artikel diterjemahkan oleh tim Gate Learn dan tidak disebutkan di Gate.io, artikel yang diterjemahkan tidak boleh direproduksi, didistribusikan, atau dijiplak.