Mendekati BTC: Pengetahuan latar belakang diperlukan untuk memahami BitVM

Pemula7/11/2024, 2:55:14 PM
Artikel ini menyelami latar belakang dan konsep inti teknologi Bitcoin Layer 2, seperti BitVM, untuk membantu pembaca memahami teknologi canggih ini dan aplikasinya, terutama bagi mereka yang memiliki minat yang kuat dalam ekosistem Bitcoin.

Ringkasan:

Delphi Digital baru-baru ini merilis laporan berjudul “Fajar dari Bitcoin Programmability: Membuka Jalan untuk Rollups,” yang menguraikan konsep-konsep kunci terkait Bitcoin Rollups, termasuk rangkaian BitVM, OP_CAT dan pembatasan Covenant, lapisan DA ekosistem Bitcoin, jembatan, dan empat solusi Layer 2 utama menggunakan BitVM: Bitlayer, Citrea, Yona, dan Bob. Meskipun laporan ini memberikan gambaran tentang teknologi Layer 2 Bitcoin, tetapi terbilang cukup umum dan kurang memiliki deskripsi yang mendetail, sehingga agak sulit dipahami. Geek Web3 mengembangkan laporan Delphi untuk membantu lebih banyak orang memahami secara sistematis teknologi seperti BitVM.

Kami akan bekerja dengan tim riset Bitlayer dan komunitas Cina BitVM untuk meluncurkan seri yang disebut “Mendekati BTC.” Seri ini akan fokus pada topik-topik kunci seperti BitVM, OP_CAT, dan jembatan lintas rantai Bitcoin, bertujuan untuk membongkar teknologi Bitcoin Layer 2 bagi khalayak yang lebih luas dan membuka jalan bagi lebih banyak penggemar.

Beberapa bulan yang lalu, Robin Linus, pemimpin ZeroSync, menerbitkan artikel berjudul 'BitVM: Hitung Apapun di Bitcoin,' secara resmi memperkenalkan konsep BitVM dan mendorong teknologi Bitcoin Layer 2. Ini dianggap sebagai salah satu inovasi paling revolusioner dalam ekosistem Bitcoin, memicu minat dan aktivitas signifikan di ruang Bitcoin Layer 2. Ini telah menarik proyek-proyek terkemuka seperti Bitlayer, Citrea, dan BOB, membawa energi baru ke pasar. Sejak saat itu, lebih banyak peneliti bergabung untuk meningkatkan BitVM, menghasilkan beberapa versi iteratif seperti BitVM1, BitVM2, BitVMX, dan BitSNARK. Gambaran umumnya adalah sebagai berikut:

  1. Robin Linus awalnya memperkenalkan white paper implementasi BitVM tahun lalu, yang didasarkan pada sirkuit gerbang logika konseptual dan dikenal sebagai BitVM0.
  2. Dalam presentasi dan wawancara selanjutnya, Robin Linus secara informal memperkenalkan konsep BitVM berdasarkan CPU teoretis, yang disebut BitVM1. Hal ini mirip dengan sistem bukti kecurangan Cannon dari Optimism, dan dapat mensimulasikan efek CPU umum di luar rantai menggunakan skrip Bitcoin.
  3. Robin Linus juga mengusulkan BitVM2, sebuah protokol bukti kecurangan non-interaktif satu langkah tanpa izin.
  4. Anggota Rootstock Labs dan Fairgate Labs merilis white paper tentang BitVMX. Mirip dengan BitVM1, mereka bertujuan untuk mensimulasikan efek dari CPU tujuan umum off-chain menggunakan skrip Bitcoin.

Saat ini, pembangunan ekosistem pengembang terkait BitVM menjadi semakin jelas, dan peningkatan iteratif dari alat-alat sekitar juga terlihat dengan jelas. Dibandingkan dengan tahun lalu, ekosistem BitVM hari ini telah menjadi 'sedikit terlihat' dari awal 'pembangunan di udara', yang juga menarik minat lebih banyak orang. Lebih banyak pengembang dan VC bergegas masuk ke dalam ekosistem Bitcoin.

Bagi kebanyakan orang, memahami BitVM dan istilah teknis yang terkait dengan Bitcoin Layer 2 tidaklah mudah. Hal ini memerlukan pemahaman sistematis tentang pengetahuan dasar, terutama skrip Bitcoin dan Taproot. Sumber daya online yang sudah ada seringkali terlalu panjang dan penuh dengan detail yang tidak relevan atau terlalu singkat untuk dipahami dengan jelas. Kami bertujuan untuk mengatasi masalah ini dengan menggunakan bahasa yang jelas dan ringkas untuk membantu lebih banyak orang memahami konsep dasar Bitcoin Layer 2 dan membangun pemahaman komprehensif tentang sistem BitVM.

MATT dan Komitmen: Konsep Inti dari BitVM

Konsep inti dari BitVM berkisar pada MATT, yang merupakan singkatan dari Merkleize Semua Hal. Pendekatan ini menggunakan Pohon Merkle, struktur penyimpanan data hirarkis, untuk merepresentasikan eksekusi program-program kompleks. Tujuannya adalah untuk memungkinkan verifikasi bukti kecurangan asli pada jaringan Bitcoin. MATT dapat menangkap detail dari program kompleks dan aktivitas pemrosesan datanya, namun tidak mempublikasikan data yang ekstensif ini langsung pada blockchain Bitcoin karena ukurannya yang besar. Sebagai gantinya, pendekatan MATT menyimpan data ini dalam pohon Merkle off-chain dan hanya mempublikasikan Merkle Root (ringkasan paling atas dari pohon Merkle) pada blockchain. Pohon Merkle utamanya berisi tiga komponen kunci:

  • Kode skrip kontrak pintar
  • Data yang diperlukan untuk kontrak
  • Jejak eksekusi kontrak (catatan perubahan pada memori dan register CPU selama eksekusi kontrak pintar di mesin virtual seperti EVM)

(Sebuah diagram skematis sederhana dari Pohon Merkle. Akar Merkle dihitung dari 8 fragmen data di bagian bawah gambar melalui penguncian multi-lapis)

Dalam skema MATT, hanya Merkle Root yang sangat kecil disimpan di rantai, dan rangkaian data lengkap yang terkandung dalam Pohon Merkle disimpan di luar rantai. Ini menggunakan ide yang disebut "komitmen". Berikut adalah penjelasan tentang apa itu "komitmen".

Sebuah janji adalah seperti pernyataan yang ringkas, kita dapat memahaminya sebagai “sidik jari” yang diperoleh setelah memampatkan sejumlah besar data. Secara umum, orang yang mengeluarkan “komitmen” pada rantai akan mengklaim bahwa data tertentu yang disimpan di luar rantai adalah akurat. Data di luar rantai ini seharusnya sesuai dengan pernyataan yang ringkas, dan pernyataan ini adalah “komitmen.”

