Sumber: Bitcoin Magazine; Terjemahan: Wuzhu, Jinse Keuangan Emas
Rollups baru-baru ini telah menjadi fokus perluasan BTC, menjadi sesuatu yang benar-benar mengambil perhatian dari Jaringan Lighting, dalam hal perhatian yang lebih luas. Rollups bertujuan untuk menjadi lapisan kedua off-chain yang tidak terbatas atau terbatas oleh Likuiditas inti Jaringan Lighting, yaitu pengguna akhir perlu memiliki dana yang dialokasikan (atau ‘dipinjam’) sebelumnya agar dapat menerima uang, atau Node perantara perlu memiliki saldo saluran untuk memfasilitasi aliran pembayaran dari pengirim ke penerima secara keseluruhan.
Sistem-sistem ini awalnya dijalankan di Ethereum dan sistem Turing Complete lainnya, tetapi baru-baru ini fokus telah beralih ke menggabungkannya ke dalam blockchain berbasis UTXO (seperti BTC). Artikel ini tidak bermaksud membahas implementasi saat ini di BTC, tetapi membahas fitur idealisasi Rollup yang telah lama dicari, yang tergantung pada kemampuan untuk secara langsung memverifikasi Zero-Knowledge Proof (ZKP) di BTC yang saat ini tidak didukung.
Arsitektur dasar dari Roll adalah sebagai berikut: satu akun tunggal (UTXO di Bitcoin) menyimpan saldo semua pengguna dalam Rollup. UTXO ini berisi janji yang ada dalam bentuk root Merkle tree, berjanji atas semua saldo saat ini akun yang ada di Rollup. Semua akun ini diotorisasi dengan Kunci Publik/Kunci Pribadi, sehingga untuk melakukan pengeluaran off-chain, pengguna masih harus menandatangani beberapa konten menggunakan Kunci Rahasia. Bagian dari struktur ini memungkinkan pengguna untuk keluar kapan saja tanpa izin, hanya dengan membuat bukti transaksi bahwa akun mereka adalah bagian dari Merkle tree, mereka dapat keluar dari Rollup secara sepihak tanpa perlu izin dari operator.
Operator Rollup harus menyertakan ZKP dalam transaksi untuk memperbarui root merkle saldo akun on-chain selama proses transaksi off-chain. Tanpa ZKP ini, transaksi akan menjadi tidak valid dan tidak dapat dimasukkan ke dalam Blok. Bukti ini memungkinkan orang untuk memverifikasi apakah semua perubahan off-chain akun telah mendapat otorisasi yang tepat dari pemilik akun dan apakah operator tidak dengan jahat memperbarui saldo untuk mencuri dana pengguna atau dengan tidak jujur mengalokasikannya ulang ke pengguna lain.
Masalahnya, jika hanya akar pohon merkle yang diterbitkan di on-chain, pengguna dapat melihat dan mengaksesnya, bagaimana mereka menempatkan cabang mereka di dalam pohon sehingga dapat keluar kapan saja tanpa izin?
Dalam Rollup yang tepat, setiap kali konfirmasi transaksi off-chain baru dan status Rollup akun berubah, informasinya langsung dimasukkan ke dalam blockchain. Bukan seluruh pohon, itu terlalu absurd, tetapi informasi yang diperlukan untuk membangun kembali pohon. Dalam implementasi sederhana, ringkasan akun Rollup akan mencakup saldo dan akun hanya ditambahkan dalam transaksi Rollup yang diperbarui.
Dalam implementasi yang lebih canggih, gunakan perbedaan saldo akun. Pada dasarnya ini adalah ringkasan tentang akun mana yang menambah atau mengurangi dana selama proses pembaruan. Ini memungkinkan setiap pembaruan Rollup hanya berisi perubahan saldo akun yang terjadi. Kemudian, pengguna dapat dengan mudah memindai rantai dan ‘menghitung ulang’ dari awal Rollup untuk menentukan status saldo akun saat ini, yang memungkinkan mereka membangun kembali pohon Merkle saldo saat ini.
Ini akan menghemat biaya dan ruang Blok secara signifikan (sehingga menghemat dana), sambil tetap memungkinkan pengguna untuk memastikan informasi yang diperlukan untuk keluar secara satu arah. Aturan rollup meminta data ini dimasukkan dalam rollup resmi yang disediakan oleh Blokchain kepada pengguna, yaitu transaksi yang tidak termasuk ringkasan akun atau perbedaan akun dianggap sebagai transaksi yang tidak valid.
Salah satu cara lain untuk menangani masalah ketersediaan data penarikan pengguna adalah dengan meletakkan data di tempat lain di luar Blok. Ini memperkenalkan masalah yang halus, rollup masih perlu memastikan data tersedia di tempat lain. Secara tradisional, Blok lain digunakan untuk tujuan ini, dirancang khusus sebagai lapisan ketersediaan data untuk sistem seperti rollup.
Ini menciptakan dilema keamanan yang sama kuatnya. Ketika data dipublikasikan langsung ke BTCBlok chain, aturan Konsensus dapat menjamin bahwa itu benar-benar benar. Namun, ketika itu dipublikasikan ke sistem eksternal, yang terbaik yang dapat dilakukannya adalah memverifikasi bukti SPV, yaitu data telah dipublikasikan ke sistem lain.
Ini membutuhkan bukti bahwa data ada di on-chain lainnya, ini pada akhirnya adalah sebuah masalah Mesin Oracle. Blok Bitcoin tidak dapat sepenuhnya memverifikasi apa pun yang terjadi di luar Blok-on-chainnya sendiri, yang terbaik yang dapat dilakukannya adalah memverifikasi ZKP. Namun, ZKP tidak dapat memverifikasi apakah Blok yang mengandung data rollup benar-benar disiarkan secara publik setelah dihasilkan. Ia tidak dapat memverifikasi apakah informasi eksternal benar-benar tersedia untuk semua orang.
Ini membuka pintu untuk serangan penahanan data, yaitu menciptakan komitmen terhadap data yang dipublikasikan dan menggunakannya untuk memajukan rollup, tetapi data tersebut sebenarnya tidak tersedia. Ini menyebabkan pengguna tidak dapat menarik dana. Satu-satunya solusi yang benar-benar adalah bergantung sepenuhnya pada nilai dan struktur insentif sistem di luar BTC.
Ini menimbulkan dilema bagi rollup. Ketika masalah ketersediaan data terjadi, ada dua pilihan dasar yaitu mempublikasikan data ke blockchain BTC atau tempat lain. Pilihan ini memiliki dampak signifikan pada keamanan, kedaulatan, dan skalabilitas rollup.
Di satu sisi, menggunakan BTCBlok Chain sebagai lapisan ketersediaan data akan menetapkan batasan maksimum yang keras untuk skalabilitas rollup. Ruang Blok terbatas, ini menetapkan batasan untuk jumlah rollup yang dapat ada sekaligus dan total transaksi yang dapat diproses di luar rantai. Setiap pembaruan rollup memerlukan ruang Blok yang sebanding dengan jumlah akun yang mengalami perubahan saldo sejak pembaruan sebelumnya. Teori informasi hanya memungkinkan data dikompresi hingga batas tertentu, pada titik ini, tidak ada potensi ekspansi lebih lanjut.
Di sisi lain, menggunakan lapisan yang berbeda untuk mencapai ketersediaan data akan menghilangkan batasan keras dari peningkatan skalabilitas, tetapi juga membawa isu keamanan dan kedaulatan baru. Dalam Rollup yang menggunakan BTC untuk mencapai ketersediaan data, jika data yang ingin diekstraksi oleh pengguna tidak dipublikasikan secara otomatis ke blockchain, maka status Rollup tidak akan berubah. Dengan menggunakan Validiums, jaminan ini sepenuhnya bergantung pada kemampuan sistem eksternal yang digunakan untuk melawan penipuan dan menyembunyikan data.
Sekarang, produsen Blok di sistem ketersediaan data eksternal dapat menculik dana pengguna BTCRollup dengan memproduksi Blok daripada secara efektif menyiarkan Blok tersebut, agar data dapat tersedia.
Jadi, jika kita benar-benar mencapai implementasi Rollup yang ideal di BTC, dan benar-benar mewujudkan penarikan pengguna satu arah, bagaimana hal itu akan terjadi?