144 / 736PATH

Derivation Path

Jalur derivasi kunci

Satu cadangan dapat menghasilkan banyak akun dan alamat. Derivation Path menunjukkan tempat yang harus dituju dalam struktur itu agar pemulihan menemukan kunci yang sama dengan dompet semula.

Derivation Path adalah urutan langkah tepat untuk menurunkan kunci tertentu dari kunci awal. Bayangkan folder di komputer: memiliki drive yang benar tidak cukup jika Anda membuka folder yang salah. Namun kunci dompet dihitung secara matematis, bukan dicari dalam berkas tersimpan. Data awal dan jalur yang sama menghasilkan hal yang sama. Jalur berbeda dapat mengarah ke bagian lain dari dompet yang sama. Ini bukan alamat pembayaran, kata sandi, atau pengganti cadangan.

Anna sedang memulihkan dompet ketika perangkat lunak meminta jalur yang sebelumnya tidak pernah perlu ia pikirkan. Dompet adalah aplikasi atau perangkat untuk menerima dan mengirim bitcoin. m/0/7 terlihat rumit, tetapi dibaca berurutan: m adalah simpul privat utama, dari sana diturunkan kunci turunan 0, lalu kunci turunan 7 darinya. Simpul di sini berarti posisi pada pohon kunci, bukan komputer di jaringan Bitcoin. Angka adalah indeks, posisi dalam urutan, bukan jumlah uang atau nomor transaksi. Standar BIP 32 memakai kunci diperluas yang memuat kunci serta chain code, data tambahan untuk menurunkan kunci turunan. Jadi tulisan jalur tanpa kunci awal tidak bisa menandatangani pembayaran. [1] [10]

Ambil m/84'/0'/0'/0/7. Bagian pertama setelah m menandai BIP 84 untuk SegWit native, cara membentuk alamat dan membelanjakan dana. Berikutnya adalah Bitcoin mainnet, jaringan utama dengan bitcoin sungguhan, akun 0, cabang penerimaan eksternal 0, dan indeks 7. Ini posisi alamat kedelapan karena hitungan dimulai dari nol. Akun memisahkan kelompok dana, sedangkan cabang menunjukkan kegunaan alamat. Dalam susunan BIP 44, cabang 1 dipakai untuk kembalian sendiri, jumlah yang tetap menjadi milik pengirim setelah pembayaran. Tiga langkah pertama bertanda apostrof dan bersifat hardened; dua terakhir normal. Apa yang diubah penanda itu? [2] [5]

Kunci privat adalah nilai angka rahasia yang dipakai dompet untuk membuat tanda tangan digital yang mengizinkan pembelanjaan dana. Hardened menandai metode penurunan yang membutuhkan kunci privat induk. Langkah normal dapat menurunkan kunci publik turunan dari xpub, kunci publik diperluas. Bersama jenis skrip yang sesuai, ini memungkinkan pembentukan alamat tanpa kemampuan menandatangani pembayaran. xpub saja tidak dapat melewati langkah hardened. Menurut BIP 380, 0' dan 0h bermakna sama, bukan 0 normal. Untuk pembaca teknis, BIP 32 membagi indeks 32-bit menjadi normal 0 hingga 2^31−1 dan hardened 2^31 hingga 2^32−1; penanda memetakan nol ke indeks 2^31. Menghilangkannya saat menyalin mengubah perhitungan, bukan sekadar tampilan. [1] [7] [10]

BIP 43 menyebut tingkat hardened pertama sebagai purpose, yaitu tujuan susunan tersebut. Nilai yang disepakati membantu dompet mengenali penggunaan umum suatu cabang. Sebagai acuan, 44' menandai P2PKH tradisional, pembayaran yang dilindungi hash kunci publik; 49' menandai P2SH-P2WPKH, SegWit dalam pembungkus lama demi kompatibilitas; 84' menandai P2WPKH native; dan 86' menandai single-key P2TR, konstruksi Taproot dengan satu kunci internal. Semua itu adalah cara berbeda untuk menetapkan syarat membelanjakan dana. Angka saja tidak menyulap jalur menjadi skrip yang tepat atau memaksakannya lewat konsensus jaringan. Perangkat lunak tetap harus membentuk keluaran yang benar. Tidak semua dompet memakai konvensi ini. [3] [2] [4] [5] [6]