Pada suatu titik, hash dari data dapat digunakan sebagai “komitmen” terhadap data itu sendiri. Skema komitmen lainnya termasuk komitmen KZG atau Pohon Merkle. Dalam protokol bukti penipuan biasa Layer2, Penerbit data akan menerbitkan rangkaian data lengkap di luar rantai dan komitmen untuk menerbitkan rangkaian data di dalam rantai. Jika seseorang menemukan data yang tidak valid dalam rangkaian data di luar rantai, komitmen data di dalam rantai akan dipertanyakan.

Melalui Komitmen, lapisan kedua dapat menyusutkan sejumlah besar data dan hanya mempublikasikan "komitmennya" pada rantai Bitcoin. Tentu saja, juga perlu memastikan bahwa kumpulan data lengkap yang dirilis di luar rantai dapat diamati oleh dunia luar.

Saat ini, skema BitVM utama seperti BitVM0, BitVM1, BitVM2, dan BitVMX semuanya mengikuti struktur abstrak yang serupa:

  1. Pemecahan Program dan KomitmenPada awalnya, program kompleks dibagi menjadi banyak opcode dasar (kompilasi). Jejak eksekusi dari opcode-opcode ini (pada dasarnya perubahan keadaan saat sebuah program berjalan di CPU dan memori, dikenal sebagai Jejak) direkam. Semua data, termasuk Jejak dan opcode, diatur ke dalam kumpulan data, dan komitmen dihasilkan untuk kumpulan data ini. Berbagai skema komitmen dapat digunakan, seperti pohon Merkle, PIOPs (berbagai algoritma ZK), dan fungsi hash.
  2. Staking Aset dan Pra-tanda Tangan: Penerbit data dan verifier harus mengunci sejumlah aset tertentu di blockchain melalui pra-tanda tangan, dengan kondisi pembatasan tertentu. Kondisi-kondisi ini memicu tindakan untuk peristiwa masa depan yang potensial. Jika penerbit data bertindak dengan jahat, verifier dapat mengirim bukti dan mengambil aset penerbit data.
  3. Publikasi Data dan Komitmen: Penerbit data memposting komitmen on-chain dan kumpulan data lengkap off-chain. Verifier mengambil dan memeriksa kumpulan data untuk kesalahan. Setiap bagian dari kumpulan data off-chain terhubung dengan komitmen on-chain.
  4. Tantangan dan Denda: Jika verifikator menemukan kesalahan dalam data yang diberikan oleh penerbit data, mereka membawa bagian dari data ini ke on-chain untuk verifikasi langsung (memerlukan data yang sangat terperinci). Proses ini mengikuti logika bukti kecurangan. Jika data dikonfirmasi sebagai tidak valid, aset penerbit data akan diambil oleh verifikator yang menantang. Secara ringkas, penerbit data, Alice, mengungkapkan semua jejak yang dihasilkan selama pelaksanaan transaksi Layer 2 off-chain dan menerbitkan komitmen yang sesuai on-chain. Untuk membuktikan bahwa sebagian dari data tidak benar, Anda harus terlebih dahulu menunjukkan ke node Bitcoin bahwa data ini terkait dengan komitmen on-chain, mengkonfirmasi bahwa itu diungkapkan oleh Alice, dan kemudian node Bitcoin memverifikasi keakuratan data tersebut. Setelah memahami ide keseluruhan BitVM, semua varian BitVM mengikuti paradigma dasar ini. Selanjutnya, kami akan membahas beberapa teknologi kunci yang digunakan dalam proses ini, dimulai dengan dasar-dasar skrip Bitcoin, Taproot, dan pra-tanda tangan.

Apa itu Skrip Bitcoin?

Memahami Bitcoin bisa lebih menantang daripada Ethereum, karena bahkan transaksi paling sederhana melibatkan beberapa konsep kunci. Ini termasuk UTXO (Unspent Transaction Output), skrip penguncian (juga dikenal sebagai ScriptPubKey), dan skrip membuka kunci (juga dikenal sebagai ScriptSig). Mari kita bahas konsep-konsep dasar ini terlebih dahulu.

(Sebuah contoh kode skrip Bitcoin terdiri dari opcode tingkat rendah dibandingkan dengan bahasa tingkat tinggi) Metode representasi aset Ethereum mirip dengan sistem seperti Alipay atau WeChat, di mana setiap transaksi hanya menyesuaikan saldo dari berbagai akun. Pendekatan berbasis akun ini memperlakukan saldo aset sebagai sekadar angka yang terkait dengan akun. Sebaliknya, representasi aset Bitcoin lebih mirip dengan berurusan dengan emas, di mana setiap potongan emas (UTXO) ditandai dengan pemilik. Transaksi Bitcoin pada dasarnya menghancurkan UTXO lama dan membuat yang baru, dengan perubahan kepemilikan dalam proses tersebut. Sebuah UTXO Bitcoin mencakup dua komponen kunci:

  • Jumlah: Diukur dalam 'satoshis' (satu BTC sama dengan seratus juta satoshis);
  • Skrip Penguncian (ScriptPubKey): Ini mendefinisikan kondisi yang diperlukan untuk membuka kunci UTXO. Kepemilikan UTXO Bitcoin ditentukan oleh skrip penguncian. Misalnya, jika Anda ingin mentransfer UTXO Anda ke Sam, Anda akan memulai transaksi yang menghancurkan UTXO Anda dan membuat yang baru dengan kondisi 'hanya Sam yang dapat membuka kunci'. Ketika Sam ingin menggunakan bitcoin ini, dia harus mengirimkan skrip pembukaan kunci (ScriptSig). Dalam skrip ini, Sam memberikan tanda tangan digitalnya untuk membuktikan identitasnya. Jika skrip pembukaan kunci cocok dengan skrip penguncian asli, Sam kemudian dapat membuka kunci bitcoin dan mentransfernya ke orang lain.

(Skrip pembuka kunci harus cocok dengan skrip penguncian) Dalam transaksi Bitcoin, setiap transaksi terdiri dari beberapa Input dan Output. Setiap Input menentukan UTXO untuk membuka kunci dan menyediakan skrip pembuka kunci untuk melakukannya, yang kemudian membuka dan menghancurkan UTXO. Output transaksi menunjukkan UTXO yang baru dibuat dan menampilkan skrip penguncian terkait secara publik. Misalnya, dalam Input transaksi, Anda membuktikan bahwa Anda adalah Sam dengan membuka beberapa UTXO yang dikirim orang lain kepada Anda, menghancurkannya dalam prosesnya. Kemudian, Anda membuat beberapa UTXO baru dan menentukan bahwa xxx dapat membukanya di masa mendatang.

Secara khusus, dalam data Input transaksi, Anda perlu mendeklarasikan UTXO mana yang ingin Anda buka kunci dan menentukan "lokasi penyimpanan" data UTXO ini. Penting untuk memahami bahwa Bitcoin dan Ethereum menangani ini dengan cara yang berbeda. Ethereum menggunakan akun kontrak dan Akun Dimiliki Eksternal (EOA) untuk menyimpan data, dengan saldo aset dicatat sebagai angka di bawah akun-akun ini. Semua informasi ini disimpan dalam database yang disebut "world state." Ketika transaksi terjadi, "world state" secara langsung memperbarui saldo akun tertentu, sehingga mudah untuk menemukan data tersebut. Sebaliknya, Bitcoin tidak memiliki "world state." Sebaliknya, data aset didistribusikan di seluruh blok sebelumnya sebagai UTXO yang belum dihabiskan, disimpan secara individu di Output setiap transaksi.

