Tarkvarakott kasutab peamise privaatvõtme genereerimiseks juhuslikku arvu.
Seejärel saab see deterministliku ja pöördumatu algoritmi kaudu sellest peamisest privaatvõtmest tuletada piiramatul arvul alamprivaatvõtmeid.
Miks me vajame deterministlikku ja pöördumatut algoritmi?
Kuna deterministlik tähendab, et kõik privaatsed alamvõtmed saab alati genereerida samast privaatvõtmest, samas kui pöördumatu tähendab, et privaatset ülemvõtit ei saa rekonstrueerida ühestki privaatsest alamvõtmest.
Seetõttu nimetatakse seda hierarhiliseks deterministlikuks (HD) rahakotiks. Privaatvõtmete tuletusstruktuur meenutab puud: vanemvõti võib tuletada mitu alamvõtit, iga alamvõti võib tuletada mitu lapselapsevõtit ja see protsess võib jätkuda lõputult.
HD-rahakoti esmakordsel loomisel või rahakoti varundamisel luuakse mnemooniline fraas. Mnemooniline fraas on ingliskeelsete sõnade jada. Seda jada kasutatakse seemne genereerimiseks ja seemet kasutatakse seejärel kõigi rahakoti privaatvõtmete genereerimiseks. Teisisõnu, mnemooniline fraas toimib rahakoti tagavarana, sest seda saab kasutada rahakoti taastamiseks. Seeme omakorda vastab algsele juhuslikule numbrile deterministliku rahakoti taga.
HD-rahakoti üks peamisi eeliseid on see, et suvalise arvu avaliku alamvõtme genereerimiseks on vaja ainult peamist avalikku võtit. Teisisõnu, uusi avalikke aadresse saab luua avalikust üldvõtmest, ilma et oleks vaja juurdepääsu privaatvõtmetele, olgu see siis privaatne põhivõti või alam-privaatvõtmed. Kõiki neid loodud aadresse saab siiski lõpuks juhtida privaatvõtmega.
Muidugi kaasnevad selle disainiga ka riskid. Kui mnemooniline fraas paljastatakse, on see sisuliselt samaväärne kõigi privaatvõtmete paljastamisega. Kui see juhtub, on rahakotis olevate digitaalsete varade turvalisus tegelikult kadunud.
Miks on nii palju privaatvõtmeid vaja?
Põhjust, miks kasutajad vajavad nii palju privaatvõtmeid, saab mõista Bitcoini tehingute muutmismehhanismi kaudu.
Bitcoini tehing on andmestruktuur, mis sisaldab sisendeid ja väljundeid. See sisaldab ka vajalikku skriptiteavet, mis edastab väärtuse selle allikast (sisend) sihtkohta (väljundisse).
Bitcoini sisendite ja väljundite mõistmiseks on oluline teada UTXO (kulutamata tehinguväljund) mõistet. UTXO on Bitcoini tehingu põhiühik ja esindab kulutamata tehinguväljundit. Üks bitcoin on tegelikult jaotatud paljude tehingute ja paljude plokkide vahel UTXO-de kujul. Tegelikkuses puudub tsentraliseeritud kirje, mis salvestaks lihtsat kontojääki; selle asemel on ainult detsentraliseeritud UTXO-d, mis on lukustatud nende vastavatele omanikele.
UTXO võib esindada mis tahes väärtust, kuid kui see on loodud, on see jagamatu samamoodi nagu füüsilist münti ei saa pooleks jagada. Kui UTXO väärtus on suurem kui tehinguks vajaminev summa, tuleb kogu UTXO siiski ära kulutada ja ülejääk tagastatakse muudatusena.
Näiteks kujutage ette, et teil on 20 ühikut väärt UTXO ja soovite maksta 1 ühiku eest. Tehing peab tarbima kogu 20-ühikulist UTXO-d ja looma kaks väljundit: üks väljund saadab adressaadile 1 ühiku, teine aga saadab vahetusrahana teie rahakotti tagasi 19 ühikut. Selles mõttes tekitab enamik Bitcoini tehinguid muutusi.
See toob kaasa veel ühe küsimuse: kas muudatus tuleb saata tagasi algsele aadressile või äsja loodud aadressile?
Kui Satoshi Nakamoto kavandas Bitcoini, kasutati aadressi muutmise mehhanismi, mis tähendab, et sageli luuakse uus aadress iga tehingu muudatuse vastuvõtmiseks. Selle disaini eeliseks on see, et see aitab kaitsta kasutajate privaatsust ja vähendab teatud turvariske.
Reaalses elus võib seda võrrelda mitme pangakonto avamisega erinevates pankades erinevate nimede ja identiteediga. Isegi kui keegi saab igal kontol rahavoogu jälgida, on tal palju raskem seda kõike digitaalsete varade tegeliku omanikuni leida. See on osa sellest, mis annab Bitcoinile suhtelise anonüümsuse.
Seetõttu vajavad rahakoti kasutajad nii palju privaatvõtmeid. Kuna avalikud võtmed ja privaatvõtmed eksisteerivad alati paarikaupa ja iga tehing võib tekitada uue aadressi muutmise, muutuks kõigile neile aadressidele vastavate privaatvõtmete salvestamine ja varundamine suureks tehniliseks väljakutseks. HD-rahakott lahendab selle probleemi, võimaldades ühel juuralal genereerida mis tahes arvu avalikke alamvõtmeid ja lapse privaatvõtmeid, mis parandab oluliselt digitaalsete rahakottide kasutatavust.
