Ako funguje vytvorenie X-slovného SEEDu a čo vlastne robí Hierarchicko-Deterministická peňaženka?

HD peňaženky (Hierarchické Deterministické peňaženky) majú niekoľko veľmi zaujímavých vlastností:

Jednotný zdroj a záloha

  • Jeden seed = celá peňaženka: Všetky súkromné kľúče a adresy sa generujú z jedného „seed“ – obvykle 12 alebo 24 slov podľa štandardu BIP-39. Stačí si teda zálohovať tento seed a v prípade straty alebo poškodenia zariadenia dokážete obnoviť celú peňaženku.
    learnmeabitcoin.com

Hierarchická štruktúra

  • Stromová štruktúra kľúčov: HD peňaženky využívajú hierarchickú štruktúru (štandard BIP-32), kde z hlavného (master) kľúča sa odvodzujú „deti“ a ďalej ich potomky. To umožňuje organizovať kľúče do rôznych „účtov“ alebo kategórií – napríklad oddeliť osobné transakcie od obchodných. learnmeabitcoin.com

Bezpečné generovanie verejných kľúčov

  • Oddelenie verejných a súkromných kľúčov: Z master kľúča možno odvodzovať nielen súkromné, ale aj rozšírené verejné kľúče (XPUB). To znamená, že môžete napríklad zdieľať XPUB so serverom na generovanie nových adries bez rizika, že by bol kompromitovaný váš master súkromný kľúč. learnmeabitcoin.com
    cointelegraph.com

Deterministický proces

  • Stabilita a opakovateľnosť: Pri použití toho istého seedu a derivačnej cesty (napríklad m/44’/0’/0’/0/x pre Bitcoin) dostanete vždy rovnaké výsledné kľúče. To zaručuje, že ak stratíte zariadenie, obnovíte prístup k svojim prostriedkom presne tak, ako predtým.
    dev.to

Ako sa generuje seed

  • Entropia a BIP-39: Seed sa vytvára pomocou náhodnej entropie (napr. 128 alebo 256 bitov). Táto entropia je následne zakódovaná do ľahko zapamätateľného zoznamu slov z vopred definovaného zoznamu (2048 slov).

Disclaimer: tieto výpočty sú iba orientačné a slúžia iba na ukážku. Nepoužívajte ich na vytváranie SEEDU!

V tejto ukážke budeme pracovať s 12 slovným seedom.
Peňaženka najprv vygeneruje RANDOM 128 bitové číslo, teda 128 núl a jednotiek v náhodnom poradí.
Teoreticky sa to dá vygenorovať a vypočítať aj manuálne, napr. hádzaním mincou.




Potom tento reťazec rozdelíme po 11 bitoch. 11 bitov nám po prevode do decimálnej sústavy dá nejaké číslo v rozsahu od 0 do 2047. Čo je spolu 2048 možných čísel.

Binárne (11 bitov, posledný riadok len 7 bitov) Decimálne Slovo

2048 anglických slov


A takýmto spôsobom sme vypočítali decimálnu hodnotu z binárneho zápisu:


Stále však potrebujeme doplniť chýbajúce 4 bity do posledného slova.
Keďže pre 12 slov potrebujeme 12×11 bitov, čo sa rovná 132, ale my máme iba 128 bitový reťazec.
Doplníme prvé 4 bity, ktoré dostaneme, keď znovu zahashujeme náš 128 bitový reťazec.

Výpočet: $$ \text{SHA-256} = \left( \text{SHA-256}(\text{entropy}) \right) $$

Výpočet: $$ \text{checksum} = \text{first 4 bits} \left( \text{SHA-256}(\text{entropy}) \right) $$

Checksum:

Derivačná cesta (WIP)

m / purpose‘ / coin_type‘ / account‘ / change / address_index

Štruktúra HD Peňaženky

m (master key):

Nastav derivation path