Anna dapat menghubungkan hanya xpub satu akun untuk melihat pemasukan, bukan seluruh dompet. Jika asalnya m/84'/0'/0', posisinya sudah berada pada tingkat akun. Untuk mencapai contoh tadi, hanya tersisa akhiran relatif /0/7. Menambahkan lagi seluruh jalur dari akar berarti memulai penurunan lanjutan dari tempat yang salah; lagi pula langkah hardened tidak bisa dilakukan dari xpub. Kunci diperluas yang diekspor memuat kedalaman dalam pohon serta fingerprint induk, tanda pengenal singkat, tetapi bukan catatan lengkap seluruh langkah sebelumnya. Karena itu jalur asli yang hilang tidak selalu dapat langsung dibaca dari xpub. [1] [7]

Descriptor menjelaskan kunci dan syarat pembelanjaan agar perangkat lunak membentuk keluaran yang dipantau. BIP 380 mengizinkan fingerprint dan jalur asal ditulis dalam kurung siku sebelum kunci. Langkah itu sudah dilakukan. Akhiran setelah kunci justru menentukan penurunan selanjutnya; tanda bintang * dapat mewakili rangkaian turunan. Fingerprint berukuran empat byte dan bisa bertabrakan: kunci berbeda dapat memiliki tanda singkat yang sama. Itu bukan bukti identitas atau pengganti kunci. Bitcoin Core 29.0 menyediakan deriveaddresses lewat RPC, antarmuka pemrograman node. Perintah ini menghitung alamat dari descriptor serta rentang jika ditentukan; perhitungan itu sendiri tidak memeriksa saldo atau mengirim dana. [7] [1] [9]

Jalur saja tidak dapat menghasilkan kunci Anda tanpa data awal. Membagikan xpub berbeda: penerimanya dapat menurunkan kunci publik dalam cabang yang dapat diakses, lalu mengikuti alamatnya dengan jenis skrip yang sesuai. Itu tidak memberi wewenang membelanjakan, tetapi bisa merugikan privasi. BIP 32 juga memperingatkan risiko yang tidak begitu jelas: xpub induk digabung dengan kunci privat turunan bocor yang dapat dicapai melalui langkah normal bisa mengungkap kunci privat diperluas milik induk. Batas hardened menghalangi jalur khusus kembali ke induk tersebut. Ia tidak membatalkan kunci yang sudah bocor atau menyelamatkan dana yang dikuasai kunci itu. [1]

Kembali ke pemulihan. Seed Phrase adalah kata-kata cadangan. Menurut BIP 39, kata-kata itu dan passphrase opsional menghasilkan seed, rahasia awal untuk membuat kunci. Passphrase adalah teks rahasia tambahan, bukan kata sandi aplikasi biasa. Dengan seed berbeda, jalur yang sama menghasilkan kunci berbeda. Jaringan, akun, cabang, dan jenis skrip juga harus cocok. Perangkat lunak perlu menelusuri cukup banyak alamat dan riwayat: Gap Limit menghentikan pencarian setelah serangkaian alamat belum terpakai. Jadi saldo nol saja tidak membuktikan kehilangan kunci. Anna dapat membandingkan hasil dengan alamat penerimaan yang dikenal dan pembayaran lama. Diterimanya jalur hanya menunjukkan bahwa program bisa memprosesnya, bukan bahwa seluruh dompet awal sudah ditemukan. [8] [2] [7]

Untuk gambaran yang lebih utuh, baca entri ini bersama HD Wallet, Extended Public Key (xpub), Gap Limit, Output Descriptor, BIP 39, Seed Phrase. Entri ini juga dirujuk dari HD Wallet, Watch-only Wallet, Change Address, Extended Public Key (xpub).

DOC · 001BIP 32 — Hierarchical Deterministic WalletsSpesifikasi DOC · 002BIP 44 — Multi-Account HierarchySpesifikasi DOC · 003BIP 43 — Purpose FieldSpesifikasi DOC · 004BIP 49 — P2WPKH nested in P2SHSpesifikasi DOC · 005BIP 84 — Native P2WPKH derivationSpesifikasi DOC · 006BIP 86 — Single Key P2TR OutputsSpesifikasi DOC · 007BIP 380 — Output Script DescriptorsSpesifikasi DOC · 008BIP 39 — From mnemonic to seedSpesifikasi DOC · 009Bitcoin Core 29.0 — deriveaddresses RPCDokumentasi DOC · 010Bitcoin Developer Guide — WalletsDokumentasi
Direvisi: Utamakan sumber · Bukan nasihat investasi