Blockchain/Tahap IV · Kedalaman protokol/4.2 Naik taraf/Pelajaran 2
Tapscript dan pokok skrip (MAST)
Pokok yang menyembunyikan kontrak
BahanPenjelajah blok dengan keupayaan memeriksa data saksiDompet yang serasi dengan Taproot dan menyokong pokok skripKertas graf untuk melukis pokok Merkle binari
Ingin tahu
- Mengapakah perbelanjaan di bawah satu klausa kontrak harus mendedahkan keseluruhan kontrak?
- Apa yang menjadikan perbelanjaan secara kerjasama tidak dapat dibezakan daripada tandatangan biasa?
- Bagaimanakah satu kunci membuat komitmen kepada keseluruhan pustaka syarat perbelanjaan yang tersembunyi?
Teroka
- Merkelized abstract syntax trees (MAST) mula-mula diterangkan oleh Russell O'Connor pada tahun 2013 dan dikembangkan dalam cadangan-cadangan pada tahun 2016 dan 2017. Konsep ini meletakkan syarat perbelanjaan alternatif ke dalam pokok Merkle, membolehkan pembelanja mendedahkan hanya cabang tertentu yang digunakannya. Walaupun istilah “abstract syntax tree” merujuk kepada struktur pengkompil yang setiap syaratnya mencipta nod baharu, pelaksanaan Bitcoin berkembang secara berbeza. Anthony Towns kemudian mencipta akronim terbalik (backronym) “Merklized Alternative Script Tree” untuk menggambarkan struktur yang sebenarnya diterima pakai: satu set skrip lengkap dan bebas, dengan hanya satu dipilih pada masa perbelanjaan.
- Taproot mengintegrasikan struktur pokok ini ke dalam peraturan konsensus melalui BIP341. Setiap daun dalam pokok Merkle mengandungi sebuah skrip, dan akar pokok tersebut menyumbang kepada kunci output akhir. Apabila dana dibelanjakan melalui “laluan skrip”, pembelanja mendedahkan skrip daun tertentu, inputnya, dan bukti Merkle—hash nod adik-beradik (sibling) pada setiap aras. Cabang yang tidak digunakan kekal tersembunyi di rantaian, sekali gus memelihara privasi bagi susunan yang kompleks seperti multisig atau timelock yang sebelum ini terpaksa dibalut dalam P2SH.
- Tapscript (BIP342) ialah dialek khusus yang digunakan untuk skrip daun ini, dan berbeza daripada Bitcoin Script lama dalam beberapa aspek penting. OP_CHECKMULTISIG dinyahdayakan dalam tapscript. Penggantinya, OP_CHECKSIGADD, memeriksa satu tandatangan terhadap satu kunci dan menambah 1 kepada kiraan berjalan; tandatangan kosong tidak menambah apa-apa, manakala tandatangan bukan kosong yang tidak sah menggagalkan keseluruhan skrip; sesuatu skrip merangkaikan satu operasi bagi setiap kunci dan membandingkan kiraan dengan ambang. Setiap tandatangan dipadankan dengan kunci yang diketahui, jadi tiada padanan cuba-cuba dan tandatangan boleh disahkan secara berkelompok.
- Tapscript juga menyediakan ruang untuk naik taraf melalui opcode OP_SUCCESS: hari ini, sebarang skrip yang mengandunginya berjaya tanpa syarat, jadi tiada siapa menggunakannya, dan soft fork pada masa hadapan boleh memberikannya makna yang mengehadkan tanpa membatalkan apa-apa yang sedang digunakan. Had saiz skrip 10,000 bait yang lama dibuang dalam tapscript; sebaliknya, saiz skrip hanya dibatasi oleh berat blok dan had dasar (policy). Selain itu, bajet operasi tandatangan berskala mengikut saiz data saksi, sekali gus mencegah serangan penafian perkhidmatan (denial-of-service) melalui pengesahan tandatangan yang berlebihan.
- Ambil contoh praktikal: seorang pengguna menyimpan dana dalam laluan kunci 2-of-2 untuk perbelanjaan harian, dengan kedua-dua pihak menandatangani secara kerjasama tanpa mendedahkan apa-apa selain tandatangan Schnorr standard. Namun, pokok skrip itu mengandungi daun tersembunyi yang membolehkan satu kunci berbelanja sendirian selepas timelock setahun. Jika rakan kerjasama itu tidak lagi memberi respons, pengguna boleh mengaktifkan cabang pemulihan ini. Bukti Merkle hanya mendedahkan skrip timelock tersebut, manakala cabang lain yang mungkin wujud—seperti pemulihan sosial atau hashlock—kekal rahsia sepenuhnya.
- Untuk mengesahkan mekanisme ini, buka penjelajah blok dan cari transaksi Taproot yang dibelanjakan melalui laluan skrip. Periksa data saksinya: input skrip, skrip daun itu sendiri, dan blok kawalan (control block) yang bait pertamanya menggabungkan versi daun (0xc0 untuk tapscript) dengan bit pariti, diikuti oleh kunci dalaman dan satu hash 32 bait bagi setiap aras pokok. Bandingkan dengan perbelanjaan laluan kunci daripada jenis alamat yang sama; perbelanjaan tersebut hanya mendedahkan tandatangan 64 atau 65 bait tanpa sebarang data skrip, menunjukkan bagaimana kontrak yang kompleks kekal tidak kelihatan apabila tidak digunakan.
Fakta utama
- MAST bermaksud Merklized Alternative Script Tree, akronim terbalik (backronym) yang dicipta oleh Anthony Towns untuk menggambarkan struktur Taproot.
- Tapscript menghapuskan had saiz skrip lama sebanyak 10,000 bait, dengan skrip hanya dibatasi oleh berat blok dan dasar (policy).
- OP_CHECKSIGADD dalam tapscript menggantikan OP_CHECKMULTISIG untuk pemeriksaan ambang yang mesra pengesahan berkelompok.
- Perbelanjaan melalui laluan skrip mendedahkan skrip daun, inputnya, dan bukti Merkle yang terdiri daripada hash adik-beradik (sibling).
- Opcode OP_SUCCESS menyediakan ruang untuk soft fork pada masa hadapan tanpa merosakkan tapscript sedia ada.
- Versi daun 0xc0 menandakan tapscript; versi daun yang tidak diketahui dibiarkan tanpa sekatan untuk soft fork pada masa hadapan.
Latihan sembilan, enam, tiga, satu
9KumpulSenaraikan 9 syarat perbelanjaan yang berbeza (contohnya, multisig, timelock, hashlock) yang boleh diletakkan dalam pokok skrip Taproot. Nyatakan tujuan utama setiap syarat tersebut.
6KelompokkanKumpulkan 9 syarat tersebut ke dalam 6 kategori berdasarkan implikasi privasinya: sepenuhnya tersembunyi, sebahagiannya didedahkan, sentiasa kelihatan, atau batasan struktur yang lain.
3SaringKurangkan 6 kumpulan tersebut kepada 3 sebab utama mengapa menyembunyikan cabang skrip tertentu penting untuk kecekapan rantaian dan keselamatan pengguna.
1KristalkanTulis 1 ayat yang menerangkan bagaimana pokok Merkle membolehkan satu kunci awam membuat komitmen kepada beberapa peraturan perbelanjaan yang saling eksklusif tanpa mendedahkannya.
Semakan fakta
Tarikh, angka dan dakwaan telah disemak berbanding dengan sumber yang diterbitkan yang disenaraikan di bawah.
- BIP341: Taproot: SegWit version 1 spending rules
- BIP342: Validation of Taproot Scripts
- Bitcoin Optech, 'MAST' and 'Tapscript' topics
- Anthony Towns, 'Merklized Alternative Script Trees' proposal discussions