Blockchain/Tahap IV · Kedalaman protokol/4.2 Naik taraf/Pelajaran 4
Deskriptor output
Tatabahasa kunci: mengapa benih sahaja mungkin tidak dapat memulihkan apa yang telah anda bina
BahanInstans yang sedang berjalan bagi Bitcoin Core (versi 23 atau lebih baru)Dompet perkakasan yang mampu mengeksport deskriptor awamEditor teks untuk memeriksa dan mengubah rentetan deskriptor
Ingin tahu
- Apakah maklumat khusus yang hilang dalam frasa pemulihan 24 perkataan yang menyebabkannya tidak mencukupi untuk memulihkan setiap alamat dalam dompet multisig?
- Bagaimanakah checksum yang dilampirkan pada rentetan deskriptor dapat mengesan satu aksara yang bertukar tempat sebelum perisian cuba mengimportnya?
- Mengapa Bitcoin Core menukar dompet baru kepada mod deskriptor secara lalai dalam versi 23, dan apa yang akan rosak jika anda memulihkan dompet gaya lama menggunakan sandaran moden?
Teroka
- Sebelum adanya deskriptor, dompet HD bergantung pada laluan derivasi yang tersirat. Pengguna menyandarkan frasa benih atau kunci awam lanjutan (xpub) dan menganggap perisian akan membina semula alamat menggunakan konvensyen standard BIP44. Kaedah ini berfungsi untuk dompet tandatangan tunggal yang ringkas sehingga Segregated Witness diaktifkan pada Ogos 2017 pada blok 481,824. Pengenalan jenis alamat P2WPKH dan P2WSH bermakna satu xpub tidak lagi menerangkan struktur penuh cara alamat diterbitkan, lalu menyebabkan kegagalan pemulihan apabila dana kelihatan hilang kerana dompet mengimbas jenis skrip yang salah.
- BIP380 mentakrifkan Output Script Descriptors sebagai bahasa standard untuk menerangkan himpunan skrip output yang digunakan dalam dompet Bitcoin HD. Walaupun BIP380 menetapkan rangka kerjanya, BIP 381 hingga 386 menetapkan jenis ekspresi individu seperti pk(), pkh(), sh(), wpkh() dan wsh(). Deskriptor ialah ekspresi berstruktur yang menerangkan sepenuhnya sesuatu skrip output (scriptPubKey). Sebagai contoh, 'wpkh([d34db33f/84'/0'/0']xpub…/0/*)' menyatakan secara eksplisit jenis skrip, asal kunci melalui cap jari induk (master fingerprint) dan laluan derivasi, kunci awam lanjutan, serta julat indeks yang perlu diimbas. Tiada apa-apa yang dibiarkan kepada tekaan.
- Format ini menyertakan checksum selepas aksara '#' untuk mengesan kesilapan taip. Jika pengguna menyunting deskriptor secara manual atau menyalinnya dengan salah, perisian akan mengesahkan checksum sebelum menerima input tersebut. Ini mencegah kerosakan senyap, iaitu alamat yang tidak sah diimbas tanpa henti tanpa sebarang hasil. Dompet perkakasan boleh mengeksport deskriptor yang mengandungi kunci awam dan laluan derivasi tetapi secara eksplisit mengecualikan kunci peribadi, membolehkan nod dalam talian memantau aset luar talian dengan selamat tanpa mendedahkan benih.
- Miniscript, yang dibangunkan oleh Pieter Wuille, Andrew Poelstra dan Sanket Kanjalkar sejak tahun 2019 dan ditetapkan dalam BIP379 (2023), menyediakan cara berstruktur untuk menulis dan menganalisis skrip. Ia membolehkan dompet menggabungkan timelock, multisig dan hashlock dengan selamat dengan memecahkan logik skrip yang kompleks kepada unit-unit ringkas yang boleh dianalisis. Deskriptor kemudiannya boleh menerangkan laluan pemulihan berkunci masa dan syarat berbilang pihak yang tidak mungkin dapat dirakam oleh frasa benih sahaja.
- Bitcoin Core menukar dompet baharu kepada dompet deskriptor secara lalai dalam versi 23 (2022), dan versi 30 (2025) membuang dompet lama (legacy) sepenuhnya; dompet lama hanya boleh dimigrasikan. Dompet yang dibina atas frasa benih BIP39 menghadapi pengajaran yang sama: bagi apa-apa selain dompet kunci tunggal standard, deskriptor mesti disandarkan bersama benih. Walaupun data ini tidak menjejaskan keselamatan kunci peribadi jika bocor—kerana ia hanya mengandungi maklumat awam—ia tetap memerlukan perlindungan daripada kebocoran privasi, kerana ia mendedahkan dengan tepat alamat mana yang dikawal oleh pengguna serta struktur derivasinya.
- Untuk melihatnya secara praktikal, cipta dompet baharu dalam Bitcoin Core dan jalankan 'listdescriptors' untuk mencetak deskriptornya, yang setiap satunya berakhir dengan checksum selepas '#'. Salin satu, ubah satu aksara, dan hantarkan kepada 'getdescriptorinfo': Bitcoin Core menolaknya dengan ralat checksum. Perhatikan bahawa 'listdescriptors' biasa hanya menunjukkan kunci awam, yang mencukupi untuk salinan pantau sahaja (watch-only); untuk memulihkan keupayaan berbelanja, anda memerlukan 'listdescriptors true', yang merangkumi kunci peribadi dan mesti dijaga dengan sewajarnya, atau sandaran fail dompet.
Fakta utama
- BIP380 mendefinisikan Output Script Descriptors sebagai bahasa standard untuk menggambarkan skrip keluaran dompet HD.
- Deskriptor secara eksplisit merangkumi jenis skrip, asal kunci (cap jari/laluan), kunci awam dan julat indeks.
- Checksum yang dilampirkan selepas '#' mengesahkan integriti rentetan deskriptor daripada kesilapan taip.
- Versi Bitcoin Core 23 (2022) menjadikan dompet deskriptor sebagai pilihan lalai untuk penciptaan dompet baru.
- Miniscript (BIP379) membolehkan deskriptor mewakili skrip yang kompleks seperti multisig dan timelock dengan selamat.
- Dompet perkakasan mengeksport deskriptor yang mengandungi kunci awam sahaja, membolehkan penandatanganan terpisah udara (air-gapped) bersama nod dalam talian.
Latihan sembilan, enam, tiga, satu
9KumpulSenaraikan 9 jenis skrip keluaran atau konfigurasi dompet yang berbeza (contohnya, P2PKH, P2SH-P2WSH, 2-of-3 multisig). Untuk setiap satu, nyatakan data khusus yang diperlukan untuk memulihkannya.
6KelompokkanKumpulkan 9 perkara tersebut ke dalam 6 kategori berdasarkan sama ada laluan BIP44 standard sudah mencukupi atau data deskriptor eksplisit wajib untuk pemulihan yang betul.
3SaringKurangkan 6 kumpulan tersebut kepada 3 sebab utama mengapa laluan derivasi tersirat gagal untuk jenis dompet moden.
1KristalkanTulis 1 ayat yang menerangkan apa yang ditambahkan oleh deskriptor kepada frasa benih (seed phrase) sehingga pemulihan menjadi deterministik.
Semakan fakta
Tarikh, angka dan dakwaan telah disemak berbanding dengan sumber yang diterbitkan yang disenaraikan di bawah.