143 / 736GAP

Gap Limit

Limit po sobě nepoužitých adres

Po obnově peněženky se někdy neukáže celá historie. Gap Limit vysvětluje jeden z důvodů: hledání skončilo na dlouhé řadě adres, na které nikdy nic nepřišlo.

Gap Limit říká peněžence, po kolika po sobě jdoucích nepoužitých adresách má přestat hledat další. Peněženka totiž při obnově ze zálohy znovu vypočítá adresy a zjišťuje, zda na nich proběhly transakce. Aby neprohledávala obrovské množství možností bez konce, používá hranici pro prázdnou mezeru. Platba za touto hranicí může zůstat skrytá v přehledu, přestože k ní má majitel správné klíče. Samotné překročení limitu peníze nemaže ani neomezuje počet klíčů, které lze odvodit.

Anna používá peněženku, aplikaci nebo zařízení pro příjem a odesílání bitcoinů. Předem si v ní vytvořila mnoho přijímacích adres, tedy údajů pro zaslání platby, ale některé nikdy nepoužila. Po obnově peněženky část plateb chybí. Představme si hledání s limitem 20: adresa s indexem 0 má historii, následující adresy s indexy 1–20 ji nemají a na index 21 přišla platba. Index je jen pořadové číslo adresy; číslování začíná nulou. Skenování se zastaví po prázdné řadě ještě před indexem 21, takže tuto platbu nenajde. Kdyby se v prohledávané řadě objevila použitá adresa, počítání mezery by začalo znovu. Limit tedy neznamená, že celá peněženka smí mít nejvýše dvacet adres. [1] [6]

Co v tomto případě znamená nepoužitá? Nejde o adresu, na které právě nejsou peníze. Anna mohla platbu přijmout a později ji celou utratit. Zůstatek je potom nulový, ale transakční historie nezmizela a adresa je pro hledání stále použitá. Pravidlo BIP 44 proto pracuje s historií, nikoli pouze s aktuálním zůstatkem. Kdyby obnova všechny prázdné adresy považovala za nikdy nepoužité, mohla by se zastavit příliš brzy. Proto má při kontrole obnovené peněženky význam i starší příjem, který už jste utratili. [1]

BIP 44 popisuje uspořádání účtů a adres v hierarchické peněžence. Ta klíče a adresy řadí do stromu s různými větvemi. Pravidlo nazvané Address gap limit stanovuje hranici 20 pro hledání na vnější přijímací větvi, tedy v řadě adres určených k přijímání plateb. Při vytváření adresy za touto hranicí má program uživatele varovat. Je to dohoda o způsobu obnovy, nikoli pravidlo konsenzu, podle kterého síť přijímá nebo odmítá transakce. Jiné peněženky mohou mít jiná nastavení či jiný postup hledání. Nevyplývá z toho ani doporučení používat stále tutéž přijímací adresu. [1]

Původní peněženka může znát i adresy vytvořené daleko dopředu. Při obnově z pouhé zálohy klíčů nový program nemusí vědět, jak daleko jste dříve došli. Electrum na to výslovně upozorňuje v dokumentaci: adresy za Gap Limit se při běžné obnově nemusí automaticky najít. Popsaným řešením je zvýšit limit nebo odvozovat další adresy až k použitému místu. Nastavení je ale potřeba řešit podle konkrétního programu a typu peněženky. Údaj o výchozích 20 v této FAQ se vztahuje k Electrum 2.0; není to univerzální hodnota všech dnešních peněženek. [2]

Peněženku si lze představit jako uspořádaný strom. Účty oddělují skupiny peněz; uvnitř účtu bývají různé větve adres. Podle BIP 44 označuje change=0 přijímací větev a change=1 větev pro vlastní vratku, tedy částku, která po platbě zůstává odesílateli. Objevování účtů začíná účtem 0 a kontrolou jeho vnější větve. Najde-li historii, pokračuje na další účet; první účet bez historie hledání účtů zastaví. Proto standard požaduje nevytvářet nový účet, pokud předchozí nemá historii. Adresní mezera jedné větve a přeskočený prázdný účet jsou různé problémy. Zvýšení jednoho limitu samo neurčuje, které další účty program prohledá. [1]

BIP 32 popisuje deterministické odvozování klíčů: ze stejných vstupních údajů a stejné cesty vzniknou stejné klíče. Derivation Path je cesta tímto stromem; spolu s typem skriptu, tedy způsobem zápisu podmínek utracení, určuje, které adresy peněženka sleduje. Správná Seed Phrase, záložní slova, je proto jen část informace potřebné pro správnou obnovu. U BIP 39 do výpočtu seedu, výchozího tajemství pro odvozování klíčů, vstupuje také případná passphrase, další tajný text odlišný od hesla aplikace. Jiná passphrase vede do jiné peněženky; větší Gap Limit ji neopraví. Soukromý klíč je tajný číselný údaj, kterým peněženka vytváří digitální podpis pro schválení útraty. Pro pokročilé: xpub je rozšířený veřejný klíč pro odvozování dalších veřejných klíčů. Pomáhá sledovat adresy a platby, ale sám neopravňuje k utrácení. Sám ale neumí překročit krok hardened, který vyžaduje soukromý klíč rodiče. Širší hledání tuto chybějící možnost nenahradí. [4] [5] [6]

Bitcoin Core 29.0 nabízí přes RPC, programové rozhraní uzlu, příkaz importdescriptors. Descriptor je popis způsobu, jak z klíčů sestavit podmínky utracení a sledované adresy. Parametr range určuje rozsah indexů pro odvozování; není to pravidlo zastavení po prázdné mezeře. next_index u aktivního descriptoru určuje příští index pro generování adres. timestamp zase určuje, odkdy hledat transakce v historii. Hodnota now je určená pro výstupy, o nichž víme, že dosud nebyly použity; nenahrazuje obnovení starších plateb. Dokumentace zahrnuje i bloky až dvě hodiny před nejstarším timestamp mezi importovanými descriptory a Mempool, místní zásobu dosud nepotvrzených transakcí. I správně odvozená adresa proto může v přehledu chybět, pokud nebylo prohledáno potřebné období. [3]

Vraťme se k Anně. Má-li z původní peněženky známou přijímací adresu nebo záznam platby, může ověřit, zda je nová peněženka skutečně našla. Porovnávat je vhodné i již utracené příjmy, nejen výsledný zůstatek. Delší sken může odhalit přehlédnutou historii, ale stojí čas a více dotazů; při použití vzdáleného serveru mu může ukázat další související adresy. Samotné hledání nic nepřevádí a nemění blockchain. Pokud se historie stále neshoduje, je potřeba ověřit údaje zálohy, účet, cestu, typ adres i dostupnost historických dat, ne pouze dál zvětšovat limit. Úspěšné nalezení jedné adresy ještě nedokazuje úplnost celé obnovy. [1] [2] [4]

Pro nejúplnější obraz čtěte toto heslo společně s HD Wallet, Derivation Path, Extended Public Key (xpub), Output Descriptor, Change Address, Seed Phrase. Opačným směrem na něj odkazují také HD Wallet, Derivation Path.

DOC · 001BIP 44 — Account discovery and address gap limitSpecifikace DOC · 002Electrum FAQ — Gap limit and generated addressesDokumentace DOC · 003Bitcoin Core 29.0 — importdescriptors RPCDokumentace DOC · 004BIP 32 — Hierarchical Deterministic WalletsSpecifikace DOC · 005BIP 39 — From mnemonic to seedSpecifikace DOC · 006Bitcoin Developer Guide — WalletsDokumentace
Revidováno: Primární zdroje · Nejde o investiční doporučení