Programinės įrangos piniginė naudoja atsitiktinį skaičių, kad sugeneruotų pagrindinį privatųjį raktą.
Tada, naudodamas deterministinį ir negrįžtamą algoritmą, jis gali iš to pagrindinio privataus rakto gauti neribotą skaičių antrinių privačių raktų.
Kodėl mums reikia deterministinio ir negrįžtamo algoritmo?
Kadangi deterministinis reiškia, kad visi antriniai privatūs raktai visada gali būti generuojami iš to paties pagrindinio privataus rakto, o negrįžtamas reiškia, kad pagrindinis privatus raktas negali būti atkurtas iš jokio antrinio privataus rakto.
Štai kodėl ji vadinama hierarchine deterministine (HD) pinigine. Privačių raktų išvedimo struktūra primena medį: pirminis raktas gali išvesti kelis antrinius raktus, kiekvienas antrinis raktas gali išvesti kelis anūkinius raktus ir šis procesas gali tęstis neribotą laiką.
Kai pirmą kartą sukuriama HD piniginė arba sukuriama atsarginė piniginės kopija, sugeneruojama mnemoninė frazė. Mnemoninė frazė yra angliškų žodžių seka. Ši seka naudojama generuoti seed, o pradinė dalis naudojama generuoti visus privačius piniginės raktus. Kitaip tariant, mnemoninė frazė tarnauja kaip piniginės atsarginė kopija, nes ją galima panaudoti norint atkurti piniginę. Savo ruožtu sėkla atitinka pradinį atsitiktinį skaičių, esantį už deterministinės piniginės.
Vienas iš pagrindinių HD piniginės pranašumų yra tas, kad norint sugeneruoti bet kokį skaičių antrų viešųjų raktų, reikalingas tik pagrindinis viešasis raktas. Kitaip tariant, naujus viešuosius adresus galima sukurti naudojant pagrindinį viešąjį raktą, nereikalaujant prieigos prie privačių raktų, nesvarbu, ar tai būtų pagrindinis privatus raktas, ar antriniai privatūs raktai. Tačiau visus šiuos sugeneruotus adresus galiausiai vis tiek galima valdyti pagrindiniu privačiuoju raktu.
Žinoma, šis dizainas taip pat kelia pavojų. Jei atskleidžiama mnemoninė frazė, ji iš esmės prilygsta visų privačių raktų atskleidimui. Kai tai atsitiks, piniginėje esančio skaitmeninio turto saugumas iš tikrųjų prarandamas.
Kodėl reikia tiek daug privačių raktų?
Priežastį, kodėl vartotojams reikia tiek daug privačių raktų, galima suprasti naudojant „Bitcoin“ operacijų keitimo mechanizmą.
Bitcoin sandoris yra duomenų struktūra, kurią sudaro įvesties ir išvestis. Ji taip pat apima būtiną scenarijų informaciją, kuri perduoda vertę iš šaltinio (įvesties) į paskirties vietą (išvestį).
Norint suprasti Bitcoin įvestis ir išvestis, svarbu žinoti UTXO (Nepanaudotų sandorių išvesties) sąvoką. UTXO yra pagrindinis Bitcoin operacijos vienetas ir parodo nepanaudotą operacijos išvestį. Vienas bitkoinas iš tikrųjų paskirstomas daugeliui operacijų ir daugybei blokų UTXO pavidalu. Tiesą sakant, nėra centralizuoto įrašo, kuriame būtų saugomas paprastas sąskaitos likutis; vietoj to yra tik decentralizuoti UTXO, užrakinti atitinkamiems savininkams.
UTXO gali reprezentuoti bet kokią vertę, tačiau sukūręs jis yra nedalomas taip pat, kaip fizinė moneta negali būti padalinta per pusę. Jei UTXO vertė yra didesnė nei suma, reikalinga operacijai, visas UTXO vis tiek turi būti išleistas, o perteklius bus grąžintas kaip pakeitimas.
Pavyzdžiui, įsivaizduokite, kad turite 20 vienetų vertės UTXO ir norite mokėti už 1 vienetą. Operacija turi sunaudoti visą 20 vienetų UTXO ir sukurti du išėjimus: viena išvestis siunčia 1 vienetą gavėjui, o kita siunčia 19 vienetų atgal į jūsų piniginę kaip pakeitimą. Šia prasme dauguma Bitcoin operacijų sukuria pokyčius.
Dėl to kyla kitas klausimas: ar pakeitimas turi būti siunčiamas atgal pradiniu adresu, ar naujai sugeneruotu adresu?
Kai Satoshi Nakamoto sukūrė Bitcoin, buvo naudojamas adreso keitimo mechanizmas, o tai reiškia, kad dažnai sukuriamas naujas adresas, kad būtų galima gauti kiekvienos operacijos pakeitimą. Šio dizaino pranašumas yra tas, kad jis padeda apsaugoti vartotojų privatumą ir sumažina tam tikrą saugumo riziką.
Realiame gyvenime tai galima palyginti su kelių banko sąskaitų atidarymu skirtingais pavadinimais ir tapatybėmis skirtinguose bankuose. Net jei kas nors gali stebėti pinigų srautą kiekvienoje sąskaitoje, jiems bus daug sunkiau atsekti visą tai iki tikrojo skaitmeninio turto savininko. Tai yra dalis to, kas suteikia Bitcoin santykinį anonimiškumą.
Štai kodėl piniginės naudotojams reikia tiek daug privačių raktų. Kadangi viešieji raktai ir privatūs raktai visada egzistuoja poromis, o kiekviena operacija gali generuoti naują pakeitimo adresą, visus šiuos adresus atitinkančių privačių raktų saugojimas ir atsarginių kopijų kūrimas kitu atveju taptų dideliu techniniu iššūkiu. HD piniginė išsprendžia šią problemą, leisdama vienai šaknei generuoti bet kokį vaikų viešųjų raktų ir privačių vaikų raktų skaičių, o tai labai pagerina skaitmeninių piniginių naudojimą.