Jika Anda ingin membuka kunci UTXO tertentu, Anda harus menunjukkan Output transaksi mana informasi UTXO tersebut ada di masa lalu, dan tunjukkan ID transaksi (yang merupakan hash-nya). Biarkan node Bitcoin mencarinya dalam sejarah. Jika Anda ingin menanyakan saldo Bitcoin dari alamat tertentu, Anda perlu menelusuri semua blok dari awal untuk menemukan UTXO yang tidak terkunci yang terkait dengan alamat xx.

Ketika Anda biasanya menggunakan dompet Bitcoin, Anda dapat dengan cepat memeriksa saldo Bitcoin yang dimiliki oleh alamat tertentu. Hal ini sering terjadi karena layanan dompet itu sendiri mengindeks semua alamat dengan memindai blok, sehingga memudahkan kita untuk mengajukan pertanyaan dengan cepat.

(Saat Anda membuat transaksi untuk mentransfer UTXO Anda ke orang lain, Anda perlu menentukan lokasi UTXO tersebut dalam riwayat transaksi Bitcoin dengan merujuk hash/ID transaksi miliknya.) Menariknya, hasil transaksi Bitcoin dihitung secara off-chain. Ketika pengguna menghasilkan transaksi pada perangkat lokal mereka, mereka harus membuat semua Input dan Output sebelumnya, secara efektif menghitung output transaksi. Transaksi tersebut kemudian disiarkan ke jaringan Bitcoin, diverifikasi oleh node, dan ditambahkan ke blockchain. Model "komputasi off-chain – verifikasi on-chain" ini sama sekali berbeda dari Ethereum. Di Ethereum, Anda hanya perlu memberikan parameter input transaksi, dan hasil transaksi dihitung dan dikeluarkan oleh node Ethereum. Selain itu, skrip penguncian UTXO dapat disesuaikan. Anda dapat mengatur UTXO agar "tidak dapat dibuka oleh pemilik alamat Bitcoin tertentu," yang mengharuskan pemiliknya untuk memberikan tanda tangan digital dan kunci publik (P2PKH). Dalam transaksi Pay-to-Script-Hash (P2SH), Anda dapat menambahkan Hash Skrip ke skrip penguncian UTXO. Siapa pun yang dapat mengirimkan skrip yang sesuai dengan hash ini dan memenuhi persyaratan yang ditentukan dalam skrip dapat membuka kunci UTXO. Skrip Taproot, yang diandalkan BitVM, menggunakan fitur yang mirip dengan yang ada di P2SH.

Bagaimana cara memicu skrip Bitcoin

Untuk memahami mekanisme pencetus skrip Bitcoin, kita akan mulai dengan contoh P2PKH, yang merupakan singkatan dari 'Bayar ke Hash Kunci Publik.' Dalam pengaturan ini, skrip penguncian dari UTXO berisi hash kunci publik, dan untuk membukanya, kunci publik yang sesuai harus disediakan. Mekanisme ini sejalan dengan proses standar transaksi Bitcoin. Dalam konteks ini, sebuah node Bitcoin harus memverifikasi bahwa kunci publik dalam skrip membuka kunci sesuai dengan hash kunci publik yang ditentukan dalam skrip penguncian. Pada dasarnya, itu memeriksa bahwa 'kunci' yang disediakan oleh pengguna cocok dengan 'kunci gembok' yang ditetapkan oleh UTXO. Lebih detailnya, dalam skema P2PKH, ketika sebuah node Bitcoin menerima transaksi, node tersebut menggabungkan skrip membuka kunci (ScriptSig) pengguna dengan skrip mengunci (ScriptPubKey) dari UTXO yang akan dibuka kunci, dan kemudian menjalankan skrip gabungan ini dalam lingkungan eksekusi skrip Bitcoin. Gambar di bawah ini menggambarkan hasil yang digabungkan sebelum eksekusi:

Pembaca mungkin tidak terbiasa dengan lingkungan eksekusi skrip BTC, jadi mari kita perkenalkan secara singkat. Skrip Bitcoin terdiri dari dua elemen: data dan opcode. Elemen-elemen ini didorong ke tumpukan secara berurutan dari kiri ke kanan dan dieksekusi sesuai dengan logika yang ditentukan untuk menghasilkan hasil akhir (untuk penjelasan tentang apa itu tumpukan, pembaca dapat berkonsultasi dengan ChatGPT). Pada contoh di atas, sisi kiri menunjukkan skrip pembuka kunci (ScriptSig) yang disediakan oleh seseorang, yang mencakup tanda tangan digital dan kunci publik mereka. Sisi kanan menunjukkan skrip penguncian (ScriptPubKey), yang berisi serangkaian opcode dan kumpulan data oleh pencipta UTXO saat menghasilkan UTXO itu (memahami ide umum sudah cukup; kita tidak perlu menyelidiki arti setiap opcode). Opcode dalam skrip penguncian sisi kanan, seperti DUP, HASH160, dan EQUALVERIFY, melakukan hash pada kunci publik dari skrip pembuka kunci sisi kiri dan membandingkannya dengan hash kunci publik yang telah ditetapkan sebelumnya dalam skrip penguncian. Jika cocok, ini mengonfirmasi bahwa kunci publik dalam skrip pembuka kunci cocok dengan hash kunci publik dalam skrip penguncian, lulus verifikasi pertama. Namun, ada masalah: konten skrip penguncian terlihat oleh publik di blockchain, yang berarti siapa pun dapat melihat hash kunci publik. Oleh karena itu, siapa pun dapat mengirimkan kunci publik yang sesuai dan secara palsu mengklaim sebagai orang yang berwenang. Untuk mengatasi hal ini, setelah memverifikasi kunci publik dan hash kunci publik, sistem juga harus memverifikasi apakah inisiator transaksi benar-benar mengontrol kunci publik, yang melibatkan verifikasi tanda tangan digital. Opcode CHECKSIG dalam skrip penguncian menangani verifikasi ini. Singkatnya, di bawah skema P2PKH, skrip pembuka kunci inisiator transaksi harus menyertakan kunci publik dan tanda tangan digital. Kunci publik harus cocok dengan hash kunci publik yang ditentukan dalam skrip penguncian, dan tanda tangan digital harus benar. Kondisi ini harus dipenuhi agar berhasil membuka kunci UTXO.

