Oktober lalu, Robin Linus dari Zerosync memberikan sesuatu yang mengejutkan dengan BitVM. Salah satu kritik paling lama terhadap Bitcoin adalah tidak mungkin mengembangkan program sewenang-wenang untuk mengontrol bagaimana uang dibelanjakan atau dikunci. Bitcoin memiliki kemampuan program yang sangat terbatas dalam bahasa skripnya dan primitif yang tersedia sangat terbatas. Anda dapat memverifikasi tanda tangan, Anda dapat mengunci waktu sesuatu, Anda dapat memanipulasi data dalam beberapa cara sederhana, tapi itu saja.
Anda dapat memprogram Bitcoin UTXO untuk meminta verifikasi tanda tangan, verifikasi timelock, dll. Namun, Anda tidak dapat memprogramnya untuk membuka kunci berdasarkan kondisi yang sewenang-wenang. Wawasan Robin dengan BitVM adalah satu-satunya elemen fundamental dalam bidang ilmu komputer bisa ditegakkan dalam skrip Bitcoin: a gerbang NAND, salah satu prinsip dasar komputasi pada tingkat fisik/listrik. Setiap perhitungan yang mungkin dapat dibuat dari gerbang NAND.
Script sebenarnya dapat memverifikasi gerbang NAND berkat trik cerdas dengan OP_BOOLAND dan OP_NOT. OP_BOOLAND adalah operasi AND, kebalikan dari NAND. OP_NOT mengambil nilai biner 1 atau 0 dan membalikkannya. Ini bersama-sama memungkinkan Anda untuk benar-benar memaksakan satu operasi NAND secara langsung di skrip. Dikombinasikan dengan hashlock, skrip gerbang NAND dapat dibuat di mana setiap bidang input dan output memiliki dua kemungkinan hashlock untuk “membuka” jalur output tersebut, masing-masing mendorong 1 atau 0 ke tumpukan untuk membuka kunci NAND untuk menjalankan operasi. Setiap skrip juga memiliki jalur yang dapat Anda bagikan keduanya Jika Anda mengurangi preseden menjadi nilai satu bit, Anda dapat segera mengklaim uang tersebut. Ini berarti bahwa sekali seseorang telah memutuskan apa yang akan dimasukkan ke dalam gerbang NAND, mereka tidak dapat berubah pikiran tanpa kehilangan uang.
Sejumlah besar skrip gerbang NAND semuanya dapat dikompresi menjadi pohon akar tunggang, dan begitu seseorang berkomitmen untuk memasukkan nilai bit off-chain ke dalam penghitungan tersebut, pihak lain dapat menantang mereka untuk membuktikannya di setiap langkah penghitungan. Itu dijalankan dengan benar pada rantai. Dalam setiap “tantangan”, pihak yang ditantang dapat membuktikan bahwa gerbang individu telah dihitung dengan benar, jika tidak, pihak lain dapat mengklaim dana setelah batas waktu habis. Bolak-balik seperti ini ketika terjadi perselisihan perhitungan menjamin pihak yang curang pada akhirnya akan tertangkap dan kehilangan uang.
Keterbatasan
Batasan utama BitVM adalah hanya orang-orang yang terlibat dalam pembuatan kontrak BitVM yang dapat berpartisipasi dan perannya sangat terbatas. Ada pembukti, orang yang mengklaim bagaimana penghitungan terjadi di luar rantai, dan pemverifikasi, orang yang dapat menantang penghitungan dan memaksanya untuk dibuktikan secara on-chain jika pembukti melakukan penghitungan di luar rantai. Rantai tidak selesai atau mencoba berbohong tentang hasilnya.
Salah satu alasan pengembangan BitVM adalah untuk membuat koneksi dua arah ke sidechain atau sistem lain. Skema ini memberikan primitif yang sangat kuat dalam kasus penggunaan ini: kemampuan untuk benar-benar memaksa penyediaan dana kepada satu pihak atau pihak lain berdasarkan kebenaran perhitungan sewenang-wenang, yaitu pemeriksaan validitas apakah pegout valid menurut sidechain aturan . Masalahnya adalah hanya orang yang memegang kunci BitVM UTXO yang benar-benar dapat mengatakan “Hei, kamu curang!” kepada seseorang dan berpartisipasi dalam protokol tantangan. Hal ini pada akhirnya membuat sistem tetap dapat dipercaya.
Keterbatasan lainnya adalah protokol tantangan-responsnya bisa sangat panjang. Jika seseorang menyadari bahwa hasil penghitungan akan menyebabkan mereka kehilangan uang dan menjadi tidak responsif, verifikator pada dasarnya harus menebak di mana masing-masing gerbang NAND dalam penghitungan berada di mana verifikator harus berada, dan kedua arketipe mengungkapkan sesuatu yang akan memberi pemeriksa sarana. Hingga gerbang spesifik dalam rantai tersebut ditantang, validator masih dapat merespons dan menunda tantangan dengan tepat. Hal ini bisa sangat memakan waktu dan tidak efisien.
Sejak proposal awal, beberapa perbaikan telah dilakukan pada desain ini untuk memungkinkan beberapa verifikator ada dalam sistem dengan verifikator tersebut, sehingga menciptakan model kepercayaan 1-of-n di mana hanya satu verifikator yang diperlukan untuk mendeteksi verifikator yang tidak jujur untuk menantang . Namun, hal ini memerlukan beberapa instans BitVM untuk dibuat secara paralel dan oleh karena itu meningkatkan inefisiensi dibandingkan desain dua pihak yang asli.
BitVM 2
Robin baru-baru ini mengusulkan skema desain untuk BitVM 2. Tujuan dari skema ini adalah untuk membuat beberapa kompromi dibandingkan dengan desain aslinya untuk mengurangi dua kelemahan utamanya. BitVM 2 memperpendek durasi protokol tantangan/respons dari serangkaian transaksi yang tidak terbatas, yang dalam kasus terburuk dapat mencakup beberapa lusin, menjadi dua putaran dalam protokol tantangan/respons. Selain itu, penggunaan output koneksi dimungkinkan siapa pun bertindak sebagai pemeriksa. Seseorang yang terlibat dalam pendirian BitVM tidak perlu menjadi anggota untuk menantang validator yang tidak jujur.
Pergeseran mendasarnya adalah beralih dari penggunaan gerbang NAND skrip secara langsung untuk mengimplementasikan jejak komputasi mentah secara langsung, dan menuju penggunaan gerbang ini untuk mengimplementasikan pemverifikasi bukti tanpa pengetahuan SNARK umum (salah satu primitif inti yang ingin diimplementasikan Robin dengan BitVM dari awal). ). Alih-alih memasukkan input mentah ke dalam jejak komputasi mentah dan mengeksekusinya secara gerbang demi gerbang dalam skrip Tapleaf mereka sendiri, input instans BitVM 2 hanya akan berupa input tanpa pengetahuan yang digabungkan dengan output komputasi yang dikonfirmasi.
Selain mengabstraksi implementasi komputasi dengan ZKP, skrip Tapleaf diperluas secara besar-besaran dari satu gerbang NAND per daun ke seluruh sub-fungsi pemverifikasi ZKP. Alih-alih protokol tantangan-respons mengandalkan pemverifikasi yang menebak gerbang NAND mana yang coba dicurangi oleh pemverifikasi, dan secara selektif menantang satu gerbang, pemverifikasi dapat membuktikan keluaran dari seluruh subfungsi tidak valid sesuai dengan masukannya.
Sama seperti BitVM 1, kontrak dinegosiasikan terlebih dahulu menggunakan transaksi yang telah ditandatangani sebelumnya dan skrip fork. Dana yang terkait dengan BitVM dikirim ke multisig n-of-n yang menandatangani dua kemungkinan transaksi eksekusi, satu ketika tidak ada tantangan yang terjadi dan satu lagi ketika tantangan terjadi. Untuk memulai proses pelaksanaan kontrak, auditor memulai transaksi kick-off. Transaksi awal ini berkomitmen pada nilai keluaran “y” yang diklaim dihasilkan oleh komputasi, dan mencakup tiga keluaran: keluaran dengan waktu terkunci yang disertakan dalam transaksi eksekusi tanpa tantangan, keluaran konektor A, dan keluaran konektor B, keduanya juga diterbitkan dalam transaksi tanpa tantangan.
Di sini desainnya memungkinkan siapa saja untuk berpartisipasi sebagai penguji. Output konektor A memiliki transaksi kedua yang telah ditandatangani sebelumnya yang dapat menerbitkannya, transaksi tantangan. Ini adalah transaksi yang telah ditandatangani sebelumnya yang membayar obligasi dalam Bitcoin kepada validator, tetapi keluaran konektor A tidak cukup untuk mendanainya. Secara harfiah, siapa pun dapat menambahkan input mereka sendiri untuk mendanai transaksi dan mengeluarkan Output Konektor A, sehingga membatalkan transaksi penarikan tanpa tantangan untuk validator (ada salah satu input yang tidak memerlukan tantangan).
Hal ini memaksa jalur tantangan. Output Konektor B juga dapat dikeluarkan ke output setiap subfungsi di seluruh kontrak BitVM 2 melalui transaksi yang telah ditandatangani sebelumnya, transaksi Assertion. Hal ini memerlukan transaksi besar dengan banyak data, namun perlu diingat bahwa keluaran akhir “y” yang diklaim validator sebagai komputasi yang dihasilkan telah dilakukan pada transaksi awal. Hal ini menciptakan dua jalan keluar. Salah satunya adalah masalah yang terkunci waktu, yang lainnya adalah masalah konektor C. Kedua masalah ini, selain dana awal yang dikomit, semuanya dikeluarkan dalam transaksi penarikan kedua yang berhasil untuk validator setelah kunci waktu.
Konektor Output C juga dapat dikeluarkan oleh siapa saja yang dapat membuktikan bahwa output sub-fungsi dalam kontrak BitVM 2 menghasilkan output yang tidak valid. Hal ini memerlukan transaksi yang sangat besar karena skrip yang diperlukan untuk membuktikan seluruh bagian penghitungan BitVM salah dan ekstensif, namun dalam transaksi tunggal ini validator dapat mengklaim koin dalam keluaran konektor dengan bukti yang valid. Hal ini membuat transaksi penarikan kedua tidak valid untuk validator dan koin secara efektif dibakar. Satu-satunya cara untuk memulihkannya pada saat ini adalah dengan meninggalkan auditor semua validator dalam multisig pendanaan n-of-n asli semuanya bekerja sama untuk memulihkannya. Output konektor B dalam transaksi kickoff juga dapat dihapus setelah waktu tunggu yang jauh lebih lama daripada penarikan tanpa tantangan untuk membatalkan transaksi tanpa tantangan dan pernyataan serta pembakaran koin yang terikat.
Hal ini mengurangi rantai transaksi yang berpotensi menggelikan dalam proposal BitVM asli untuk menerapkan hasil kontrak yang benar menjadi maksimal empat transaksi (walaupun memang transaksinya sangat besar), sekaligus membuat kumpulan verifikasi untuk instans BitVM 2 menjadi benar-benar siapa pun yang memiliki Bitcoin, yang akan membiayai transaksi tantangan.
BitVM 2 bisa menjadi terobosan signifikan dalam gelombang rollup dan Layer 2 lainnya yang bertujuan menggunakan BitVM sebagai koneksi dua arah. Operator rollup (validator di BitVM) dapat menggunakan dananya sendiri untuk menutupi penarikan dari pengguna yang telah terhubung ke sistem dan secara berkala menarik dana ini dari BitVM sebagai kompensasinya sendiri. Setiap Pengguna atau pihak yang berkepentingan kemudian dapat dihukum dengan pemusnahan dana mereka jika mereka dapat membuktikan bahwa operator tidak memproses semua penarikan dengan benar.
Penting untuk dicatat bahwa keamanan instans BitVM 2 pada akhirnya dijamin oleh pemegang kunci n-of-n, meskipun orang yang tidak berpartisipasi masih dapat menantang pemverifikasi sebagai pemverifikasi. Namun, karena validator memiliki jalan keluar yang efektif ketika tidak ada penantang, dan siapa pun dapat mendanai transaksi tantangan untuk bertindak sebagai validator, multisig pendanaan n-of-n dapat diikuti dengan upacara penyiapan dan penghapusan kunci yang mendahului peluncuran Zcash serupa untuk meningkatkan keamanannya.
BitVM 2 kemungkinan akan menjadi terobosan signifikan dalam hal meningkatkan fleksibilitas dan model kepercayaan dari pasak dua arah yang memanfaatkan BitVM. Sekali lagi Robin telah membuktikan bahwa dia adalah seorang pesulap sejati.