Gap Limit menentukan berapa banyak alamat yang belum digunakan secara berurutan sebelum dompet berhenti mencari. Saat memulihkan dari cadangan, dompet menghitung ulang alamat dan memeriksa apakah ada riwayat transaksi. Aturan berhenti mencegahnya menelusuri begitu banyak kemungkinan tanpa akhir. Pembayaran di luar batas itu bisa tidak muncul meskipun pemiliknya memiliki kunci yang benar. Melewati batas tidak menghapus dana atau membatasi jumlah kunci yang bisa diturunkan.
Anna memakai dompet, yaitu aplikasi atau perangkat untuk menerima dan mengirim bitcoin. Ia membuat banyak alamat penerimaan lebih dahulu, yakni informasi yang diperlukan orang lain untuk mengirim pembayaran kepadanya, tetapi sebagian tidak pernah dipakai. Setelah pemulihan, beberapa pembayaran tidak terlihat. Bayangkan pencarian dengan batas 20: alamat berindeks 0 memiliki riwayat, indeks berikutnya 1–20 tidak, dan indeks 21 menerima pembayaran. Indeks hanyalah nomor posisi alamat dalam urutan; penomoran dimulai dari nol. Pemindaian berhenti setelah deretan kosong, sebelum mencapai 21, sehingga pembayaran itu terlewat. Jika ada alamat terpakai dalam deretan yang diperiksa, hitungan celah dimulai lagi. Jadi batas ini tidak berarti seluruh dompet hanya boleh memiliki paling banyak dua puluh alamat. [1] [6]
Apa arti belum digunakan di sini? Bukan berarti alamat itu tidak punya uang sekarang. Anna mungkin menerima pembayaran lalu membelanjakan semuanya. Saldonya menjadi nol, tetapi riwayat transaksi tetap ada sehingga alamat tetap dianggap terpakai dalam pencarian. Karena itu BIP 44 memeriksa riwayat, bukan hanya saldo saat ini. Menganggap setiap alamat kosong belum pernah dipakai dapat menghentikan pemulihan terlalu dini. Penerimaan yang sudah lama dibelanjakan pun berguna untuk memeriksa dompet hasil pemulihan. [1]
BIP 44 adalah standar susunan akun dan alamat dalam dompet hierarkis, yang menyusun kunci dan alamat seperti pohon dengan berbagai cabang. Aturan Address gap limit menetapkan batas 20 untuk pencarian pada cabang penerimaan eksternal, yaitu urutan alamat untuk menerima pembayaran. Perangkat lunak seharusnya memperingatkan pengguna ketika membuat alamat di luar batas itu. Ini adalah kesepakatan pemulihan, bukan aturan konsensus yang menentukan apakah jaringan menerima transaksi. Dompet lain dapat memakai pengaturan atau prosedur berbeda. Aturan itu juga bukan anjuran untuk terus menggunakan alamat penerimaan yang sama. [1]
Dompet lama mungkin mengetahui alamat yang dibuat jauh di depan dalam urutan. Ketika dipulihkan hanya dari cadangan kunci, perangkat lunak baru belum tentu tahu sejauh mana Anda pernah membuat alamat. Dokumentasi Electrum memperingatkan hal ini: alamat di luar Gap Limit mungkin tidak ditemukan secara otomatis saat pemulihan biasa. Solusi yang dijelaskan adalah menaikkan batas atau menurunkan lebih banyak alamat sampai posisi yang terpakai tercapai. Pengaturan yang tepat bergantung pada perangkat lunak dan jenis dompet. Nilai bawaan 20 dalam FAQ tersebut merujuk pada Electrum 2.0, bukan semua dompet masa kini. [2]
Bayangkan dompet sebagai pohon yang teratur. Akun memisahkan kelompok dana, lalu di dalam akun terdapat cabang alamat. Dalam BIP 44, change=0 menandai cabang penerimaan dan change=1 cabang kembalian milik sendiri, yaitu jumlah yang tetap menjadi milik pengirim setelah pembayaran. Pencarian akun dimulai dari akun 0 dan cabang eksternalnya. Jika ada riwayat, pencarian berlanjut ke akun berikutnya; akun pertama tanpa riwayat menghentikan pencarian akun. Karena itu standar melarang pembuatan akun baru jika akun sebelumnya belum punya riwayat. Celah pada satu cabang alamat berbeda dari akun kosong yang dilompati. Menaikkan satu batas tidak dengan sendirinya menentukan akun lain mana yang akan diperiksa. [1]
BIP 32 menjelaskan penurunan kunci secara deterministik: data awal dan jalur yang sama menghasilkan kunci yang sama. Derivation Path adalah rute melalui pohon tersebut. Bersama jenis skrip, yakni aturan pembelanjaan, rute itu menentukan alamat yang dipantau. Karena itu Seed Phrase yang benar, kata-kata cadangan Anda, hanya sebagian dari informasi pemulihan. Pada BIP 39, passphrase opsional juga digunakan untuk menghitung seed, rahasia awal untuk menurunkan kunci. Passphrase adalah teks rahasia tambahan yang berbeda dari kata sandi aplikasi. Passphrase lain mengarah ke dompet lain; menaikkan Gap Limit tidak memperbaikinya. Kunci privat adalah nilai angka rahasia yang dipakai dompet untuk membuat tanda tangan digital yang mengizinkan pembelanjaan dana. Untuk pembaca lanjutan, xpub adalah kunci publik diperluas yang dapat menurunkan kunci publik lainnya. Kunci ini membantu memantau alamat dan pembayaran, tetapi tidak dapat, dengan sendirinya, mengizinkan pembelanjaan. Sendirian ia tidak dapat melewati langkah hardened yang membutuhkan kunci privat induk. Pencarian lebih luas tidak menyediakan kemampuan yang hilang itu. [4] [5] [6]
Bitcoin Core 29.0 menyediakan importdescriptors lewat RPC, antarmuka pemrograman node. Descriptor menjelaskan cara membentuk syarat pembelanjaan dan alamat yang dipantau dari kunci. range menetapkan rentang indeks untuk diturunkan, bukan aturan berhenti setelah celah kosong. Pada descriptor aktif, next_index menentukan indeks berikutnya untuk pembuatan alamat. timestamp menentukan sejak kapan transaksi dicari. now ditujukan bagi keluaran yang diketahui belum pernah digunakan, bukan pengganti pemulihan pembayaran lama. Dokumentasinya juga mencakup blok hingga dua jam sebelum timestamp paling awal di antara descriptor yang diimpor, serta Mempool, kumpulan lokal transaksi yang belum dikonfirmasi. Alamat yang diturunkan dengan benar pun dapat tidak muncul jika periode yang relevan belum diperiksa. [3]
Kembali ke Anna. Jika ia memiliki alamat penerimaan yang dikenal atau catatan pembayaran dari dompet lama, ia bisa memastikan dompet baru benar-benar menemukannya. Bandingkan juga penerimaan yang sudah dibelanjakan, bukan hanya saldo akhir. Pemindaian lebih panjang bisa menemukan riwayat yang terlewat, tetapi membutuhkan waktu dan lebih banyak permintaan. Jika memakai server jarak jauh, lebih banyak alamat yang saling berkaitan bisa terungkap kepadanya. Pencarian itu sendiri tidak memindahkan uang atau mengubah blockchain. Jika riwayat masih berbeda, periksa informasi cadangan, akun, jalur, jenis alamat, serta ketersediaan data historis, bukan sekadar terus menaikkan batas. Menemukan satu alamat belum membuktikan seluruh pemulihan sudah lengkap. [1] [2] [4]
Untuk gambaran yang lebih utuh, baca entri ini bersama HD Wallet, Derivation Path, Extended Public Key (xpub), Output Descriptor, Change Address, Seed Phrase. Entri ini juga dirujuk dari HD Wallet, Derivation Path.