(Ini adalah ilustrasi dinamis: Diagram skrip penguncian Bitcoin di bawah skema P2PKH
Sumber:https://learnmeabitcoin.com/technical/script)

Penting untuk dicatat bahwa jaringan Bitcoin mendukung berbagai jenis transaksi di luar Pay to Public Key / Public Key Hash, seperti P2SH (Pay to Script Hash). Jenis transaksi tertentu bergantung pada bagaimana skrip penguncian dikonfigurasi saat UTXO dibuat.

Penting untuk memahami bahwa dalam skema P2SH, skrip penguncian dapat menetapkan Hash Skrip, dan skrip pembuka harus menyediakan konten skrip lengkap yang sesuai dengan Hash Skrip ini. Node Bitcoin kemudian dapat mengeksekusi skrip ini, dan jika itu termasuk logika verifikasi multi-tanda tangan, itu efektif mengaktifkan dompet multi-tanda tangan pada blockchain Bitcoin. Dalam skema P2SH, pencipta UTXO perlu memberi tahu orang yang akan membuka kunci UTXO di masa depan tentang konten skrip yang sesuai dengan Hash Skrip. Selama kedua belah pihak mengetahui konten skrip, kita dapat menerapkan logika bisnis yang lebih kompleks daripada hanya multi-tanda tangan. Juga perlu dicatat bahwa blockchain Bitcoin tidak secara langsung mencatat UTXO mana yang terhubung ke alamat mana. Sebagai gantinya, itu mencatat UTXO mana yang dapat dibuka kunci oleh hash kunci publik atau hash skrip. Namun, kita dapat dengan cepat mendapatkan alamat yang sesuai (deretan karakter yang terlihat seperti omong kosong yang ditampilkan dalam antarmuka dompet) dari hash kunci publik atau hash skrip.

Alasan Anda dapat melihat jumlah Bitcoin yang terkait dengan alamat tertentu pada penjelajah blok dan antarmuka dompet adalah karena layanan ini mengurai dan menafsirkan data blockchain untuk Anda. Mereka memindai semua blok dan, berdasarkan hash kunci publik atau hash skrip yang dideklarasikan dalam skrip penguncian, menghitung "alamat" yang sesuai. Ini memungkinkan mereka untuk menampilkan berapa banyak Bitcoin yang terkait dengan alamat itu.

Segregated Witness dan Witness

Memahami P2SH membawa kita lebih dekat ke Taproot, komponen penting untuk BitVM. Namun, sebelum terjun ke Taproot, penting untuk memahami konsep Witness dan Segregated Witness (SegWit). Meninjau skrip penguncian dan pembukaan, serta proses membuka UTXO, menyoroti masalah: tanda tangan digital untuk transaksi disertakan dalam skrip pembukaan. Saat menghasilkan tanda tangan ini, skrip pembukaan itu sendiri tidak dapat menjadi bagian dari data yang ditandatangani (karena parameter yang digunakan untuk menghasilkan tanda tangan tidak dapat termasuk tanda tangan itu sendiri).

Akibatnya, tanda tangan digital hanya dapat mencakup bagian-bagian data transaksi di luar skrip penguncian, artinya tidak dapat sepenuhnya melindungi seluruh data transaksi. Hal ini menyebabkan kerentanan di mana seorang perantara dapat sedikit memodifikasi skrip penguncian tanpa memengaruhi verifikasi tanda tangan. Misalnya, simpul Bitcoin atau kolam penambangan bisa menyisipkan data tambahan ke dalam skrip penguncian. Meskipun perubahan ini tidak memengaruhi verifikasi dan hasil dari transaksi, itu sedikit mengubah data transaksi, yang pada gilirannya mengubah hash transaksi yang dihitung/ID transaksi. Masalah ini dikenal sebagai pemalsuan transaksi.

Masalahnya adalah bahwa jika Anda berencana untuk memulai beberapa transaksi berurutan yang bergantung satu sama lain (misalnya, transaksi 3 merujuk pada output transaksi 2, dan transaksi 2 merujuk pada output transaksi 1), transaksi berikutnya harus merujuk pada hash transaksi sebelumnya. Setiap perantara, seperti kolam penambangan atau simpul Bitcoin, dapat melakukan modifikasi kecil pada skrip pembuka, menyebabkan hash transaksi berbeda dari harapan Anda setelah itu berada di blockchain.

Ketidaksesuaian ini dapat membatalkan urutan transaksi yang saling tergantung yang telah Anda rencanakan sebelumnya. Masalah ini sangat relevan dalam konteks jembatan DLC dan BitVM2, di mana sekelompok transaksi yang saling terkait secara berurutan dibangun, sehingga membuat skenario seperti itu cukup umum.


Secara sederhana, masalah kecacatan transaksi terjadi karena perhitungan ID/hash transaksi mencakup data dari skrip pembuka kunci. Pihak perantara, seperti simpul Bitcoin, dapat melakukan modifikasi kecil pada skrip pembuka kunci, menghasilkan ID transaksi yang tidak sesuai dengan harapan pengguna. Masalah ini berasal dari keterbatasan desain awal Bitcoin. Pembaruan Segregated Witness (SegWit) mengatasi masalah ini dengan memisahkan ID transaksi dari skrip pembuka kunci. Dengan SegWit, perhitungan hash transaksi tidak termasuk data skrip pembuka kunci. Skrip penguncian UTXO di bawah SegWit dimulai dengan opcode “OP_0” sebagai penanda, dan skrip pembuka kunci yang sesuai diubah namanya dari SigScript menjadi Witness.

Dengan mematuhi aturan Segregated Witness (SegWit), masalah kelenturan transaksi diselesaikan secara efektif, menghilangkan kekhawatiran tentang data transaksi yang dirusak oleh node Bitcoin. Fungsi P2WSH (Pay to Witness Script Hash) pada dasarnya sama dengan P2SH (Pay to Script Hash). Anda dapat mengatur hash skrip dalam skrip penguncian UTXO, dan orang yang mengirimkan skrip pembuka kunci akan memberikan konten skrip yang sesuai ke rantai untuk dieksekusi. Namun, jika konten skrip yang Anda butuhkan sangat besar dan berisi banyak kode, metode konvensional mungkin tidak memungkinkan Anda untuk mengirimkan seluruh skrip ke blockchain Bitcoin (karena batas ukuran blok). Dalam kasus seperti itu, Taproot ikut bermain. Taproot memungkinkan kompresi konten skrip on-chain, sehingga memungkinkan untuk menangani skrip yang lebih besar. BitVM memanfaatkan Taproot untuk membangun solusi yang lebih kompleks. Dalam artikel berikutnya dari seri "Mendekati BTC" kami, kami akan memberikan penjelasan rinci tentang Taproot, pra-tanda tangan, dan teknologi canggih lainnya yang terkait dengan BitVM. Tetap disini!

Penafian:

  1. Artikel ini dicetak ulang dari [ Geek Web3], dengan hak cipta milik para penulis asli [Nickqiao & Faust & Shew Wang]. Jika ada keberatan terhadap penayangan ulang, silakan hubungi Gate Belajartim, dan tim akan segera memprosesnya sesuai dengan prosedur yang relevan.
  2. Penyangkalan: Pandangan dan opini yang terdapat dalam artikel ini semata-mata merupakan pandangan dari para penulis dan tidak merupakan saran investasi apa pun.
  3. Versi bahasa lain dari artikel telah diterjemahkan oleh tim Gate Learn. Tanpa menyebutkanGate.io, artikel yang diterjemahkan tidak boleh disalin, disebarluaskan, atau diplagiatkan.

Пригласить больше голосов

Содержание

Mendekati BTC: Pengetahuan latar belakang diperlukan untuk memahami BitVM

Pemula7/11/2024, 2:55:14 PM
Artikel ini menyelami latar belakang dan konsep inti teknologi Bitcoin Layer 2, seperti BitVM, untuk membantu pembaca memahami teknologi canggih ini dan aplikasinya, terutama bagi mereka yang memiliki minat yang kuat dalam ekosistem Bitcoin.

Ringkasan:

Delphi Digital baru-baru ini merilis laporan berjudul “Fajar dari Bitcoin Programmability: Membuka Jalan untuk Rollups,” yang menguraikan konsep-konsep kunci terkait Bitcoin Rollups, termasuk rangkaian BitVM, OP_CAT dan pembatasan Covenant, lapisan DA ekosistem Bitcoin, jembatan, dan empat solusi Layer 2 utama menggunakan BitVM: Bitlayer, Citrea, Yona, dan Bob. Meskipun laporan ini memberikan gambaran tentang teknologi Layer 2 Bitcoin, tetapi terbilang cukup umum dan kurang memiliki deskripsi yang mendetail, sehingga agak sulit dipahami. Geek Web3 mengembangkan laporan Delphi untuk membantu lebih banyak orang memahami secara sistematis teknologi seperti BitVM.

Kami akan bekerja dengan tim riset Bitlayer dan komunitas Cina BitVM untuk meluncurkan seri yang disebut “Mendekati BTC.” Seri ini akan fokus pada topik-topik kunci seperti BitVM, OP_CAT, dan jembatan lintas rantai Bitcoin, bertujuan untuk membongkar teknologi Bitcoin Layer 2 bagi khalayak yang lebih luas dan membuka jalan bagi lebih banyak penggemar.

Beberapa bulan yang lalu, Robin Linus, pemimpin ZeroSync, menerbitkan artikel berjudul 'BitVM: Hitung Apapun di Bitcoin,' secara resmi memperkenalkan konsep BitVM dan mendorong teknologi Bitcoin Layer 2. Ini dianggap sebagai salah satu inovasi paling revolusioner dalam ekosistem Bitcoin, memicu minat dan aktivitas signifikan di ruang Bitcoin Layer 2. Ini telah menarik proyek-proyek terkemuka seperti Bitlayer, Citrea, dan BOB, membawa energi baru ke pasar. Sejak saat itu, lebih banyak peneliti bergabung untuk meningkatkan BitVM, menghasilkan beberapa versi iteratif seperti BitVM1, BitVM2, BitVMX, dan BitSNARK. Gambaran umumnya adalah sebagai berikut:

  1. Robin Linus awalnya memperkenalkan white paper implementasi BitVM tahun lalu, yang didasarkan pada sirkuit gerbang logika konseptual dan dikenal sebagai BitVM0.
  2. Dalam presentasi dan wawancara selanjutnya, Robin Linus secara informal memperkenalkan konsep BitVM berdasarkan CPU teoretis, yang disebut BitVM1. Hal ini mirip dengan sistem bukti kecurangan Cannon dari Optimism, dan dapat mensimulasikan efek CPU umum di luar rantai menggunakan skrip Bitcoin.
  3. Robin Linus juga mengusulkan BitVM2, sebuah protokol bukti kecurangan non-interaktif satu langkah tanpa izin.
  4. Anggota Rootstock Labs dan Fairgate Labs merilis white paper tentang BitVMX. Mirip dengan BitVM1, mereka bertujuan untuk mensimulasikan efek dari CPU tujuan umum off-chain menggunakan skrip Bitcoin.

Saat ini, pembangunan ekosistem pengembang terkait BitVM menjadi semakin jelas, dan peningkatan iteratif dari alat-alat sekitar juga terlihat dengan jelas. Dibandingkan dengan tahun lalu, ekosistem BitVM hari ini telah menjadi 'sedikit terlihat' dari awal 'pembangunan di udara', yang juga menarik minat lebih banyak orang. Lebih banyak pengembang dan VC bergegas masuk ke dalam ekosistem Bitcoin.

Bagi kebanyakan orang, memahami BitVM dan istilah teknis yang terkait dengan Bitcoin Layer 2 tidaklah mudah. Hal ini memerlukan pemahaman sistematis tentang pengetahuan dasar, terutama skrip Bitcoin dan Taproot. Sumber daya online yang sudah ada seringkali terlalu panjang dan penuh dengan detail yang tidak relevan atau terlalu singkat untuk dipahami dengan jelas. Kami bertujuan untuk mengatasi masalah ini dengan menggunakan bahasa yang jelas dan ringkas untuk membantu lebih banyak orang memahami konsep dasar Bitcoin Layer 2 dan membangun pemahaman komprehensif tentang sistem BitVM.

MATT dan Komitmen: Konsep Inti dari BitVM

Konsep inti dari BitVM berkisar pada MATT, yang merupakan singkatan dari Merkleize Semua Hal. Pendekatan ini menggunakan Pohon Merkle, struktur penyimpanan data hirarkis, untuk merepresentasikan eksekusi program-program kompleks. Tujuannya adalah untuk memungkinkan verifikasi bukti kecurangan asli pada jaringan Bitcoin. MATT dapat menangkap detail dari program kompleks dan aktivitas pemrosesan datanya, namun tidak mempublikasikan data yang ekstensif ini langsung pada blockchain Bitcoin karena ukurannya yang besar. Sebagai gantinya, pendekatan MATT menyimpan data ini dalam pohon Merkle off-chain dan hanya mempublikasikan Merkle Root (ringkasan paling atas dari pohon Merkle) pada blockchain. Pohon Merkle utamanya berisi tiga komponen kunci:

  • Kode skrip kontrak pintar
  • Data yang diperlukan untuk kontrak
  • Jejak eksekusi kontrak (catatan perubahan pada memori dan register CPU selama eksekusi kontrak pintar di mesin virtual seperti EVM)

(Sebuah diagram skematis sederhana dari Pohon Merkle. Akar Merkle dihitung dari 8 fragmen data di bagian bawah gambar melalui penguncian multi-lapis)

Dalam skema MATT, hanya Merkle Root yang sangat kecil disimpan di rantai, dan rangkaian data lengkap yang terkandung dalam Pohon Merkle disimpan di luar rantai. Ini menggunakan ide yang disebut "komitmen". Berikut adalah penjelasan tentang apa itu "komitmen".

Sebuah janji adalah seperti pernyataan yang ringkas, kita dapat memahaminya sebagai “sidik jari” yang diperoleh setelah memampatkan sejumlah besar data. Secara umum, orang yang mengeluarkan “komitmen” pada rantai akan mengklaim bahwa data tertentu yang disimpan di luar rantai adalah akurat. Data di luar rantai ini seharusnya sesuai dengan pernyataan yang ringkas, dan pernyataan ini adalah “komitmen.”

Pada suatu titik, hash dari data dapat digunakan sebagai “komitmen” terhadap data itu sendiri. Skema komitmen lainnya termasuk komitmen KZG atau Pohon Merkle. Dalam protokol bukti penipuan biasa Layer2, Penerbit data akan menerbitkan rangkaian data lengkap di luar rantai dan komitmen untuk menerbitkan rangkaian data di dalam rantai. Jika seseorang menemukan data yang tidak valid dalam rangkaian data di luar rantai, komitmen data di dalam rantai akan dipertanyakan.

Melalui Komitmen, lapisan kedua dapat menyusutkan sejumlah besar data dan hanya mempublikasikan "komitmennya" pada rantai Bitcoin. Tentu saja, juga perlu memastikan bahwa kumpulan data lengkap yang dirilis di luar rantai dapat diamati oleh dunia luar.

Saat ini, skema BitVM utama seperti BitVM0, BitVM1, BitVM2, dan BitVMX semuanya mengikuti struktur abstrak yang serupa:

  1. Pemecahan Program dan KomitmenPada awalnya, program kompleks dibagi menjadi banyak opcode dasar (kompilasi). Jejak eksekusi dari opcode-opcode ini (pada dasarnya perubahan keadaan saat sebuah program berjalan di CPU dan memori, dikenal sebagai Jejak) direkam. Semua data, termasuk Jejak dan opcode, diatur ke dalam kumpulan data, dan komitmen dihasilkan untuk kumpulan data ini. Berbagai skema komitmen dapat digunakan, seperti pohon Merkle, PIOPs (berbagai algoritma ZK), dan fungsi hash.
  2. Staking Aset dan Pra-tanda Tangan: Penerbit data dan verifier harus mengunci sejumlah aset tertentu di blockchain melalui pra-tanda tangan, dengan kondisi pembatasan tertentu. Kondisi-kondisi ini memicu tindakan untuk peristiwa masa depan yang potensial. Jika penerbit data bertindak dengan jahat, verifier dapat mengirim bukti dan mengambil aset penerbit data.
  3. Publikasi Data dan Komitmen: Penerbit data memposting komitmen on-chain dan kumpulan data lengkap off-chain. Verifier mengambil dan memeriksa kumpulan data untuk kesalahan. Setiap bagian dari kumpulan data off-chain terhubung dengan komitmen on-chain.
  4. Tantangan dan Denda: Jika verifikator menemukan kesalahan dalam data yang diberikan oleh penerbit data, mereka membawa bagian dari data ini ke on-chain untuk verifikasi langsung (memerlukan data yang sangat terperinci). Proses ini mengikuti logika bukti kecurangan. Jika data dikonfirmasi sebagai tidak valid, aset penerbit data akan diambil oleh verifikator yang menantang. Secara ringkas, penerbit data, Alice, mengungkapkan semua jejak yang dihasilkan selama pelaksanaan transaksi Layer 2 off-chain dan menerbitkan komitmen yang sesuai on-chain. Untuk membuktikan bahwa sebagian dari data tidak benar, Anda harus terlebih dahulu menunjukkan ke node Bitcoin bahwa data ini terkait dengan komitmen on-chain, mengkonfirmasi bahwa itu diungkapkan oleh Alice, dan kemudian node Bitcoin memverifikasi keakuratan data tersebut. Setelah memahami ide keseluruhan BitVM, semua varian BitVM mengikuti paradigma dasar ini. Selanjutnya, kami akan membahas beberapa teknologi kunci yang digunakan dalam proses ini, dimulai dengan dasar-dasar skrip Bitcoin, Taproot, dan pra-tanda tangan.

Apa itu Skrip Bitcoin?

Memahami Bitcoin bisa lebih menantang daripada Ethereum, karena bahkan transaksi paling sederhana melibatkan beberapa konsep kunci. Ini termasuk UTXO (Unspent Transaction Output), skrip penguncian (juga dikenal sebagai ScriptPubKey), dan skrip membuka kunci (juga dikenal sebagai ScriptSig). Mari kita bahas konsep-konsep dasar ini terlebih dahulu.

(Sebuah contoh kode skrip Bitcoin terdiri dari opcode tingkat rendah dibandingkan dengan bahasa tingkat tinggi) Metode representasi aset Ethereum mirip dengan sistem seperti Alipay atau WeChat, di mana setiap transaksi hanya menyesuaikan saldo dari berbagai akun. Pendekatan berbasis akun ini memperlakukan saldo aset sebagai sekadar angka yang terkait dengan akun. Sebaliknya, representasi aset Bitcoin lebih mirip dengan berurusan dengan emas, di mana setiap potongan emas (UTXO) ditandai dengan pemilik. Transaksi Bitcoin pada dasarnya menghancurkan UTXO lama dan membuat yang baru, dengan perubahan kepemilikan dalam proses tersebut. Sebuah UTXO Bitcoin mencakup dua komponen kunci:

  • Jumlah: Diukur dalam 'satoshis' (satu BTC sama dengan seratus juta satoshis);
  • Skrip Penguncian (ScriptPubKey): Ini mendefinisikan kondisi yang diperlukan untuk membuka kunci UTXO. Kepemilikan UTXO Bitcoin ditentukan oleh skrip penguncian. Misalnya, jika Anda ingin mentransfer UTXO Anda ke Sam, Anda akan memulai transaksi yang menghancurkan UTXO Anda dan membuat yang baru dengan kondisi 'hanya Sam yang dapat membuka kunci'. Ketika Sam ingin menggunakan bitcoin ini, dia harus mengirimkan skrip pembukaan kunci (ScriptSig). Dalam skrip ini, Sam memberikan tanda tangan digitalnya untuk membuktikan identitasnya. Jika skrip pembukaan kunci cocok dengan skrip penguncian asli, Sam kemudian dapat membuka kunci bitcoin dan mentransfernya ke orang lain.

(Skrip pembuka kunci harus cocok dengan skrip penguncian) Dalam transaksi Bitcoin, setiap transaksi terdiri dari beberapa Input dan Output. Setiap Input menentukan UTXO untuk membuka kunci dan menyediakan skrip pembuka kunci untuk melakukannya, yang kemudian membuka dan menghancurkan UTXO. Output transaksi menunjukkan UTXO yang baru dibuat dan menampilkan skrip penguncian terkait secara publik. Misalnya, dalam Input transaksi, Anda membuktikan bahwa Anda adalah Sam dengan membuka beberapa UTXO yang dikirim orang lain kepada Anda, menghancurkannya dalam prosesnya. Kemudian, Anda membuat beberapa UTXO baru dan menentukan bahwa xxx dapat membukanya di masa mendatang.

Secara khusus, dalam data Input transaksi, Anda perlu mendeklarasikan UTXO mana yang ingin Anda buka kunci dan menentukan "lokasi penyimpanan" data UTXO ini. Penting untuk memahami bahwa Bitcoin dan Ethereum menangani ini dengan cara yang berbeda. Ethereum menggunakan akun kontrak dan Akun Dimiliki Eksternal (EOA) untuk menyimpan data, dengan saldo aset dicatat sebagai angka di bawah akun-akun ini. Semua informasi ini disimpan dalam database yang disebut "world state." Ketika transaksi terjadi, "world state" secara langsung memperbarui saldo akun tertentu, sehingga mudah untuk menemukan data tersebut. Sebaliknya, Bitcoin tidak memiliki "world state." Sebaliknya, data aset didistribusikan di seluruh blok sebelumnya sebagai UTXO yang belum dihabiskan, disimpan secara individu di Output setiap transaksi.

Jika Anda ingin membuka kunci UTXO tertentu, Anda harus menunjukkan Output transaksi mana informasi UTXO tersebut ada di masa lalu, dan tunjukkan ID transaksi (yang merupakan hash-nya). Biarkan node Bitcoin mencarinya dalam sejarah. Jika Anda ingin menanyakan saldo Bitcoin dari alamat tertentu, Anda perlu menelusuri semua blok dari awal untuk menemukan UTXO yang tidak terkunci yang terkait dengan alamat xx.

Ketika Anda biasanya menggunakan dompet Bitcoin, Anda dapat dengan cepat memeriksa saldo Bitcoin yang dimiliki oleh alamat tertentu. Hal ini sering terjadi karena layanan dompet itu sendiri mengindeks semua alamat dengan memindai blok, sehingga memudahkan kita untuk mengajukan pertanyaan dengan cepat.

(Saat Anda membuat transaksi untuk mentransfer UTXO Anda ke orang lain, Anda perlu menentukan lokasi UTXO tersebut dalam riwayat transaksi Bitcoin dengan merujuk hash/ID transaksi miliknya.) Menariknya, hasil transaksi Bitcoin dihitung secara off-chain. Ketika pengguna menghasilkan transaksi pada perangkat lokal mereka, mereka harus membuat semua Input dan Output sebelumnya, secara efektif menghitung output transaksi. Transaksi tersebut kemudian disiarkan ke jaringan Bitcoin, diverifikasi oleh node, dan ditambahkan ke blockchain. Model "komputasi off-chain – verifikasi on-chain" ini sama sekali berbeda dari Ethereum. Di Ethereum, Anda hanya perlu memberikan parameter input transaksi, dan hasil transaksi dihitung dan dikeluarkan oleh node Ethereum. Selain itu, skrip penguncian UTXO dapat disesuaikan. Anda dapat mengatur UTXO agar "tidak dapat dibuka oleh pemilik alamat Bitcoin tertentu," yang mengharuskan pemiliknya untuk memberikan tanda tangan digital dan kunci publik (P2PKH). Dalam transaksi Pay-to-Script-Hash (P2SH), Anda dapat menambahkan Hash Skrip ke skrip penguncian UTXO. Siapa pun yang dapat mengirimkan skrip yang sesuai dengan hash ini dan memenuhi persyaratan yang ditentukan dalam skrip dapat membuka kunci UTXO. Skrip Taproot, yang diandalkan BitVM, menggunakan fitur yang mirip dengan yang ada di P2SH.

Bagaimana cara memicu skrip Bitcoin

Untuk memahami mekanisme pencetus skrip Bitcoin, kita akan mulai dengan contoh P2PKH, yang merupakan singkatan dari 'Bayar ke Hash Kunci Publik.' Dalam pengaturan ini, skrip penguncian dari UTXO berisi hash kunci publik, dan untuk membukanya, kunci publik yang sesuai harus disediakan. Mekanisme ini sejalan dengan proses standar transaksi Bitcoin. Dalam konteks ini, sebuah node Bitcoin harus memverifikasi bahwa kunci publik dalam skrip membuka kunci sesuai dengan hash kunci publik yang ditentukan dalam skrip penguncian. Pada dasarnya, itu memeriksa bahwa 'kunci' yang disediakan oleh pengguna cocok dengan 'kunci gembok' yang ditetapkan oleh UTXO. Lebih detailnya, dalam skema P2PKH, ketika sebuah node Bitcoin menerima transaksi, node tersebut menggabungkan skrip membuka kunci (ScriptSig) pengguna dengan skrip mengunci (ScriptPubKey) dari UTXO yang akan dibuka kunci, dan kemudian menjalankan skrip gabungan ini dalam lingkungan eksekusi skrip Bitcoin. Gambar di bawah ini menggambarkan hasil yang digabungkan sebelum eksekusi:

Pembaca mungkin tidak terbiasa dengan lingkungan eksekusi skrip BTC, jadi mari kita perkenalkan secara singkat. Skrip Bitcoin terdiri dari dua elemen: data dan opcode. Elemen-elemen ini didorong ke tumpukan secara berurutan dari kiri ke kanan dan dieksekusi sesuai dengan logika yang ditentukan untuk menghasilkan hasil akhir (untuk penjelasan tentang apa itu tumpukan, pembaca dapat berkonsultasi dengan ChatGPT). Pada contoh di atas, sisi kiri menunjukkan skrip pembuka kunci (ScriptSig) yang disediakan oleh seseorang, yang mencakup tanda tangan digital dan kunci publik mereka. Sisi kanan menunjukkan skrip penguncian (ScriptPubKey), yang berisi serangkaian opcode dan kumpulan data oleh pencipta UTXO saat menghasilkan UTXO itu (memahami ide umum sudah cukup; kita tidak perlu menyelidiki arti setiap opcode). Opcode dalam skrip penguncian sisi kanan, seperti DUP, HASH160, dan EQUALVERIFY, melakukan hash pada kunci publik dari skrip pembuka kunci sisi kiri dan membandingkannya dengan hash kunci publik yang telah ditetapkan sebelumnya dalam skrip penguncian. Jika cocok, ini mengonfirmasi bahwa kunci publik dalam skrip pembuka kunci cocok dengan hash kunci publik dalam skrip penguncian, lulus verifikasi pertama. Namun, ada masalah: konten skrip penguncian terlihat oleh publik di blockchain, yang berarti siapa pun dapat melihat hash kunci publik. Oleh karena itu, siapa pun dapat mengirimkan kunci publik yang sesuai dan secara palsu mengklaim sebagai orang yang berwenang. Untuk mengatasi hal ini, setelah memverifikasi kunci publik dan hash kunci publik, sistem juga harus memverifikasi apakah inisiator transaksi benar-benar mengontrol kunci publik, yang melibatkan verifikasi tanda tangan digital. Opcode CHECKSIG dalam skrip penguncian menangani verifikasi ini. Singkatnya, di bawah skema P2PKH, skrip pembuka kunci inisiator transaksi harus menyertakan kunci publik dan tanda tangan digital. Kunci publik harus cocok dengan hash kunci publik yang ditentukan dalam skrip penguncian, dan tanda tangan digital harus benar. Kondisi ini harus dipenuhi agar berhasil membuka kunci UTXO.

(Ini adalah ilustrasi dinamis: Diagram skrip penguncian Bitcoin di bawah skema P2PKH
Sumber:https://learnmeabitcoin.com/technical/script)

Penting untuk dicatat bahwa jaringan Bitcoin mendukung berbagai jenis transaksi di luar Pay to Public Key / Public Key Hash, seperti P2SH (Pay to Script Hash). Jenis transaksi tertentu bergantung pada bagaimana skrip penguncian dikonfigurasi saat UTXO dibuat.

Penting untuk memahami bahwa dalam skema P2SH, skrip penguncian dapat menetapkan Hash Skrip, dan skrip pembuka harus menyediakan konten skrip lengkap yang sesuai dengan Hash Skrip ini. Node Bitcoin kemudian dapat mengeksekusi skrip ini, dan jika itu termasuk logika verifikasi multi-tanda tangan, itu efektif mengaktifkan dompet multi-tanda tangan pada blockchain Bitcoin. Dalam skema P2SH, pencipta UTXO perlu memberi tahu orang yang akan membuka kunci UTXO di masa depan tentang konten skrip yang sesuai dengan Hash Skrip. Selama kedua belah pihak mengetahui konten skrip, kita dapat menerapkan logika bisnis yang lebih kompleks daripada hanya multi-tanda tangan. Juga perlu dicatat bahwa blockchain Bitcoin tidak secara langsung mencatat UTXO mana yang terhubung ke alamat mana. Sebagai gantinya, itu mencatat UTXO mana yang dapat dibuka kunci oleh hash kunci publik atau hash skrip. Namun, kita dapat dengan cepat mendapatkan alamat yang sesuai (deretan karakter yang terlihat seperti omong kosong yang ditampilkan dalam antarmuka dompet) dari hash kunci publik atau hash skrip.

Alasan Anda dapat melihat jumlah Bitcoin yang terkait dengan alamat tertentu pada penjelajah blok dan antarmuka dompet adalah karena layanan ini mengurai dan menafsirkan data blockchain untuk Anda. Mereka memindai semua blok dan, berdasarkan hash kunci publik atau hash skrip yang dideklarasikan dalam skrip penguncian, menghitung "alamat" yang sesuai. Ini memungkinkan mereka untuk menampilkan berapa banyak Bitcoin yang terkait dengan alamat itu.

Segregated Witness dan Witness

Memahami P2SH membawa kita lebih dekat ke Taproot, komponen penting untuk BitVM. Namun, sebelum terjun ke Taproot, penting untuk memahami konsep Witness dan Segregated Witness (SegWit). Meninjau skrip penguncian dan pembukaan, serta proses membuka UTXO, menyoroti masalah: tanda tangan digital untuk transaksi disertakan dalam skrip pembukaan. Saat menghasilkan tanda tangan ini, skrip pembukaan itu sendiri tidak dapat menjadi bagian dari data yang ditandatangani (karena parameter yang digunakan untuk menghasilkan tanda tangan tidak dapat termasuk tanda tangan itu sendiri).

Akibatnya, tanda tangan digital hanya dapat mencakup bagian-bagian data transaksi di luar skrip penguncian, artinya tidak dapat sepenuhnya melindungi seluruh data transaksi. Hal ini menyebabkan kerentanan di mana seorang perantara dapat sedikit memodifikasi skrip penguncian tanpa memengaruhi verifikasi tanda tangan. Misalnya, simpul Bitcoin atau kolam penambangan bisa menyisipkan data tambahan ke dalam skrip penguncian. Meskipun perubahan ini tidak memengaruhi verifikasi dan hasil dari transaksi, itu sedikit mengubah data transaksi, yang pada gilirannya mengubah hash transaksi yang dihitung/ID transaksi. Masalah ini dikenal sebagai pemalsuan transaksi.

Masalahnya adalah bahwa jika Anda berencana untuk memulai beberapa transaksi berurutan yang bergantung satu sama lain (misalnya, transaksi 3 merujuk pada output transaksi 2, dan transaksi 2 merujuk pada output transaksi 1), transaksi berikutnya harus merujuk pada hash transaksi sebelumnya. Setiap perantara, seperti kolam penambangan atau simpul Bitcoin, dapat melakukan modifikasi kecil pada skrip pembuka, menyebabkan hash transaksi berbeda dari harapan Anda setelah itu berada di blockchain.

Ketidaksesuaian ini dapat membatalkan urutan transaksi yang saling tergantung yang telah Anda rencanakan sebelumnya. Masalah ini sangat relevan dalam konteks jembatan DLC dan BitVM2, di mana sekelompok transaksi yang saling terkait secara berurutan dibangun, sehingga membuat skenario seperti itu cukup umum.


Secara sederhana, masalah kecacatan transaksi terjadi karena perhitungan ID/hash transaksi mencakup data dari skrip pembuka kunci. Pihak perantara, seperti simpul Bitcoin, dapat melakukan modifikasi kecil pada skrip pembuka kunci, menghasilkan ID transaksi yang tidak sesuai dengan harapan pengguna. Masalah ini berasal dari keterbatasan desain awal Bitcoin. Pembaruan Segregated Witness (SegWit) mengatasi masalah ini dengan memisahkan ID transaksi dari skrip pembuka kunci. Dengan SegWit, perhitungan hash transaksi tidak termasuk data skrip pembuka kunci. Skrip penguncian UTXO di bawah SegWit dimulai dengan opcode “OP_0” sebagai penanda, dan skrip pembuka kunci yang sesuai diubah namanya dari SigScript menjadi Witness.

Dengan mematuhi aturan Segregated Witness (SegWit), masalah kelenturan transaksi diselesaikan secara efektif, menghilangkan kekhawatiran tentang data transaksi yang dirusak oleh node Bitcoin. Fungsi P2WSH (Pay to Witness Script Hash) pada dasarnya sama dengan P2SH (Pay to Script Hash). Anda dapat mengatur hash skrip dalam skrip penguncian UTXO, dan orang yang mengirimkan skrip pembuka kunci akan memberikan konten skrip yang sesuai ke rantai untuk dieksekusi. Namun, jika konten skrip yang Anda butuhkan sangat besar dan berisi banyak kode, metode konvensional mungkin tidak memungkinkan Anda untuk mengirimkan seluruh skrip ke blockchain Bitcoin (karena batas ukuran blok). Dalam kasus seperti itu, Taproot ikut bermain. Taproot memungkinkan kompresi konten skrip on-chain, sehingga memungkinkan untuk menangani skrip yang lebih besar. BitVM memanfaatkan Taproot untuk membangun solusi yang lebih kompleks. Dalam artikel berikutnya dari seri "Mendekati BTC" kami, kami akan memberikan penjelasan rinci tentang Taproot, pra-tanda tangan, dan teknologi canggih lainnya yang terkait dengan BitVM. Tetap disini!

Penafian:

  1. Artikel ini dicetak ulang dari [ Geek Web3], dengan hak cipta milik para penulis asli [Nickqiao & Faust & Shew Wang]. Jika ada keberatan terhadap penayangan ulang, silakan hubungi Gate Belajartim, dan tim akan segera memprosesnya sesuai dengan prosedur yang relevan.
  2. Penyangkalan: Pandangan dan opini yang terdapat dalam artikel ini semata-mata merupakan pandangan dari para penulis dan tidak merupakan saran investasi apa pun.
  3. Versi bahasa lain dari artikel telah diterjemahkan oleh tim Gate Learn. Tanpa menyebutkanGate.io, artikel yang diterjemahkan tidak boleh disalin, disebarluaskan, atau diplagiatkan.
Начните торговать сейчас
Зарегистрируйтесь сейчас и получите ваучер на
$100
!