Adapun mengapa Plasma telah dikubur untuk waktu yang lama, dan mengapa Vitalik akan sangat mendukung Rollup, petunjuk terutama menunjuk ke dua poin: menerapkan DA off-chain pada rantai Ethereum tidak dapat diandalkan, dan pemotongan data mudah terjadi, dan begitu pemotongan data terjadi, bukti penipuan sulit dikembangkan; ** Kedua titik ini membuat Plasma pada dasarnya hanya UTXO atau model perkiraan.
Untuk memahami dua poin inti ini, mari kita mulai dengan DA dan retensi data. DA adalah singkatan dari Data Avalibility, yang secara harfiah diterjemahkan menjadi ketersediaan data, dan sekarang disalahgunakan oleh banyak orang, sedemikian rupa sehingga sangat bingung dengan “data historis dapat diperiksa”. Namun pada kenyataannya, “data historis” dan “bukti penyimpanan” adalah masalah lama yang telah dipecahkan oleh orang-orang seperti Filecoin dan Arweave. Menurut Ethereum Foundation dan Celestia, masalah DA murni tentang skenario pemotongan data. **
**** Merkle Pohon & Merkle Root & Merkle Bukti ****
Untuk mengilustrasikan apa arti serangan penahanan data dan masalah DA, pertama-tama kita perlu berbicara singkat tentang Merkle Root dan Merkle Tree. Di Ethereum, atau sebagian besar rantai publik, struktur data seperti pohon yang disebut Pohon Merkle digunakan untuk bertindak sebagai ringkasan / direktori keadaan seluruh akun, atau untuk mencatat transaksi yang dikemas dalam setiap blok.
**Simpul daun di bagian bawah Pohon Merkle terdiri dari hash data mentah seperti transaksi atau status akun, ** Hash ini dijumlahkan berpasangan dan iterasi, dan Root Merkle akhirnya dapat dihitung.
(** Catatan di bagian bawah diagram adalah dataset asli yang sesuai dengan simpul daun) **
Merkle Root memiliki properti: jika simpul daun di bagian bawah Pohon Merkle berubah, Merkle Root yang dihitung juga akan berubah. Oleh karena itu, Pohon Merkle yang sesuai dengan kumpulan data asli yang berbeda akan memiliki Akar Merkle yang berbeda, sama seperti orang yang berbeda memiliki sidik jari yang berbeda. Teknologi verifikasi bukti, yang dikenal sebagai Merkle Proof, memanfaatkan properti Merkle Tree ini.
Misalnya, jika Li Gang hanya mengetahui nilai Akar Merkle pada gambar, dia tidak tahu data apa yang terkandung dalam Pohon Merkle lengkap. Kita perlu membuktikan kepada Li Gang bahwa Record 3 memang terkait dengan root dalam gambar, atau bahwa hash Record 3 ada di pohon Merkle yang sesuai dengan root.
Kita hanya perlu mengirimkan Record3 dan 3 blok intisari yang ditandai sebagai abu-abu ke Li Gang, alih-alih melakukan seluruh Pohon Merkle atau semua simpul daunnya, yang merupakan kesederhanaan Bukti Merkle. Ketika catatan yang mendasari Pohon Merkle memiliki sejumlah besar daun, seperti 2 pangkat 2 blok data (sekitar 1 juta), Merkle Proof hanya perlu berisi setidaknya 21 blok data.
(Blok data 30 dan H2 pada gambar dapat merupakan Bukti Merkle, membuktikan bahwa blok data 30 ada di Pohon Merkle yang sesuai dengan H0) **
Dalam Bitcoin, Ethereum, atau jembatan lintas rantai, “kesederhanaan” Merkle Proof ini sering digunakan. Simpul cahaya yang kita ketahui sebenarnya adalah Li Gang yang disebutkan di atas, yang hanya menerima header blok dari simpul penuh, bukan blok penuh. Penting untuk ditekankan di sini bahwa Ethereum menggunakan pohon Merkle yang disebut State Trie, yang bertindak sebagai ringkasan dari keseluruhan akun. Akar Merkle State Trie, yang disebut StateRoot, berubah setiap kali status salah satu akun yang terkait dengan State Trie berubah.
Di header blok Ethereum, StateRoot akan dicatat, dan Merkle Root (disebut sebagai Txn Root) dari pohon transaksi juga akan dicatat. Jika blok 100 berisi 300 transaksi, maka daun pohon perdagangan mewakili 300 Txn ini.
Perbedaan lainnya adalah bahwa jumlah keseluruhan data di State Trie sangat besar, dan daun yang mendasarinya sesuai dengan semua alamat pada rantai Ethereum (pada kenyataannya, ada banyak hash state usang), sehingga dataset asli yang sesuai dengan State Trie tidak akan dipublikasikan ke blok, hanya StateRoot yang akan dicatat di header blok. Dataset asli dari pohon transaksi adalah data Txn di setiap blok, dan TxnRoot pohon akan dicatat di header blok.
Karena simpul cahaya hanya menerima header blok, hanya mengetahui StateRoot dan TxnRoot, dan tidak dapat menyimpulkan Pohon Merkle lengkap berdasarkan akar (ini ditentukan oleh sifat Pohon Merkle dan fungsi hash), simpul cahaya tidak dapat mengetahui data transaksi yang terkandung dalam blok, juga tidak tahu perubahan apa yang terjadi pada akun yang sesuai dengan State Trie. **
Jika Wang Qiang ingin membuktikan kepada simpul cahaya (Li Gang disebutkan sebelumnya) bahwa blok 100 berisi transaksi tertentu, dan diketahui bahwa simpul cahaya mengetahui header blok blok 100 dan mengetahui TxnRoot, maka masalah di atas diterjemahkan menjadi: membuktikan bahwa Txn ini ada di Pohon Merkle yang sesuai dengan TxnRoot. Saat ini, Wang Qiang hanya perlu menyerahkan Bukti Merkle yang sesuai.
Dalam banyak jembatan lintas rantai berdasarkan solusi klien ringan, cahaya dan kesederhanaan simpul cahaya dan Bukti Merkle yang disebutkan di atas sering digunakan. Misalnya, jembatan ZK seperti Map Protocol akan membuat kontrak pada rantai ETH untuk menerima header blok dari rantai lain (seperti Polygon). Ketika Relayer mengirimkan header blok ke-100 Polygon ke kontrak pada rantai ETH, kontrak akan memverifikasi validitas header (seperti apakah memiliki cukup tanda tangan dari 2/3 node POS di jaringan Polygon).
Jika header valid dan pengguna menyatakan bahwa mereka telah memulai Txn lintas rantai dari Polygon ke ETH, Txn dikemas ke dalam blok Polygon ke-100. Dia hanya perlu membuktikan melalui Merkle Proof bahwa Txn lintas rantai yang dia inisiasi dapat sesuai dengan TxnRoot dari header blok 100 (dengan kata lain, ini membuktikan bahwa Txn lintas rantai yang dia mulai memiliki catatan di blok 100 Polygon). Namun, jembatan ZK akan menggunakan bukti tanpa pengetahuan untuk memampatkan jumlah perhitungan yang diperlukan untuk memverifikasi Bukti Merkle, yang selanjutnya mengurangi biaya verifikasi kontrak jembatan lintas rantai.
DA dan Masalah Serangan Penyimpanan Data
Setelah berbicara tentang Merkle Tree dan Merkle Root dan Merkle Proof, mari kita kembali ke DA dan masalah serangan pemotongan data yang disebutkan di awal artikel, yang dieksplorasi sebelum 2017, dan makalah asli Celestia arkeologi asal usul masalah DA. Dalam dokumen 2017 ~ 18, Vitalik sendiri berbicara tentang bagaimana pemblokir dapat dengan sengaja menyembunyikan fragmen data tertentu dari blok dan menerbitkan blok yang tidak lengkap, sehingga node penuh tidak dapat mengkonfirmasi kebenaran eksekusi transaksi / transisi status.
Pada titik ini, produsen blok dapat mencuri aset pengguna, seperti mentransfer semua koin di akun A ke alamat lain, dan full node tidak dapat menentukan apakah A sendiri telah melakukannya, karena mereka tidak mengetahui data transaksi lengkap yang terdapat dalam blok terbaru.
Dalam rantai publik Layer 1 seperti Bitcoin atau Ethereum, full node yang jujur akan langsung menolak blok yang tidak valid di atas. Tetapi node cahaya berbeda, mereka hanya menerima header blok dari jaringan, mereka hanya tahu StateRoot dan TxnRoot, dan mereka tidak tahu apakah blok asli yang sesuai dengan header dan dua root valid.
Dalam kertas putih Bitcoin, sebenarnya ada lubang otak untuk situasi ini, Satoshi Nakamoto pernah percaya bahwa sebagian besar pengguna akan cenderung menjalankan node cahaya dengan persyaratan konfigurasi yang lebih rendah, dan node cahaya tidak dapat menilai apakah blok yang sesuai dengan header blok valid, dan jika blok tidak valid, node penuh yang jujur akan mengirim alarm ke node cahaya.
Tetapi Satoshi Nakamoto tidak melakukan analisis yang lebih rinci tentang solusi ini, dan kemudian pendiri Vitalik dan Celestia Mustafa membangun ide ini, dikombinasikan dengan karya para pendahulu lainnya, untuk memperkenalkan pengambilan sampel data DA untuk memastikan bahwa full node yang jujur dapat memulihkan data lengkap dari setiap blok dan membunyikan alarm bila perlu.
Catatan: DA Data Sampling (DAS) dan Celestia bukan fokus artikel ini, pembaca yang tertarik dapat membaca artikel Geek Web3 sebelumnya: “Kesalahpahaman tentang Ketersediaan Data: DA = Penerbitan Data ≠ Pengambilan Data Historis”
Bukti Penipuan Plasma
Sederhananya, Plasma adalah solusi penskalaan yang hanya menerbitkan header blok Layer 2 ke Layer 1, dan data DA di luar header blok (kumpulan data transaksi lengkap / perubahan status per akun) hanya diterbitkan secara off-chain. Dengan kata lain, Plasma seperti jembatan lintas rantai berdasarkan klien ringan, menerapkan klien cahaya Layer 2 dengan kontrak pada rantai ETH, dan ketika pengguna menyatakan bahwa mereka ingin menyeberang aset dari L2 ke L1, mereka harus menyerahkan Bukti Merkle untuk membuktikan bahwa mereka benar-benar memiliki aset.
**Logika verifikasi untuk aset yang membentang dari L2 hingga L1 mirip dengan jembatan ZK yang disebutkan di atas, kecuali bahwa model jembatan Plasma didasarkan pada bukti penipuan daripada bukti ZK, yang lebih dekat dengan apa yang disebut “jembatan optimis”. **Permintaan penarikan dari L2 ke L1 di jaringan Plasma tidak segera dirilis, tetapi memiliki “periode tantangan”, sedangkan untuk tujuan periode tantangan, akan kami jelaskan di bawah ini.
Plasma tidak memiliki persyaratan ketat untuk rilis data / DA, sequencer / operator hanya menyiarkan setiap blok L2 off-chain, dan node yang bersedia untuk mendapatkan blok L2 melakukannya sendiri. Setelah itu, sequencer akan mempublikasikan header blok L2 ke Layer 1. Misalnya, sequencer menyiarkan blok 100 off-chain dan kemudian menerbitkan header blok on-chain. Jika blok 100 berisi transaksi yang tidak valid, setiap node plasma dapat mengirimkan Bukti Merkle ke kontrak pada ETH sebelum akhir “periode tantangan” untuk membuktikan bahwa header blok 100 dapat dikaitkan dengan transaksi yang tidak valid, yang merupakan skenario yang dicakup oleh bukti penipuan.
Kasus penggunaan bukti penipuan Plasma juga mencakup hal-hal berikut:
Misalkan kemajuan jaringan Plasma mencapai blok 200, dan pengguna A memulai pernyataan penarikan, mengatakan bahwa ia memiliki 10 ETH di blok 100. Namun pada kenyataannya, pengguna A menghabiskan ETH di akun setelah blok 100.
Jadi, perilaku A sebenarnya adalah menghabiskan 10 ETH, menyatakan bahwa dia memiliki 10 ETH di masa lalu, dan mencoba menarik ETH. Ini adalah “penarikan ganda” klasik, pengeluaran ganda. Saat ini, siapa pun dapat mengirimkan Bukti Merkle untuk membuktikan status aset terbaru pengguna A, dan tidak memenuhi pernyataan penarikannya, yaitu, untuk membuktikan bahwa A tidak memiliki pernyataan penarikan setelah blok 100 (skema Plasma yang berbeda memiliki metode bukti yang tidak konsisten untuk situasi ini, dan model alamat akun jauh lebih merepotkan daripada bukti pengeluaran ganda UTXO).
Jika itu adalah skema Plasma berdasarkan model UTXO (yang terutama terjadi di masa lalu), tidak ada StateRoot di header blok, hanya TxnRoot (UTXO tidak mendukung model alamat akun bergaya Ethereum, juga tidak memiliki desain status global seperti State Trie). Dengan kata lain, rantai yang mengadopsi model UTXO hanya memiliki catatan transaksi, bukan catatan negara.
Dalam hal ini, sequencer itu sendiri dapat meluncurkan serangan double-spend, seperti menghabiskan UTXO yang telah dihabiskan, atau mengeluarkan UTXO tambahan kepada pengguna begitu saja. Setiap pengguna dapat mengirimkan Bukti Merkle untuk membuktikan bahwa riwayat penggunaan UTXO telah muncul (telah dihabiskan) di blok sebelumnya, atau untuk membuktikan bahwa asal usul historis UTXO dipertanyakan. **
Untuk skema EVM-compliant/State-Trie-enabled Plasma, sequencer dapat mengirimkan StateRoot yang tidak valid, misalnya, setelah mengeksekusi transaksi yang terdapat dalam blok 100, StateRoot harus dikonversi ke ST+, tetapi sequencer mengirimkan ST- ke Layer 1.
Dalam hal ini, bukti penipuan lebih kompleks dan membutuhkan transaksi di blok 100 untuk diputar ulang pada rantai Ethereum, yang menghabiskan banyak gas dengan jumlah perhitungan dan parameter input yang diperlukan. Sulit bagi tim adopsi Plasma awal untuk mencapai bukti penipuan yang begitu kompleks, sehingga kebanyakan dari mereka menggunakan model UTXO, lagipula, bukti penipuan berbasis UTXO sangat sederhana dan mudah diterapkan (Bahan bakar, skema Rollup pertama yang meluncurkan bukti penipuan, didasarkan pada UTXO)
Penyimpanan Data &; Keluar dari Game****
Tentu saja, skenario yang disebutkan di atas di mana bukti penipuan dapat berlaku hanya ditetapkan ketika DA / rilis data valid. Jika sequencer menahan data dan tidak mempublikasikan blok penuh off-chain, node Plasma tidak akan dapat mengkonfirmasi apakah header blok pada Layer 1 valid, dan tentu saja tidak akan dapat mempublikasikan bukti penipuan dengan lancar.
Pada saat ini, sequencer dapat mencuri aset pengguna, seperti mentransfer semua koin dari akun A ke akun B, kemudian mentransfer uang dari akun B ke C, dan akhirnya memulai penarikan atas nama C. Akun B dan C dimiliki oleh sequencer, dan transfer B->C tidak berbahaya bahkan jika dipublikasikan ke publik.** Tetapi sequencer dapat menahan data transfer A->B yang tidak valid, dan orang tidak dapat membuktikan bahwa ada masalah dengan sumber aset B dan C** (untuk membuktikan bahwa sumber aset B bermasalah, perlu untuk menunjukkan bahwa tanda tangan digital “Txn tertentu yang ditransfer ke B” salah).
Solusi Plasma berbasis UTXO ditargetkan oleh fakta bahwa siapa pun yang memulai penarikan harus menyerahkan riwayat lengkap aset, meskipun ada lebih banyak perbaikan nanti. Namun, jika itu adalah solusi Plasma yang kompatibel dengan EVM, itu akan lemah di area ini. Karena jika Txn terkait kontrak terlibat, akan ada biaya besar dalam memverifikasi proses transisi negara pada rantai, sehingga sulit untuk menerapkan skema verifikasi untuk validitas penarikan dengan mendukung model alamat akun dan kontrak pintar Plasma.
Selain topik di atas, apakah itu Plasma berbasis UTXO atau berbasis model alamat akun, pemotongan data dapat menyebabkan kepanikan karena Anda tidak tahu transaksi apa yang dilakukan sequencer. ** Node plasma akan menemukan sesuatu yang salah, tetapi mereka tidak akan dapat mempublikasikan bukti penipuan karena sequencer Plasma tidak akan mengirimkan data yang diperlukan untuk bukti penipuan.
Saat ini, orang hanya dapat melihat header blok yang sesuai, tetapi mereka tidak tahu apa yang ada di blok tersebut, dan mereka tidak tahu seperti apa aset akun mereka, jadi mereka secara kolektif akan memulai pernyataan penarikan dan mencoba menarik diri dengan Bukti Merkle yang sesuai dengan blok historis, **memicu skenario ekstrem yang disebut “Exit Game”, yang akan menyebabkan “penyerbuan”, yang akan membuat Layer 1 sangat padat, dan masih akan menyebabkan aset beberapa orang rusak ** (Orang yang tidak menerima notifikasi node jujur atau tidak menggesek Twitter tidak akan tahu bahwa sequencer mencuri koin.)
Oleh karena itu, Plasma adalah solusi penskalaan Layer2 yang tidak dapat diandalkan, dan begitu serangan pemotongan data terjadi, itu akan memicu “Exit Game”, yang mudah bagi pengguna untuk menderita kerugian, yang merupakan alasan utama ditinggalkannya. **
Alasan mengapa plasma sulit untuk mendukung kontrak pintar ****
Setelah berbicara tentang Exit Game dan masalah retensi data, mari kita lihat mengapa Plasma sulit untuk mendukung kontrak pintar, terutama karena dua alasan:
Pertama, jika itu adalah aset kontrak Defi, siapa yang harus menariknya ke Layer 1? Karena ini pada dasarnya memigrasikan keadaan kontrak dari Layer 2 ke Layer 1, misalkan seseorang menagih 100 ETH ke kumpulan LP DEX, dan kemudian sequencer Plasma melakukan kejahatan, dan orang-orang ingin segera menariknya, saat ini, 100 ETH pengguna masih dikendalikan oleh kontrak DEX, siapa yang harus menyebutkan aset ini ke Layer 1 saat ini?
Cara terbaik untuk melakukan ini tampaknya adalah membiarkan pengguna menebus aset dari DEX terlebih dahulu, dan kemudian pengguna akan menarik uang ke L1 sendiri, tetapi masalahnya adalah sequencer Plasma telah melakukan sesuatu yang buruk dan dapat menolak permintaan pengguna kapan saja.
Jadi, bagaimana jika kita mengatur Pemilik untuk kontrak DEX terlebih dahulu, memungkinkan dia untuk menempatkan aset kontrak pada L1 jika terjadi keadaan darurat? Jelas, ini akan memberikan pemilik kontrak kepemilikan aset publik, dan dia dapat menempatkan aset ini di L1 kapan saja dan melarikan diri, bukankah itu mengerikan?
Jelas, apa yang harus dilakukan dengan “properti publik” yang didominasi oleh kontrak Defi ini adalah guntur besar. ** Ini sebenarnya melibatkan masalah distribusi kekuasaan publik, yang Xiangma sebelumnya telah bicarakan dalam sebuah wawancara dengan “Sulit bagi rantai publik berkinerja tinggi untuk melakukan hal-hal baru, dan kontrak pintar melibatkan distribusi kekuasaan”.
Kedua, jika kontrak tidak diizinkan untuk memigrasikan statusnya, ia akan menderita kerugian besar, dan jika kontrak diizinkan untuk memigrasikan statusnya ke Layer 1, akan ada penarikan ganda yang sulit diselesaikan dengan bukti penipuan Plasma:
Misalnya, mari kita asumsikan bahwa Plasma mengadopsi model alamat akun Ethereum, mendukung kontrak pintar, memiliki mixer koin, saat ini menyetor 100 ETH, dan pemilik mixer koin dikendalikan oleh Bob;
Katakanlah Bob menarik 50 ETH dari mixer di blok 100. Setelah itu, Bob memulai pernyataan penarikan dan melewati 50 ETH ke Layer 1;
Setelah itu, Bob menggunakan snapshot dari status kontrak masa lalu (misalnya, blok 70) untuk memigrasikan status masa lalu mixer ke Layer 1, yang juga akan melewati 100 ETH yang “pernah dimiliki” mixer ke Layer 1.
Jelas, ini adalah “penarikan ganda” yang khas, yang merupakan pengeluaran ganda. **150 ETH disebutkan oleh Bob ke Layer 1, tetapi pengguna jaringan Layer 2 hanya membayar 100 ETH ke mixer / Bob, dan 50 ETH ditarik begitu saja. Ini dapat dengan mudah menguras cadangan Plasma **. Secara teoritis, seseorang dapat memulai bukti penipuan untuk membuktikan bahwa keadaan kontrak mixer telah berubah setelah blok 70.
Tetapi jika Anda ingin menunjukkan bukti bahwa kontrak Mixer telah berubah setelah Blok 70, Anda harus menjalankan semua Txn yang disebutkan di atas pada rantai Ethereum untuk akhirnya membiarkan kontrak Plasma menentukan bahwa keadaan kontrak Mixer memang telah berubah (alasan mengapa begitu kompleks ditentukan oleh struktur Plasma itu sendiri). Jika jumlah Txn begitu besar, bukti penipuan tidak akan dipublikasikan di Layer 1 sama sekali (itu akan melebihi batas gas untuk satu blok Ethereum).
Secara teoritis, dalam skenario pengeluaran ganda di atas, tampaknya Anda hanya perlu mengirimkan snapshot dari keadaan mixer saat ini (yang sebenarnya adalah bukti Merkle yang sesuai dengan StateRoot), tetapi pada kenyataannya, karena Plasma tidak mempublikasikan data transaksi pada rantai, kontrak tidak dapat menentukan apakah snapshot dari keadaan yang Anda kirimkan valid. **Ini karena sequencer itu sendiri dapat memulai penyimpanan data, mengirimkan snapshot status yang tidak valid, dan dengan jahat menunjukkan penarikan apa pun. **
Misalnya, ketika Anda menyatakan bahwa Anda memiliki 50 ETH di akun Anda dan memulai penarikan, sequencer dapat secara pribadi menghapus akun Anda ke 0, dan kemudian memulai pemotongan data, mengirim StateRoot yang tidak valid ke rantai, dan mengirimkan snapshot status yang sesuai untuk secara salah menuduh Anda kehabisan uang di akun Anda. Pada titik ini, Anda tidak dapat membuktikan bahwa StateRoot dan State Snapshot yang dikirimkan oleh sequencer tidak valid, karena ia memulai penyimpanan data, dan Anda tidak mendapatkan cukup data yang diperlukan untuk membuktikan penipuan. **
Untuk mencegah hal ini, simpul Plasma juga memutar ulang riwayat transaksi selama periode ini ketika menyajikan snapshot keadaan untuk membuktikan bahwa seseorang memiliki pengeluaran ganda, yang mencegah sequencer menahan data untuk mencegah orang lain menarik diri. Di Rollup, jika Anda mengalami penarikan ganda yang disebutkan di atas, Anda tidak perlu memutar ulang transaksi historis secara teori, karena Rollup tidak memiliki masalah pemotongan data dan akan “memaksa” sequencer untuk mempublikasikan data DA pada rantai. **Sequencer rollup yang mengirimkan snapshot StateRoot-state yang tidak valid akan gagal validasi kontrak (ZK Rollup) atau akan segera ditantang (OP Rollup).
Bahkan, selain contoh mixer koin yang disebutkan di atas, skenario seperti kontrak multi-tanda tangan juga dapat menyebabkan penarikan ganda pada jaringan Plasma. Bukti penipuan tidak efisien dalam menangani skenario seperti itu. **Situasi ini dianalisis dalam Penelitian ETH.
Singkatnya, karena skema Plasma tidak kondusif untuk kontrak pintar dan pada dasarnya tidak mendukung migrasi status kontrak ke Lapisan 1, Plasma arus utama harus memilih UTXO atau mekanisme serupa, karena UTXO tidak memiliki masalah konflik kepemilikan aset, dan dapat mendukung bukti penipuan (ukurannya jauh lebih kecil), tetapi dengan biaya skenario aplikasi tunggal, pada dasarnya hanya dapat mendukung transfer atau pertukaran buku pesanan.
Selain itu, karena fraud proof itu sendiri memiliki ketergantungan yang kuat pada data DA, maka akan sulit untuk mencapai sistem fraud proof yang efisien jika lapisan DA tidak dapat diandalkan. Namun, penanganan masalah DA Plasma terlalu sederhana untuk menyelesaikan masalah serangan pemotongan data, dan dengan munculnya Rollup, Plasma perlahan-lahan memudar dari sejarah. **
Lihat Asli
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
Pemotongan Data &; Bukti Penipuan: Mengapa Plasma tidak mendukung kontrak pintar
Penulis: Faust, geek web3
Adapun mengapa Plasma telah dikubur untuk waktu yang lama, dan mengapa Vitalik akan sangat mendukung Rollup, petunjuk terutama menunjuk ke dua poin: menerapkan DA off-chain pada rantai Ethereum tidak dapat diandalkan, dan pemotongan data mudah terjadi, dan begitu pemotongan data terjadi, bukti penipuan sulit dikembangkan; ** Kedua titik ini membuat Plasma pada dasarnya hanya UTXO atau model perkiraan.
Untuk memahami dua poin inti ini, mari kita mulai dengan DA dan retensi data. DA adalah singkatan dari Data Avalibility, yang secara harfiah diterjemahkan menjadi ketersediaan data, dan sekarang disalahgunakan oleh banyak orang, sedemikian rupa sehingga sangat bingung dengan “data historis dapat diperiksa”. Namun pada kenyataannya, “data historis” dan “bukti penyimpanan” adalah masalah lama yang telah dipecahkan oleh orang-orang seperti Filecoin dan Arweave. Menurut Ethereum Foundation dan Celestia, masalah DA murni tentang skenario pemotongan data. **
**** Merkle Pohon & Merkle Root & Merkle Bukti ****
Untuk mengilustrasikan apa arti serangan penahanan data dan masalah DA, pertama-tama kita perlu berbicara singkat tentang Merkle Root dan Merkle Tree. Di Ethereum, atau sebagian besar rantai publik, struktur data seperti pohon yang disebut Pohon Merkle digunakan untuk bertindak sebagai ringkasan / direktori keadaan seluruh akun, atau untuk mencatat transaksi yang dikemas dalam setiap blok.
**Simpul daun di bagian bawah Pohon Merkle terdiri dari hash data mentah seperti transaksi atau status akun, ** Hash ini dijumlahkan berpasangan dan iterasi, dan Root Merkle akhirnya dapat dihitung.
(** Catatan di bagian bawah diagram adalah dataset asli yang sesuai dengan simpul daun) **
Merkle Root memiliki properti: jika simpul daun di bagian bawah Pohon Merkle berubah, Merkle Root yang dihitung juga akan berubah. Oleh karena itu, Pohon Merkle yang sesuai dengan kumpulan data asli yang berbeda akan memiliki Akar Merkle yang berbeda, sama seperti orang yang berbeda memiliki sidik jari yang berbeda. Teknologi verifikasi bukti, yang dikenal sebagai Merkle Proof, memanfaatkan properti Merkle Tree ini.
Misalnya, jika Li Gang hanya mengetahui nilai Akar Merkle pada gambar, dia tidak tahu data apa yang terkandung dalam Pohon Merkle lengkap. Kita perlu membuktikan kepada Li Gang bahwa Record 3 memang terkait dengan root dalam gambar, atau bahwa hash Record 3 ada di pohon Merkle yang sesuai dengan root.
Kita hanya perlu mengirimkan Record3 dan 3 blok intisari yang ditandai sebagai abu-abu ke Li Gang, alih-alih melakukan seluruh Pohon Merkle atau semua simpul daunnya, yang merupakan kesederhanaan Bukti Merkle. Ketika catatan yang mendasari Pohon Merkle memiliki sejumlah besar daun, seperti 2 pangkat 2 blok data (sekitar 1 juta), Merkle Proof hanya perlu berisi setidaknya 21 blok data.
(Blok data 30 dan H2 pada gambar dapat merupakan Bukti Merkle, membuktikan bahwa blok data 30 ada di Pohon Merkle yang sesuai dengan H0) **
Dalam Bitcoin, Ethereum, atau jembatan lintas rantai, “kesederhanaan” Merkle Proof ini sering digunakan. Simpul cahaya yang kita ketahui sebenarnya adalah Li Gang yang disebutkan di atas, yang hanya menerima header blok dari simpul penuh, bukan blok penuh. Penting untuk ditekankan di sini bahwa Ethereum menggunakan pohon Merkle yang disebut State Trie, yang bertindak sebagai ringkasan dari keseluruhan akun. Akar Merkle State Trie, yang disebut StateRoot, berubah setiap kali status salah satu akun yang terkait dengan State Trie berubah.
Di header blok Ethereum, StateRoot akan dicatat, dan Merkle Root (disebut sebagai Txn Root) dari pohon transaksi juga akan dicatat. Jika blok 100 berisi 300 transaksi, maka daun pohon perdagangan mewakili 300 Txn ini.
Perbedaan lainnya adalah bahwa jumlah keseluruhan data di State Trie sangat besar, dan daun yang mendasarinya sesuai dengan semua alamat pada rantai Ethereum (pada kenyataannya, ada banyak hash state usang), sehingga dataset asli yang sesuai dengan State Trie tidak akan dipublikasikan ke blok, hanya StateRoot yang akan dicatat di header blok. Dataset asli dari pohon transaksi adalah data Txn di setiap blok, dan TxnRoot pohon akan dicatat di header blok.
Karena simpul cahaya hanya menerima header blok, hanya mengetahui StateRoot dan TxnRoot, dan tidak dapat menyimpulkan Pohon Merkle lengkap berdasarkan akar (ini ditentukan oleh sifat Pohon Merkle dan fungsi hash), simpul cahaya tidak dapat mengetahui data transaksi yang terkandung dalam blok, juga tidak tahu perubahan apa yang terjadi pada akun yang sesuai dengan State Trie. **
Jika Wang Qiang ingin membuktikan kepada simpul cahaya (Li Gang disebutkan sebelumnya) bahwa blok 100 berisi transaksi tertentu, dan diketahui bahwa simpul cahaya mengetahui header blok blok 100 dan mengetahui TxnRoot, maka masalah di atas diterjemahkan menjadi: membuktikan bahwa Txn ini ada di Pohon Merkle yang sesuai dengan TxnRoot. Saat ini, Wang Qiang hanya perlu menyerahkan Bukti Merkle yang sesuai.
Dalam banyak jembatan lintas rantai berdasarkan solusi klien ringan, cahaya dan kesederhanaan simpul cahaya dan Bukti Merkle yang disebutkan di atas sering digunakan. Misalnya, jembatan ZK seperti Map Protocol akan membuat kontrak pada rantai ETH untuk menerima header blok dari rantai lain (seperti Polygon). Ketika Relayer mengirimkan header blok ke-100 Polygon ke kontrak pada rantai ETH, kontrak akan memverifikasi validitas header (seperti apakah memiliki cukup tanda tangan dari 2/3 node POS di jaringan Polygon).
Jika header valid dan pengguna menyatakan bahwa mereka telah memulai Txn lintas rantai dari Polygon ke ETH, Txn dikemas ke dalam blok Polygon ke-100. Dia hanya perlu membuktikan melalui Merkle Proof bahwa Txn lintas rantai yang dia inisiasi dapat sesuai dengan TxnRoot dari header blok 100 (dengan kata lain, ini membuktikan bahwa Txn lintas rantai yang dia mulai memiliki catatan di blok 100 Polygon). Namun, jembatan ZK akan menggunakan bukti tanpa pengetahuan untuk memampatkan jumlah perhitungan yang diperlukan untuk memverifikasi Bukti Merkle, yang selanjutnya mengurangi biaya verifikasi kontrak jembatan lintas rantai.
DA dan Masalah Serangan Penyimpanan Data
Setelah berbicara tentang Merkle Tree dan Merkle Root dan Merkle Proof, mari kita kembali ke DA dan masalah serangan pemotongan data yang disebutkan di awal artikel, yang dieksplorasi sebelum 2017, dan makalah asli Celestia arkeologi asal usul masalah DA. Dalam dokumen 2017 ~ 18, Vitalik sendiri berbicara tentang bagaimana pemblokir dapat dengan sengaja menyembunyikan fragmen data tertentu dari blok dan menerbitkan blok yang tidak lengkap, sehingga node penuh tidak dapat mengkonfirmasi kebenaran eksekusi transaksi / transisi status.
Pada titik ini, produsen blok dapat mencuri aset pengguna, seperti mentransfer semua koin di akun A ke alamat lain, dan full node tidak dapat menentukan apakah A sendiri telah melakukannya, karena mereka tidak mengetahui data transaksi lengkap yang terdapat dalam blok terbaru.
Dalam rantai publik Layer 1 seperti Bitcoin atau Ethereum, full node yang jujur akan langsung menolak blok yang tidak valid di atas. Tetapi node cahaya berbeda, mereka hanya menerima header blok dari jaringan, mereka hanya tahu StateRoot dan TxnRoot, dan mereka tidak tahu apakah blok asli yang sesuai dengan header dan dua root valid.
Dalam kertas putih Bitcoin, sebenarnya ada lubang otak untuk situasi ini, Satoshi Nakamoto pernah percaya bahwa sebagian besar pengguna akan cenderung menjalankan node cahaya dengan persyaratan konfigurasi yang lebih rendah, dan node cahaya tidak dapat menilai apakah blok yang sesuai dengan header blok valid, dan jika blok tidak valid, node penuh yang jujur akan mengirim alarm ke node cahaya.
Tetapi Satoshi Nakamoto tidak melakukan analisis yang lebih rinci tentang solusi ini, dan kemudian pendiri Vitalik dan Celestia Mustafa membangun ide ini, dikombinasikan dengan karya para pendahulu lainnya, untuk memperkenalkan pengambilan sampel data DA untuk memastikan bahwa full node yang jujur dapat memulihkan data lengkap dari setiap blok dan membunyikan alarm bila perlu.
Catatan: DA Data Sampling (DAS) dan Celestia bukan fokus artikel ini, pembaca yang tertarik dapat membaca artikel Geek Web3 sebelumnya: “Kesalahpahaman tentang Ketersediaan Data: DA = Penerbitan Data ≠ Pengambilan Data Historis”
Bukti Penipuan Plasma
Sederhananya, Plasma adalah solusi penskalaan yang hanya menerbitkan header blok Layer 2 ke Layer 1, dan data DA di luar header blok (kumpulan data transaksi lengkap / perubahan status per akun) hanya diterbitkan secara off-chain. Dengan kata lain, Plasma seperti jembatan lintas rantai berdasarkan klien ringan, menerapkan klien cahaya Layer 2 dengan kontrak pada rantai ETH, dan ketika pengguna menyatakan bahwa mereka ingin menyeberang aset dari L2 ke L1, mereka harus menyerahkan Bukti Merkle untuk membuktikan bahwa mereka benar-benar memiliki aset.
**Logika verifikasi untuk aset yang membentang dari L2 hingga L1 mirip dengan jembatan ZK yang disebutkan di atas, kecuali bahwa model jembatan Plasma didasarkan pada bukti penipuan daripada bukti ZK, yang lebih dekat dengan apa yang disebut “jembatan optimis”. **Permintaan penarikan dari L2 ke L1 di jaringan Plasma tidak segera dirilis, tetapi memiliki “periode tantangan”, sedangkan untuk tujuan periode tantangan, akan kami jelaskan di bawah ini.
Plasma tidak memiliki persyaratan ketat untuk rilis data / DA, sequencer / operator hanya menyiarkan setiap blok L2 off-chain, dan node yang bersedia untuk mendapatkan blok L2 melakukannya sendiri. Setelah itu, sequencer akan mempublikasikan header blok L2 ke Layer 1. Misalnya, sequencer menyiarkan blok 100 off-chain dan kemudian menerbitkan header blok on-chain. Jika blok 100 berisi transaksi yang tidak valid, setiap node plasma dapat mengirimkan Bukti Merkle ke kontrak pada ETH sebelum akhir “periode tantangan” untuk membuktikan bahwa header blok 100 dapat dikaitkan dengan transaksi yang tidak valid, yang merupakan skenario yang dicakup oleh bukti penipuan.
Kasus penggunaan bukti penipuan Plasma juga mencakup hal-hal berikut:
Jadi, perilaku A sebenarnya adalah menghabiskan 10 ETH, menyatakan bahwa dia memiliki 10 ETH di masa lalu, dan mencoba menarik ETH. Ini adalah “penarikan ganda” klasik, pengeluaran ganda. Saat ini, siapa pun dapat mengirimkan Bukti Merkle untuk membuktikan status aset terbaru pengguna A, dan tidak memenuhi pernyataan penarikannya, yaitu, untuk membuktikan bahwa A tidak memiliki pernyataan penarikan setelah blok 100 (skema Plasma yang berbeda memiliki metode bukti yang tidak konsisten untuk situasi ini, dan model alamat akun jauh lebih merepotkan daripada bukti pengeluaran ganda UTXO).
Dalam hal ini, sequencer itu sendiri dapat meluncurkan serangan double-spend, seperti menghabiskan UTXO yang telah dihabiskan, atau mengeluarkan UTXO tambahan kepada pengguna begitu saja. Setiap pengguna dapat mengirimkan Bukti Merkle untuk membuktikan bahwa riwayat penggunaan UTXO telah muncul (telah dihabiskan) di blok sebelumnya, atau untuk membuktikan bahwa asal usul historis UTXO dipertanyakan. **
Dalam hal ini, bukti penipuan lebih kompleks dan membutuhkan transaksi di blok 100 untuk diputar ulang pada rantai Ethereum, yang menghabiskan banyak gas dengan jumlah perhitungan dan parameter input yang diperlukan. Sulit bagi tim adopsi Plasma awal untuk mencapai bukti penipuan yang begitu kompleks, sehingga kebanyakan dari mereka menggunakan model UTXO, lagipula, bukti penipuan berbasis UTXO sangat sederhana dan mudah diterapkan (Bahan bakar, skema Rollup pertama yang meluncurkan bukti penipuan, didasarkan pada UTXO)
Penyimpanan Data &; Keluar dari Game****
Tentu saja, skenario yang disebutkan di atas di mana bukti penipuan dapat berlaku hanya ditetapkan ketika DA / rilis data valid. Jika sequencer menahan data dan tidak mempublikasikan blok penuh off-chain, node Plasma tidak akan dapat mengkonfirmasi apakah header blok pada Layer 1 valid, dan tentu saja tidak akan dapat mempublikasikan bukti penipuan dengan lancar.
Pada saat ini, sequencer dapat mencuri aset pengguna, seperti mentransfer semua koin dari akun A ke akun B, kemudian mentransfer uang dari akun B ke C, dan akhirnya memulai penarikan atas nama C. Akun B dan C dimiliki oleh sequencer, dan transfer B->C tidak berbahaya bahkan jika dipublikasikan ke publik.** Tetapi sequencer dapat menahan data transfer A->B yang tidak valid, dan orang tidak dapat membuktikan bahwa ada masalah dengan sumber aset B dan C** (untuk membuktikan bahwa sumber aset B bermasalah, perlu untuk menunjukkan bahwa tanda tangan digital “Txn tertentu yang ditransfer ke B” salah).
Solusi Plasma berbasis UTXO ditargetkan oleh fakta bahwa siapa pun yang memulai penarikan harus menyerahkan riwayat lengkap aset, meskipun ada lebih banyak perbaikan nanti. Namun, jika itu adalah solusi Plasma yang kompatibel dengan EVM, itu akan lemah di area ini. Karena jika Txn terkait kontrak terlibat, akan ada biaya besar dalam memverifikasi proses transisi negara pada rantai, sehingga sulit untuk menerapkan skema verifikasi untuk validitas penarikan dengan mendukung model alamat akun dan kontrak pintar Plasma.
Selain topik di atas, apakah itu Plasma berbasis UTXO atau berbasis model alamat akun, pemotongan data dapat menyebabkan kepanikan karena Anda tidak tahu transaksi apa yang dilakukan sequencer. ** Node plasma akan menemukan sesuatu yang salah, tetapi mereka tidak akan dapat mempublikasikan bukti penipuan karena sequencer Plasma tidak akan mengirimkan data yang diperlukan untuk bukti penipuan.
Saat ini, orang hanya dapat melihat header blok yang sesuai, tetapi mereka tidak tahu apa yang ada di blok tersebut, dan mereka tidak tahu seperti apa aset akun mereka, jadi mereka secara kolektif akan memulai pernyataan penarikan dan mencoba menarik diri dengan Bukti Merkle yang sesuai dengan blok historis, **memicu skenario ekstrem yang disebut “Exit Game”, yang akan menyebabkan “penyerbuan”, yang akan membuat Layer 1 sangat padat, dan masih akan menyebabkan aset beberapa orang rusak ** (Orang yang tidak menerima notifikasi node jujur atau tidak menggesek Twitter tidak akan tahu bahwa sequencer mencuri koin.)
Oleh karena itu, Plasma adalah solusi penskalaan Layer2 yang tidak dapat diandalkan, dan begitu serangan pemotongan data terjadi, itu akan memicu “Exit Game”, yang mudah bagi pengguna untuk menderita kerugian, yang merupakan alasan utama ditinggalkannya. **
Alasan mengapa plasma sulit untuk mendukung kontrak pintar ****
Setelah berbicara tentang Exit Game dan masalah retensi data, mari kita lihat mengapa Plasma sulit untuk mendukung kontrak pintar, terutama karena dua alasan:
Pertama, jika itu adalah aset kontrak Defi, siapa yang harus menariknya ke Layer 1? Karena ini pada dasarnya memigrasikan keadaan kontrak dari Layer 2 ke Layer 1, misalkan seseorang menagih 100 ETH ke kumpulan LP DEX, dan kemudian sequencer Plasma melakukan kejahatan, dan orang-orang ingin segera menariknya, saat ini, 100 ETH pengguna masih dikendalikan oleh kontrak DEX, siapa yang harus menyebutkan aset ini ke Layer 1 saat ini?
Cara terbaik untuk melakukan ini tampaknya adalah membiarkan pengguna menebus aset dari DEX terlebih dahulu, dan kemudian pengguna akan menarik uang ke L1 sendiri, tetapi masalahnya adalah sequencer Plasma telah melakukan sesuatu yang buruk dan dapat menolak permintaan pengguna kapan saja.
Jadi, bagaimana jika kita mengatur Pemilik untuk kontrak DEX terlebih dahulu, memungkinkan dia untuk menempatkan aset kontrak pada L1 jika terjadi keadaan darurat? Jelas, ini akan memberikan pemilik kontrak kepemilikan aset publik, dan dia dapat menempatkan aset ini di L1 kapan saja dan melarikan diri, bukankah itu mengerikan?
Jelas, apa yang harus dilakukan dengan “properti publik” yang didominasi oleh kontrak Defi ini adalah guntur besar. ** Ini sebenarnya melibatkan masalah distribusi kekuasaan publik, yang Xiangma sebelumnya telah bicarakan dalam sebuah wawancara dengan “Sulit bagi rantai publik berkinerja tinggi untuk melakukan hal-hal baru, dan kontrak pintar melibatkan distribusi kekuasaan”.
Kedua, jika kontrak tidak diizinkan untuk memigrasikan statusnya, ia akan menderita kerugian besar, dan jika kontrak diizinkan untuk memigrasikan statusnya ke Layer 1, akan ada penarikan ganda yang sulit diselesaikan dengan bukti penipuan Plasma:
Misalnya, mari kita asumsikan bahwa Plasma mengadopsi model alamat akun Ethereum, mendukung kontrak pintar, memiliki mixer koin, saat ini menyetor 100 ETH, dan pemilik mixer koin dikendalikan oleh Bob;
Katakanlah Bob menarik 50 ETH dari mixer di blok 100. Setelah itu, Bob memulai pernyataan penarikan dan melewati 50 ETH ke Layer 1;
Setelah itu, Bob menggunakan snapshot dari status kontrak masa lalu (misalnya, blok 70) untuk memigrasikan status masa lalu mixer ke Layer 1, yang juga akan melewati 100 ETH yang “pernah dimiliki” mixer ke Layer 1.
Jelas, ini adalah “penarikan ganda” yang khas, yang merupakan pengeluaran ganda. **150 ETH disebutkan oleh Bob ke Layer 1, tetapi pengguna jaringan Layer 2 hanya membayar 100 ETH ke mixer / Bob, dan 50 ETH ditarik begitu saja. Ini dapat dengan mudah menguras cadangan Plasma **. Secara teoritis, seseorang dapat memulai bukti penipuan untuk membuktikan bahwa keadaan kontrak mixer telah berubah setelah blok 70.
Tetapi jika Anda ingin menunjukkan bukti bahwa kontrak Mixer telah berubah setelah Blok 70, Anda harus menjalankan semua Txn yang disebutkan di atas pada rantai Ethereum untuk akhirnya membiarkan kontrak Plasma menentukan bahwa keadaan kontrak Mixer memang telah berubah (alasan mengapa begitu kompleks ditentukan oleh struktur Plasma itu sendiri). Jika jumlah Txn begitu besar, bukti penipuan tidak akan dipublikasikan di Layer 1 sama sekali (itu akan melebihi batas gas untuk satu blok Ethereum).
Secara teoritis, dalam skenario pengeluaran ganda di atas, tampaknya Anda hanya perlu mengirimkan snapshot dari keadaan mixer saat ini (yang sebenarnya adalah bukti Merkle yang sesuai dengan StateRoot), tetapi pada kenyataannya, karena Plasma tidak mempublikasikan data transaksi pada rantai, kontrak tidak dapat menentukan apakah snapshot dari keadaan yang Anda kirimkan valid. **Ini karena sequencer itu sendiri dapat memulai penyimpanan data, mengirimkan snapshot status yang tidak valid, dan dengan jahat menunjukkan penarikan apa pun. **
Misalnya, ketika Anda menyatakan bahwa Anda memiliki 50 ETH di akun Anda dan memulai penarikan, sequencer dapat secara pribadi menghapus akun Anda ke 0, dan kemudian memulai pemotongan data, mengirim StateRoot yang tidak valid ke rantai, dan mengirimkan snapshot status yang sesuai untuk secara salah menuduh Anda kehabisan uang di akun Anda. Pada titik ini, Anda tidak dapat membuktikan bahwa StateRoot dan State Snapshot yang dikirimkan oleh sequencer tidak valid, karena ia memulai penyimpanan data, dan Anda tidak mendapatkan cukup data yang diperlukan untuk membuktikan penipuan. **
Untuk mencegah hal ini, simpul Plasma juga memutar ulang riwayat transaksi selama periode ini ketika menyajikan snapshot keadaan untuk membuktikan bahwa seseorang memiliki pengeluaran ganda, yang mencegah sequencer menahan data untuk mencegah orang lain menarik diri. Di Rollup, jika Anda mengalami penarikan ganda yang disebutkan di atas, Anda tidak perlu memutar ulang transaksi historis secara teori, karena Rollup tidak memiliki masalah pemotongan data dan akan “memaksa” sequencer untuk mempublikasikan data DA pada rantai. **Sequencer rollup yang mengirimkan snapshot StateRoot-state yang tidak valid akan gagal validasi kontrak (ZK Rollup) atau akan segera ditantang (OP Rollup).
Bahkan, selain contoh mixer koin yang disebutkan di atas, skenario seperti kontrak multi-tanda tangan juga dapat menyebabkan penarikan ganda pada jaringan Plasma. Bukti penipuan tidak efisien dalam menangani skenario seperti itu. **Situasi ini dianalisis dalam Penelitian ETH.
Singkatnya, karena skema Plasma tidak kondusif untuk kontrak pintar dan pada dasarnya tidak mendukung migrasi status kontrak ke Lapisan 1, Plasma arus utama harus memilih UTXO atau mekanisme serupa, karena UTXO tidak memiliki masalah konflik kepemilikan aset, dan dapat mendukung bukti penipuan (ukurannya jauh lebih kecil), tetapi dengan biaya skenario aplikasi tunggal, pada dasarnya hanya dapat mendukung transfer atau pertukaran buku pesanan.
Selain itu, karena fraud proof itu sendiri memiliki ketergantungan yang kuat pada data DA, maka akan sulit untuk mencapai sistem fraud proof yang efisien jika lapisan DA tidak dapat diandalkan. Namun, penanganan masalah DA Plasma terlalu sederhana untuk menyelesaikan masalah serangan pemotongan data, dan dengan munculnya Rollup, Plasma perlahan-lahan memudar dari sejarah. **