Untuk algoritma f, dua peserta yang saling tidak percaya, Alice dan Bob, dapat membangun kepercayaan dengan cara berikut:
Untuk yang di atas 2, 3, dan 4, biarkan x menjadi transaksi Layer2 dan keadaan awal, f menjadi program konsensus Layer2, dan y menjadi keadaan akhir transaksi, sesuai dengan solusi skala Layer2 blockchain. Di antaranya:
Tabel 1: Cara Membangun Kepercayaan
Selain itu, penting untuk dicatat:
Saat ini, berkat kontrak pintar yang berbasis Turing lengkap dari Solidity, teknologi bukti penipuan dan bukti validitas secara luas digunakan dalam skala Layer2 Ethereum. Namun, di bawah paradigma Bitcoin, terbatas oleh fungsionalitas opcode terbatas Bitcoin, 1000 elemen tumpukan, dan pembatasan lainnya, aplikasi teknologi ini masih dalam tahap eksplorasi. Artikel ini merangkum keterbatasan dan teknologi terobosan di bawah paradigma Bitcoin dalam konteks skala Layer2 Bitcoin, mempelajari teknologi bukti validitas dan bukti penipuan, dan menguraikan teknologi segmentasi skrip yang unik di bawah paradigma Bitcoin.
Ada banyak keterbatasan dalam paradigma Bitcoin, namun berbagai metode atau teknik cerdik dapat digunakan untuk mengatasi keterbatasan tersebut. Misalnya, komitmen bit dapat menembus keterbatasan stateless UTXO, taproot dapat menembus keterbatasan ruang skrip, output konektor dapat menembus keterbatasan metode pengeluaran UTXO, dan kontrak dapat menembus keterbatasan prapenandatanganan.
Bitcoin mengadopsi model UTXO, di mana setiap UTXO terkunci dalam skrip penguncian yang menentukan kondisi yang harus dipenuhi untuk menghabiskan UTXO tersebut. Skrip Bitcoin memiliki batasan-batasan berikut:
Saat ini, skrip Bitcoin benar-benar stateless. Saat mengeksekusi skrip Bitcoin, lingkungan eksekusinya diatur ulang setelah setiap skrip. Hal ini menyebabkan ketidakmampuan skrip Bitcoin untuk secara native mendukung skrip kendala 1 dan 2 yang memiliki nilai x yang sama. Namun, masalah ini dapat dielakkan melalui beberapa metode, dengan ide intinya adalah menandatangani nilai dengan cara tertentu. Jika tanda tangan dapat dibuat untuk suatu nilai, dimungkinkan untuk mencapai skrip Bitcoin stateful. Artinya, dengan memeriksa tanda tangan nilai x dalam skrip 1 dan 2, dapat ditegakkan bahwa nilai x yang sama digunakan di kedua skrip. Jika ada tanda tangan yang bertentangan, artinya dua nilai berbeda ditandatangani untuk variabel x yang sama, penalti dapat diterapkan. Solusi ini dikenal sebagai komitmen bit.
Prinsip komitmen bit relatif sederhana. Bit mengacu pada mengatur dua nilai hash yang berbeda, hash0 dan hash1, untuk setiap bit dalam pesan yang akan ditandatangani. Jika nilai bit yang akan ditandatangani adalah 0, preimage0 dari hash0 diungkapkan; jika nilai bit yang akan ditandatangani adalah 1, preimage1 dari hash1 diungkapkan.
Mengambil pesan bit tunggal m ∈{0,1} sebagai contoh, skrip kunci bukaan komitmen bit yang sesuai hanyalah beberapa preimage: jika nilai bit adalah 0, skrip bukaan kunci yang sesuai adalah preimage0 - “0xfa7fa5b1dea37d71a0b841967f6a3b119dbea140”; jika nilai bit adalah 1, skrip bukaan kunci yang sesuai adalah preimage1 - “0x47c31e611a3bd2f3a7a42207613046703fa27496”. Oleh karena itu, dengan komitmen bit, dimungkinkan untuk menembus batasan tanpa keadaan UTXO dan mencapai skrip Bitcoin yang berkeadaan, sehingga memungkinkan berbagai fitur baru yang menarik.
OP_HASH160
OP_DUP
0xf592e757267b7f307324f1e78b34472f8b6f46f3> // Ini adalah hash1
OP_EQUAL
OP_DUP
OP_ROT
0x100b9f19ebd537fdc371fa1367d7ccc802dc2524> // Ini adalah hash0
OP_EQUAL
OP_BOOLOR
OP_VERIFY
// Sekarang nilai komitmen bit ada di tumpukan. Entah "0" atau "1".
Saat ini, ada 2 implementasi komitmen bit:
Saat ini, perpustakaan BitVM2 mengimplementasikan tanda tangan Winternitz berdasarkan fungsi hash Blake3. Panjang tanda tangan yang sesuai dengan satu bit adalah sekitar 26 byte. Oleh karena itu, dapat terlihat bahwa memperkenalkan keadaan melalui komitmen bit membutuhkan biaya. Oleh karena itu, dalam implementasi BitVM2, pesan pertama kali di-hash untuk mendapatkan nilai hash 256 bit, dan kemudian komitmen bit dilakukan pada nilai hash untuk menghemat overhead, daripada melakukan komitmen pada setiap bit pesan asli yang lebih panjang secara langsung.
Peningkatan soft fork Bitcoin Taproot, diaktifkan pada November 2021, mencakup tiga proposal: tanda tangan Schnorr (BIP 340), Taproot (BIP 341), dan TapScript (BIP 342). Ini memperkenalkan jenis transaksi baru — transaksi Pay-to-Taproot (P2TR). Transaksi P2TR dapat menciptakan format transaksi yang lebih pribadi, fleksibel, dan terukur dengan menggabungkan keunggulan tanda tangan Taproot, MAST (Merkel Abstract Syntax Tree), dan Schnorr.
P2TR mendukung dua metode pengeluaran: pengeluaran sesuai dengan jalur kunci atau jalur skrip.
Menurut ketentuan dalam Taproot (BIP 341), saat menghabiskan melalui jalur skrip, jalur Merkle yang sesuai tidak boleh melebihi panjang maksimum 128. Ini berarti bahwa jumlah tapleaf dalam pohon tap tidak boleh melebihi 2^128. Sejak upgrade SegWit pada tahun 2017, jaringan Bitcoin mengukur ukuran blok dalam unit berat, dengan dukungan maksimum 4 juta unit berat (sekitar 4MB). Ketika output P2TR dihabiskan melalui jalur skrip, hanya perlu mengungkapkan satu skrip tapleaf, artinya blok dikemas dengan satu skrip tapleaf. Ini berarti bahwa untuk transaksi P2TR, ukuran skrip yang sesuai untuk setiap tapleaf bisa maksimal sekitar 4MB. Namun, dalam kebijakan default Bitcoin, banyak node hanya meneruskan transaksi yang lebih kecil dari 400K; transaksi yang lebih besar perlu bekerja sama dengan penambang untuk dikemas.
Kehadiran ruang skrip yang ditingkatkan oleh Taproot membuatnya lebih berharga untuk mensimulasikan operasi kriptografi seperti perkalian dan hashing menggunakan opcode yang sudah ada.
Saat membangun komputasi yang dapat diverifikasi berdasarkan P2TR, ukuran skrip yang sesuai tidak lagi terbatas pada batasan 4MB, tetapi dapat dibagi menjadi beberapa sub-fungsi yang didistribusikan di beberapa tapleaf, sehingga menembus batasan ruang skrip 4MB. Bahkan, algoritma verifier Groth16 yang diimplementasikan pada BitVM2 saat ini memiliki ukuran hingga 2GB. Namun, dapat dibagi dan didistribusikan di sekitar 1000 daun tunggang, dan dengan menggabungkannya dengan komitmen bit, konsistensi antara input dan output dari setiap sub-fungsi dapat dibatasi, memastikan integritas dan kebenaran seluruh perhitungan.
Saat ini, Bitcoin menyediakan dua metode pengeluaran asli untuk satu UTXO: pengeluaran melalui skrip atau melalui kunci publik. Oleh karena itu, selama tanda tangan kunci publik atau kondisi skrip yang benar terpenuhi, UTXO dapat dikeluarkan. Dua UTXO dapat dikeluarkan secara independen, dan tidak ada batasan yang dapat ditambahkan untuk membatasi kedua UTXO, artinya kondisi tambahan harus dipenuhi agar mereka dapat dikeluarkan.
Namun, Burak, pendiri protokol Ark, dengan cerdik memanfaatkan bendera SIGHASH untuk mencapai keluaran penghubung. Secara khusus, Alice dapat membuat tanda tangan untuk mengirimkan BTC-nya ke Bob. Namun, karena tanda tangan dapat terikat ke beberapa input, Alice dapat mengatur tanda tangannya menjadi bersyarat: tanda tangan itu valid untuk transaksi Taketx jika dan hanya jika transaksi itu mengonsumsi input kedua. Input kedua disebut penghubung, menghubungkan UTXO A dan UTXO B. Dengan kata lain, transaksi Taketx valid jika dan hanya jika UTXO B belum dihabiskan oleh Challengetx. Oleh karena itu, dengan menghancurkan keluaran penghubung, efektivitas transaksi Taketx dapat diblokir.
Gambar 1: Ilustrasi Output Konektor
Dalam protokol BitVM2, output konektor bertindak sebagai... fungsi else. Setelah output konektor dibelanjakan oleh transaksi, itu tidak dapat dibelanjakan oleh transaksi lain untuk memastikan pengeluaran eksklusifnya. Dalam penyebaran praktis, untuk memungkinkan periode tantangan-respons, UTXO tambahan dengan timelock diperkenalkan. Selain itu, output konektor yang sesuai juga dapat diatur dengan strategi pengeluaran yang berbeda sesuai kebutuhan, seperti memungkinkan pihak mana pun untuk membelanjakan dalam kasus transaksi tantangan, sementara hanya mengizinkan operator untuk membelanjakan atau mengizinkan siapa pun untuk membelanjakan setelah batas waktu untuk transaksi respons.
Saat ini, skrip Bitcoin terutama membatasi kondisi pembukaan, tanpa membatasi bagaimana UTXO dapat dikeluarkan lebih lanjut. Hal ini karena skrip Bitcoin tidak dapat membaca konten transaksi itu sendiri, yang berarti mereka tidak dapat mencapai introspeksi transaksi. Jika skrip Bitcoin dapat memeriksa konten transaksi apa pun (termasuk output), fungsionalitas kontrak dapat diwujudkan.
Implementasi kontrak saat ini dapat dibagi menjadi dua kategori:
Baik bukti validitas maupun bukti penipuan dapat digunakan untuk penskalaan Bitcoin L2, dengan perbedaan utama ditunjukkan dalam Tabel 2.
Tabel 2: Bukti Validitas vs. Bukti Penipuan
Berdasarkan komitmen bit, taproot, pra-penandatanganan, dan output penghubung, bukti penipuan berdasarkan Bitcoin dapat dikonstruksi. Berdasarkan taproot, bukti validitas berdasarkan Bitcoin juga dapat dikonstruksi dengan memperkenalkan opcode kontrak, seperti OP_CAT. Selain itu, tergantung pada apakah Bob memiliki sistem penerimaan, bukti penipuan dapat dibagi menjadi bukti penipuan berizin dan bukti penipuan tanpa izin. Dalam bukti penipuan berizin, hanya kelompok-kelompok tertentu yang dapat bertindak sebagai Bob untuk memulai tantangan, sedangkan dalam bukti penipuan tanpa izin, pihak ketiga manapun dapat bertindak sebagai Bob untuk memulai tantangan. Keamanan bukti penipuan tanpa izin lebih unggul daripada bukti penipuan berizin, mengurangi risiko kolusi di antara peserta yang diizinkan.
Berdasarkan jumlah interaksi tantangan-respons antara Alice dan Bob, bukti penipuan dapat dibagi menjadi bukti penipuan satu putaran dan bukti penipuan multi-putaran, seperti yang ditunjukkan pada Gambar 2.
Gambar 2: Bukti Penipuan Satu Putaran vs. Bukti Penipuan Multi-Putaran
Seperti yang terlihat pada Tabel 3, bukti penipuan dapat diimplementasikan melalui model interaksi yang berbeda, termasuk model interaksi satu putaran dan model interaksi multi-putaran.
Tabel 3: Interaksi Satu Putaran vs Interaksi Multi-Putaran
Dalam paradigma skala Layer 2 Bitcoin, BitVM1 mengadopsi mekanisme bukti penipuan multi-round, sementara BitVM2 menggunakan mekanisme bukti penipuan satu putaran, dan bitcoin-circle stark memanfaatkan bukti validitas. Di antara ini, BitVM1 dan BitVM2 dapat diimplementasikan tanpa membuat modifikasi apa pun pada protokol Bitcoin, sementara bitcoin-circle stark membutuhkan pengenalan opcode baru OP_CAT.
Untuk sebagian besar tugas komputasi, signet, testnet, dan mainnet Bitcoin tidak dapat sepenuhnya merepresentasikan skrip 4MB, sehingga diperlukan penggunaan teknologi pemisahan skrip - yaitu, membagi skrip komputasi lengkap menjadi bagian-bagian yang lebih kecil dari 4MB, yang didistribusikan di berbagai tapleaf.
Seperti yang ditunjukkan dalam Tabel 3, bukti penipuan multi-putaran cocok untuk skenario di mana ada keinginan untuk mengurangi perhitungan arbitrase on-chain dan/atau di mana tidak mungkin untuk menentukan segmen perhitungan bermasalah dalam satu langkah. Bukti penipuan multi-putaran, sesuai dengan namanya, membutuhkan beberapa putaran interaksi antara pembuktian dan verifikasi untuk menemukan segmen perhitungan yang bermasalah, diikuti dengan arbitrase berdasarkan segmen yang diidentifikasi.
White paper BitVM awal Robin Linus (biasa disebut BitVM1) menggunakan bukti penipuan multi-round. Dengan asumsi setiap periode tantangan berlangsung seminggu dan menggunakan metode pencarian biner untuk menemukan segmen komputasi bermasalah, periode tanggapan tantangan on-chain untuk Verifier Groth16 bisa berlangsung hingga 30 minggu, mengakibatkan ketepatan waktu yang buruk. Meskipun saat ini ada tim yang sedang meneliti metode pencarian n-ary yang lebih efisien daripada pencarian biner, ketepatan waktunya masih jauh lebih rendah dibandingkan dengan siklus 2 minggu dalam bukti penipuan satu putaran.
Saat ini, bukti penipuan multi-round dalam paradigma Bitcoin menggunakan tantangan berizin, sementara bukti penipuan satu putaran telah mencapai metode tantangan tanpa izin, mengurangi risiko kolusi di antara peserta dan dengan demikian meningkatkan keamanan. Untuk tujuan ini, Robin Linus sepenuhnya memanfaatkan keunggulan Taproot untuk mengoptimalkan BitVM1. Bukan hanya jumlah putaran interaksi yang berkurang menjadi satu, tetapi metode tantangan juga diperluas menjadi pendekatan tanpa izin, meskipun dengan biaya peningkatan komputasi arbitrase on-chain.
Dalam model ini, verifikasi bukti penipuan dapat diselesaikan melalui satu interaksi antara pemberi bukti dan pemeriksa. Pemeriksa hanya perlu memulai satu tantangan, dan pemberi bukti hanya perlu merespons sekali. Dalam respons ini, pemberi bukti harus memberikan bukti yang menyatakan bahwa komputasi mereka benar. Jika pemeriksa dapat menemukan inkonsistensi dalam bukti tersebut, tantangannya berhasil; jika tidak, maka gagal. Karakteristik bukti penipuan interaktif satu putaran ditunjukkan dalam Tabel 3.
Gambar 3: Bukti Penipuan Satu Putaran
Pada 15 Agustus 2024, Robin Linus merilis white paper teknis BitVM2: Membangun Jembatan Bitcoin ke Layer Kedua, yang mengimplementasikan jembatan lintas rantai menggunakan metode bukti penipuan satu putaran yang mirip dengan yang ditunjukkan dalam Gambar 3.
OPCAT adalah bagian dari bahasa skrip asli ketika Bitcoin dirilis tetapi dinonaktifkan pada tahun 2010 karena kerentanan keamanan. Namun, komunitas Bitcoin telah mendiskusikan reaktivasi OPCAT selama bertahun-tahun. OPCAT sekarang telah diberi nomor 347 dan telah diaktifkan pada signet Bitcoin.
Fungsi utama OP_CAT adalah menggabungkan dua elemen dalam tumpukan dan mendorong hasil gabungan kembali ke tumpukan. Fungsionalitas ini membuka kemungkinan untuk kontrak dan Verifier STARK di Bitcoin:
Meskipun beban komputasi yang diperlukan untuk menjalankan algoritma verifier yang sesuai untuk memverifikasi bukti setelah bukti SNARK / STARK jauh lebih kecil daripada yang diperlukan untuk langsung menjalankan perhitungan asli f, jumlah skrip yang diperlukan saat mengonversinya untuk mengimplementasikan algoritma verifier dalam skrip Bitcoin masih sangat besar. Saat ini, berdasarkan opcode Bitcoin yang ada, ukuran skrip verifier Groth16 yang dioptimalkan dan ukuran skrip verifier Fflonk masih lebih besar dari 2GB. Namun, ukuran satu blok Bitcoin hanya 4MB, sehingga tidak mungkin untuk menjalankan seluruh skrip verifikator dalam satu blok. Namun, sejak upgrade Taproot, Bitcoin mendukung eksekusi skrip dengan tapleaf, memungkinkan skrip verifier dibagi menjadi beberapa bagian, dengan masing-masing potongan berfungsi sebagai tapleaf untuk membangun taptree. Konsistensi nilai antara potongan dapat dipastikan melalui komitmen bit.
Dengan adanya kontrak OP_CAT, STARK Verifier dapat dibagi menjadi beberapa transaksi standar yang lebih kecil dari 400KB, memungkinkan seluruh verifikasi bukti validitas STARK diselesaikan tanpa perlu berkolaborasi dengan penambang.
Bagian ini berfokus pada teknologi split yang relevan dari skrip Bitcoin dalam kondisi yang ada tanpa memperkenalkan atau mengaktifkan opcode baru.
Ketika melakukan pemisahan skrip, dimensi informasi berikut harus seimbang:
Saat ini, metode pemisahan skrip dapat dibagi menjadi tiga kategori utama berikut:
Misalnya, setelah beberapa putaran pengoptimalan, ukuran skrip verifikator Groth16 berkurang dari sekitar 7GB menjadi sekitar 1,26GB. Selain optimasi komputasi keseluruhan ini, setiap potongan juga dapat dioptimalkan secara individual untuk memanfaatkan ruang tumpukan sepenuhnya. Misalnya, dengan memperkenalkan algoritma berbasis tabel pencarian yang lebih baik dan secara dinamis memuat dan membongkar tabel pencarian, ukuran skrip setiap potongan dapat dikurangi lebih lanjut.
Biaya komputasi dan lingkungan waktu eksekusi bahasa pemrograman web2 sangat berbeda dengan skrip Bitcoin, sehingga secara sederhana menerjemahkan implementasi yang ada untuk berbagai algoritma ke dalam skrip Bitcoin tidaklah memungkinkan. Oleh karena itu, optimasi yang khusus untuk skenario Bitcoin perlu dipertimbangkan:
Artikel ini pertama-tama memperkenalkan keterbatasan skrip Bitcoin dan membahas penggunaan komitmen Bitcoin untuk mengatasi keterbatasan stateless UTXO, menggunakan Taproot untuk melewati batasan ruang skrip, menggunakan keluaran konektor untuk menghindari pembatasan metode pengeluaran UTXO, dan menggunakan kontrak untuk mengatasi keterbatasan pra-tanda tangan. Kemudian memberikan gambaran dan ringkasan komprehensif tentang karakteristik bukti penipuan dan bukti validitas, fitur bukti penipuan berizin dan tanpa izin, perbedaan antara bukti penipuan satu putaran dan multi putaran, dan teknologi pemisahan skrip Bitcoin.
Untuk algoritma f, dua peserta yang saling tidak percaya, Alice dan Bob, dapat membangun kepercayaan dengan cara berikut:
Untuk yang di atas 2, 3, dan 4, biarkan x menjadi transaksi Layer2 dan keadaan awal, f menjadi program konsensus Layer2, dan y menjadi keadaan akhir transaksi, sesuai dengan solusi skala Layer2 blockchain. Di antaranya:
Tabel 1: Cara Membangun Kepercayaan
Selain itu, penting untuk dicatat:
Saat ini, berkat kontrak pintar yang berbasis Turing lengkap dari Solidity, teknologi bukti penipuan dan bukti validitas secara luas digunakan dalam skala Layer2 Ethereum. Namun, di bawah paradigma Bitcoin, terbatas oleh fungsionalitas opcode terbatas Bitcoin, 1000 elemen tumpukan, dan pembatasan lainnya, aplikasi teknologi ini masih dalam tahap eksplorasi. Artikel ini merangkum keterbatasan dan teknologi terobosan di bawah paradigma Bitcoin dalam konteks skala Layer2 Bitcoin, mempelajari teknologi bukti validitas dan bukti penipuan, dan menguraikan teknologi segmentasi skrip yang unik di bawah paradigma Bitcoin.
Ada banyak keterbatasan dalam paradigma Bitcoin, namun berbagai metode atau teknik cerdik dapat digunakan untuk mengatasi keterbatasan tersebut. Misalnya, komitmen bit dapat menembus keterbatasan stateless UTXO, taproot dapat menembus keterbatasan ruang skrip, output konektor dapat menembus keterbatasan metode pengeluaran UTXO, dan kontrak dapat menembus keterbatasan prapenandatanganan.
Bitcoin mengadopsi model UTXO, di mana setiap UTXO terkunci dalam skrip penguncian yang menentukan kondisi yang harus dipenuhi untuk menghabiskan UTXO tersebut. Skrip Bitcoin memiliki batasan-batasan berikut:
Saat ini, skrip Bitcoin benar-benar stateless. Saat mengeksekusi skrip Bitcoin, lingkungan eksekusinya diatur ulang setelah setiap skrip. Hal ini menyebabkan ketidakmampuan skrip Bitcoin untuk secara native mendukung skrip kendala 1 dan 2 yang memiliki nilai x yang sama. Namun, masalah ini dapat dielakkan melalui beberapa metode, dengan ide intinya adalah menandatangani nilai dengan cara tertentu. Jika tanda tangan dapat dibuat untuk suatu nilai, dimungkinkan untuk mencapai skrip Bitcoin stateful. Artinya, dengan memeriksa tanda tangan nilai x dalam skrip 1 dan 2, dapat ditegakkan bahwa nilai x yang sama digunakan di kedua skrip. Jika ada tanda tangan yang bertentangan, artinya dua nilai berbeda ditandatangani untuk variabel x yang sama, penalti dapat diterapkan. Solusi ini dikenal sebagai komitmen bit.
Prinsip komitmen bit relatif sederhana. Bit mengacu pada mengatur dua nilai hash yang berbeda, hash0 dan hash1, untuk setiap bit dalam pesan yang akan ditandatangani. Jika nilai bit yang akan ditandatangani adalah 0, preimage0 dari hash0 diungkapkan; jika nilai bit yang akan ditandatangani adalah 1, preimage1 dari hash1 diungkapkan.
Mengambil pesan bit tunggal m ∈{0,1} sebagai contoh, skrip kunci bukaan komitmen bit yang sesuai hanyalah beberapa preimage: jika nilai bit adalah 0, skrip bukaan kunci yang sesuai adalah preimage0 - “0xfa7fa5b1dea37d71a0b841967f6a3b119dbea140”; jika nilai bit adalah 1, skrip bukaan kunci yang sesuai adalah preimage1 - “0x47c31e611a3bd2f3a7a42207613046703fa27496”. Oleh karena itu, dengan komitmen bit, dimungkinkan untuk menembus batasan tanpa keadaan UTXO dan mencapai skrip Bitcoin yang berkeadaan, sehingga memungkinkan berbagai fitur baru yang menarik.
OP_HASH160
OP_DUP
0xf592e757267b7f307324f1e78b34472f8b6f46f3> // Ini adalah hash1
OP_EQUAL
OP_DUP
OP_ROT
0x100b9f19ebd537fdc371fa1367d7ccc802dc2524> // Ini adalah hash0
OP_EQUAL
OP_BOOLOR
OP_VERIFY
// Sekarang nilai komitmen bit ada di tumpukan. Entah "0" atau "1".
Saat ini, ada 2 implementasi komitmen bit:
Saat ini, perpustakaan BitVM2 mengimplementasikan tanda tangan Winternitz berdasarkan fungsi hash Blake3. Panjang tanda tangan yang sesuai dengan satu bit adalah sekitar 26 byte. Oleh karena itu, dapat terlihat bahwa memperkenalkan keadaan melalui komitmen bit membutuhkan biaya. Oleh karena itu, dalam implementasi BitVM2, pesan pertama kali di-hash untuk mendapatkan nilai hash 256 bit, dan kemudian komitmen bit dilakukan pada nilai hash untuk menghemat overhead, daripada melakukan komitmen pada setiap bit pesan asli yang lebih panjang secara langsung.
Peningkatan soft fork Bitcoin Taproot, diaktifkan pada November 2021, mencakup tiga proposal: tanda tangan Schnorr (BIP 340), Taproot (BIP 341), dan TapScript (BIP 342). Ini memperkenalkan jenis transaksi baru — transaksi Pay-to-Taproot (P2TR). Transaksi P2TR dapat menciptakan format transaksi yang lebih pribadi, fleksibel, dan terukur dengan menggabungkan keunggulan tanda tangan Taproot, MAST (Merkel Abstract Syntax Tree), dan Schnorr.
P2TR mendukung dua metode pengeluaran: pengeluaran sesuai dengan jalur kunci atau jalur skrip.
Menurut ketentuan dalam Taproot (BIP 341), saat menghabiskan melalui jalur skrip, jalur Merkle yang sesuai tidak boleh melebihi panjang maksimum 128. Ini berarti bahwa jumlah tapleaf dalam pohon tap tidak boleh melebihi 2^128. Sejak upgrade SegWit pada tahun 2017, jaringan Bitcoin mengukur ukuran blok dalam unit berat, dengan dukungan maksimum 4 juta unit berat (sekitar 4MB). Ketika output P2TR dihabiskan melalui jalur skrip, hanya perlu mengungkapkan satu skrip tapleaf, artinya blok dikemas dengan satu skrip tapleaf. Ini berarti bahwa untuk transaksi P2TR, ukuran skrip yang sesuai untuk setiap tapleaf bisa maksimal sekitar 4MB. Namun, dalam kebijakan default Bitcoin, banyak node hanya meneruskan transaksi yang lebih kecil dari 400K; transaksi yang lebih besar perlu bekerja sama dengan penambang untuk dikemas.
Kehadiran ruang skrip yang ditingkatkan oleh Taproot membuatnya lebih berharga untuk mensimulasikan operasi kriptografi seperti perkalian dan hashing menggunakan opcode yang sudah ada.
Saat membangun komputasi yang dapat diverifikasi berdasarkan P2TR, ukuran skrip yang sesuai tidak lagi terbatas pada batasan 4MB, tetapi dapat dibagi menjadi beberapa sub-fungsi yang didistribusikan di beberapa tapleaf, sehingga menembus batasan ruang skrip 4MB. Bahkan, algoritma verifier Groth16 yang diimplementasikan pada BitVM2 saat ini memiliki ukuran hingga 2GB. Namun, dapat dibagi dan didistribusikan di sekitar 1000 daun tunggang, dan dengan menggabungkannya dengan komitmen bit, konsistensi antara input dan output dari setiap sub-fungsi dapat dibatasi, memastikan integritas dan kebenaran seluruh perhitungan.
Saat ini, Bitcoin menyediakan dua metode pengeluaran asli untuk satu UTXO: pengeluaran melalui skrip atau melalui kunci publik. Oleh karena itu, selama tanda tangan kunci publik atau kondisi skrip yang benar terpenuhi, UTXO dapat dikeluarkan. Dua UTXO dapat dikeluarkan secara independen, dan tidak ada batasan yang dapat ditambahkan untuk membatasi kedua UTXO, artinya kondisi tambahan harus dipenuhi agar mereka dapat dikeluarkan.
Namun, Burak, pendiri protokol Ark, dengan cerdik memanfaatkan bendera SIGHASH untuk mencapai keluaran penghubung. Secara khusus, Alice dapat membuat tanda tangan untuk mengirimkan BTC-nya ke Bob. Namun, karena tanda tangan dapat terikat ke beberapa input, Alice dapat mengatur tanda tangannya menjadi bersyarat: tanda tangan itu valid untuk transaksi Taketx jika dan hanya jika transaksi itu mengonsumsi input kedua. Input kedua disebut penghubung, menghubungkan UTXO A dan UTXO B. Dengan kata lain, transaksi Taketx valid jika dan hanya jika UTXO B belum dihabiskan oleh Challengetx. Oleh karena itu, dengan menghancurkan keluaran penghubung, efektivitas transaksi Taketx dapat diblokir.
Gambar 1: Ilustrasi Output Konektor
Dalam protokol BitVM2, output konektor bertindak sebagai... fungsi else. Setelah output konektor dibelanjakan oleh transaksi, itu tidak dapat dibelanjakan oleh transaksi lain untuk memastikan pengeluaran eksklusifnya. Dalam penyebaran praktis, untuk memungkinkan periode tantangan-respons, UTXO tambahan dengan timelock diperkenalkan. Selain itu, output konektor yang sesuai juga dapat diatur dengan strategi pengeluaran yang berbeda sesuai kebutuhan, seperti memungkinkan pihak mana pun untuk membelanjakan dalam kasus transaksi tantangan, sementara hanya mengizinkan operator untuk membelanjakan atau mengizinkan siapa pun untuk membelanjakan setelah batas waktu untuk transaksi respons.
Saat ini, skrip Bitcoin terutama membatasi kondisi pembukaan, tanpa membatasi bagaimana UTXO dapat dikeluarkan lebih lanjut. Hal ini karena skrip Bitcoin tidak dapat membaca konten transaksi itu sendiri, yang berarti mereka tidak dapat mencapai introspeksi transaksi. Jika skrip Bitcoin dapat memeriksa konten transaksi apa pun (termasuk output), fungsionalitas kontrak dapat diwujudkan.
Implementasi kontrak saat ini dapat dibagi menjadi dua kategori:
Baik bukti validitas maupun bukti penipuan dapat digunakan untuk penskalaan Bitcoin L2, dengan perbedaan utama ditunjukkan dalam Tabel 2.
Tabel 2: Bukti Validitas vs. Bukti Penipuan
Berdasarkan komitmen bit, taproot, pra-penandatanganan, dan output penghubung, bukti penipuan berdasarkan Bitcoin dapat dikonstruksi. Berdasarkan taproot, bukti validitas berdasarkan Bitcoin juga dapat dikonstruksi dengan memperkenalkan opcode kontrak, seperti OP_CAT. Selain itu, tergantung pada apakah Bob memiliki sistem penerimaan, bukti penipuan dapat dibagi menjadi bukti penipuan berizin dan bukti penipuan tanpa izin. Dalam bukti penipuan berizin, hanya kelompok-kelompok tertentu yang dapat bertindak sebagai Bob untuk memulai tantangan, sedangkan dalam bukti penipuan tanpa izin, pihak ketiga manapun dapat bertindak sebagai Bob untuk memulai tantangan. Keamanan bukti penipuan tanpa izin lebih unggul daripada bukti penipuan berizin, mengurangi risiko kolusi di antara peserta yang diizinkan.
Berdasarkan jumlah interaksi tantangan-respons antara Alice dan Bob, bukti penipuan dapat dibagi menjadi bukti penipuan satu putaran dan bukti penipuan multi-putaran, seperti yang ditunjukkan pada Gambar 2.
Gambar 2: Bukti Penipuan Satu Putaran vs. Bukti Penipuan Multi-Putaran
Seperti yang terlihat pada Tabel 3, bukti penipuan dapat diimplementasikan melalui model interaksi yang berbeda, termasuk model interaksi satu putaran dan model interaksi multi-putaran.
Tabel 3: Interaksi Satu Putaran vs Interaksi Multi-Putaran
Dalam paradigma skala Layer 2 Bitcoin, BitVM1 mengadopsi mekanisme bukti penipuan multi-round, sementara BitVM2 menggunakan mekanisme bukti penipuan satu putaran, dan bitcoin-circle stark memanfaatkan bukti validitas. Di antara ini, BitVM1 dan BitVM2 dapat diimplementasikan tanpa membuat modifikasi apa pun pada protokol Bitcoin, sementara bitcoin-circle stark membutuhkan pengenalan opcode baru OP_CAT.
Untuk sebagian besar tugas komputasi, signet, testnet, dan mainnet Bitcoin tidak dapat sepenuhnya merepresentasikan skrip 4MB, sehingga diperlukan penggunaan teknologi pemisahan skrip - yaitu, membagi skrip komputasi lengkap menjadi bagian-bagian yang lebih kecil dari 4MB, yang didistribusikan di berbagai tapleaf.
Seperti yang ditunjukkan dalam Tabel 3, bukti penipuan multi-putaran cocok untuk skenario di mana ada keinginan untuk mengurangi perhitungan arbitrase on-chain dan/atau di mana tidak mungkin untuk menentukan segmen perhitungan bermasalah dalam satu langkah. Bukti penipuan multi-putaran, sesuai dengan namanya, membutuhkan beberapa putaran interaksi antara pembuktian dan verifikasi untuk menemukan segmen perhitungan yang bermasalah, diikuti dengan arbitrase berdasarkan segmen yang diidentifikasi.
White paper BitVM awal Robin Linus (biasa disebut BitVM1) menggunakan bukti penipuan multi-round. Dengan asumsi setiap periode tantangan berlangsung seminggu dan menggunakan metode pencarian biner untuk menemukan segmen komputasi bermasalah, periode tanggapan tantangan on-chain untuk Verifier Groth16 bisa berlangsung hingga 30 minggu, mengakibatkan ketepatan waktu yang buruk. Meskipun saat ini ada tim yang sedang meneliti metode pencarian n-ary yang lebih efisien daripada pencarian biner, ketepatan waktunya masih jauh lebih rendah dibandingkan dengan siklus 2 minggu dalam bukti penipuan satu putaran.
Saat ini, bukti penipuan multi-round dalam paradigma Bitcoin menggunakan tantangan berizin, sementara bukti penipuan satu putaran telah mencapai metode tantangan tanpa izin, mengurangi risiko kolusi di antara peserta dan dengan demikian meningkatkan keamanan. Untuk tujuan ini, Robin Linus sepenuhnya memanfaatkan keunggulan Taproot untuk mengoptimalkan BitVM1. Bukan hanya jumlah putaran interaksi yang berkurang menjadi satu, tetapi metode tantangan juga diperluas menjadi pendekatan tanpa izin, meskipun dengan biaya peningkatan komputasi arbitrase on-chain.
Dalam model ini, verifikasi bukti penipuan dapat diselesaikan melalui satu interaksi antara pemberi bukti dan pemeriksa. Pemeriksa hanya perlu memulai satu tantangan, dan pemberi bukti hanya perlu merespons sekali. Dalam respons ini, pemberi bukti harus memberikan bukti yang menyatakan bahwa komputasi mereka benar. Jika pemeriksa dapat menemukan inkonsistensi dalam bukti tersebut, tantangannya berhasil; jika tidak, maka gagal. Karakteristik bukti penipuan interaktif satu putaran ditunjukkan dalam Tabel 3.
Gambar 3: Bukti Penipuan Satu Putaran
Pada 15 Agustus 2024, Robin Linus merilis white paper teknis BitVM2: Membangun Jembatan Bitcoin ke Layer Kedua, yang mengimplementasikan jembatan lintas rantai menggunakan metode bukti penipuan satu putaran yang mirip dengan yang ditunjukkan dalam Gambar 3.
OPCAT adalah bagian dari bahasa skrip asli ketika Bitcoin dirilis tetapi dinonaktifkan pada tahun 2010 karena kerentanan keamanan. Namun, komunitas Bitcoin telah mendiskusikan reaktivasi OPCAT selama bertahun-tahun. OPCAT sekarang telah diberi nomor 347 dan telah diaktifkan pada signet Bitcoin.
Fungsi utama OP_CAT adalah menggabungkan dua elemen dalam tumpukan dan mendorong hasil gabungan kembali ke tumpukan. Fungsionalitas ini membuka kemungkinan untuk kontrak dan Verifier STARK di Bitcoin:
Meskipun beban komputasi yang diperlukan untuk menjalankan algoritma verifier yang sesuai untuk memverifikasi bukti setelah bukti SNARK / STARK jauh lebih kecil daripada yang diperlukan untuk langsung menjalankan perhitungan asli f, jumlah skrip yang diperlukan saat mengonversinya untuk mengimplementasikan algoritma verifier dalam skrip Bitcoin masih sangat besar. Saat ini, berdasarkan opcode Bitcoin yang ada, ukuran skrip verifier Groth16 yang dioptimalkan dan ukuran skrip verifier Fflonk masih lebih besar dari 2GB. Namun, ukuran satu blok Bitcoin hanya 4MB, sehingga tidak mungkin untuk menjalankan seluruh skrip verifikator dalam satu blok. Namun, sejak upgrade Taproot, Bitcoin mendukung eksekusi skrip dengan tapleaf, memungkinkan skrip verifier dibagi menjadi beberapa bagian, dengan masing-masing potongan berfungsi sebagai tapleaf untuk membangun taptree. Konsistensi nilai antara potongan dapat dipastikan melalui komitmen bit.
Dengan adanya kontrak OP_CAT, STARK Verifier dapat dibagi menjadi beberapa transaksi standar yang lebih kecil dari 400KB, memungkinkan seluruh verifikasi bukti validitas STARK diselesaikan tanpa perlu berkolaborasi dengan penambang.
Bagian ini berfokus pada teknologi split yang relevan dari skrip Bitcoin dalam kondisi yang ada tanpa memperkenalkan atau mengaktifkan opcode baru.
Ketika melakukan pemisahan skrip, dimensi informasi berikut harus seimbang:
Saat ini, metode pemisahan skrip dapat dibagi menjadi tiga kategori utama berikut:
Misalnya, setelah beberapa putaran pengoptimalan, ukuran skrip verifikator Groth16 berkurang dari sekitar 7GB menjadi sekitar 1,26GB. Selain optimasi komputasi keseluruhan ini, setiap potongan juga dapat dioptimalkan secara individual untuk memanfaatkan ruang tumpukan sepenuhnya. Misalnya, dengan memperkenalkan algoritma berbasis tabel pencarian yang lebih baik dan secara dinamis memuat dan membongkar tabel pencarian, ukuran skrip setiap potongan dapat dikurangi lebih lanjut.
Biaya komputasi dan lingkungan waktu eksekusi bahasa pemrograman web2 sangat berbeda dengan skrip Bitcoin, sehingga secara sederhana menerjemahkan implementasi yang ada untuk berbagai algoritma ke dalam skrip Bitcoin tidaklah memungkinkan. Oleh karena itu, optimasi yang khusus untuk skenario Bitcoin perlu dipertimbangkan:
Artikel ini pertama-tama memperkenalkan keterbatasan skrip Bitcoin dan membahas penggunaan komitmen Bitcoin untuk mengatasi keterbatasan stateless UTXO, menggunakan Taproot untuk melewati batasan ruang skrip, menggunakan keluaran konektor untuk menghindari pembatasan metode pengeluaran UTXO, dan menggunakan kontrak untuk mengatasi keterbatasan pra-tanda tangan. Kemudian memberikan gambaran dan ringkasan komprehensif tentang karakteristik bukti penipuan dan bukti validitas, fitur bukti penipuan berizin dan tanpa izin, perbedaan antara bukti penipuan satu putaran dan multi putaran, dan teknologi pemisahan skrip Bitcoin.