pl en id cs cs nl cs hu cs ko en en cs es de cs cs en cs id pl en cs cs de hbs_lat cs cs nl cs hu cs ko en en cs es de cs cs en cs id pl en cs cs de cs cs en cs cs cs cs cs cs cs cs cs fr cs de en nb ceb cs cs ca cs cs en cs cs cs cs en cs en cs cs cs cs cs cs cs en cs cs cs cs cs cs cs cs cs cs cs cs cs cs en cs cs sk cs en en en en
Tento odstavec tu původně nebyl, ale nakonec se přece jenom pokusím i o stručné shrnutí, co to je Bitcoin, protože díky (kvůli) němu vlastně tyto stránky vznikly.
Vlastnit nějaký druh kryptoměny (například „vlastnit bitcoin“), znamená znát tajné heslo (privátní klíč) k nějaké peněžence (veřejný klíč) a tím mít dispoziční právo k nakládání s „obnosem“ v dané peněžence.
Bitcoiny nejsou ani v mobilu, ani v Trezoru – elektronická zařízení slouží jen jako rozhraní, které autorizuje naše požadavky na změny v Blockchainu.
K uchování privátního klíče pomůže „seed“ (semínko)
Privátní klíč má délku 256 bitů:
Kdyby měl délku jeden bit, mohl by nabývat dvou možných hodnot – nula nebo jedna – a „generoval by se jediným hodem mincí. Padla by panna nebo orel. Hod mincí dvakrát za sebou už může být ze čtyř možných kombinací:
0,0 – 0,1 – 1,0 – 1,1
no a při házení mincí třikrát za sebou, už je to kombinací osm:
000, 001, 010, 011, 100, 101, 110, 111
Možná znáte historku, podle které si výherce hry šachy vyžádal „prostou odměnu pár zrnek obilí“, kdy na první políčko bylo položeno jedno zrnko, na druhé dvě, na další čtyři (dvojnásobek) pak 8, 16, 32, 64, 128, 256, 512, 1024 … na což vládce přistoupil, ale už v polovině šachovnice byla královská sýpka prázdná… (políček je 64 = 8×8, a polovina je 32)
232 = 4 294 967 296 (plná hrst zrní je například 10 000 zrnek, a pytel může být 1000 hrstí? takže nám zde vychází už 429 pytlů plných zrní!)
264 = 18 446 744 073 709 552 000
Takže při délce 256 bitů se generuje z množiny 2256 čísel. To znamená, že v binárním tvaru jde o řetězec z nul a jedniček dlouhý 256 znaků (0/1).
Ono to je o něco méně, pár znaků se vyhradilo na další hierarchické členění (protože to úplně postačí) takže nepatrně zkrácený privátní klíč je například toto:
11000111010010100110111100110100011110001110010111110011000111101001111011111101001101001100111110001111000111000010101101010010111101111100110011101011101001001010111011110010001011000111001011010110001011001011110011100000111010001110010101100011110011101111010001101000110001101100101101001011011011110010111001110000110001111010000110001110010111101000 wallet_privkey (bin-> base58): cRM9QqeyGSo44gccBZKoLu4JwHXr5EK3AhrXy7QQFeRmr9aGPcK (h)
Jak to bezchybně opsat pro potřebu zálohy? První uživatelé Bitcoinu se s tím trápili a hledali nějaké zjednodušení. A proto vznikl mnemonic seed (dle BIP39):
Privátní klíč (delší řetězec znaků a čísel) se pohodlněji a spolehlivěji uchovává pomocí seedu – což je nejčastěji 12 anglických slov. Varianta je i 24 či jiný počet a existuje i v dalších jazycích) ze kterých aplikace (mobilní nebo počítačové peněženky) umí privátní klíč sestavit (generovat a následně i derivuje všechny potřebné adresy – peněženky).
Což může vypadat takto:
(záměrně jsme vybrali seed z jiného zdroje)
army van defense carry jealous true garbage claim echo media make crunch
Tento seed patří mezi nejznámější ukázky a tudíž je maximálně „zdiskreditovaný“ (protože byl veřejně publikovaný je pro ostatní uživatele prakticky nepoužitelný, nemá žádný „kredit“, veškeré prostředky tam poslané si může kdokoli „vzít“ (přeposlat k sobě), ale využívá se jako příklad – například v knize Mastering Bitcoin (autor: Andreas Antonopoulos) nebo na detailnějších ukázkách „zdrojových dat“:
Jak se z jedniček a nul stane lépe člověkem čitelná a „přepsatelná“ varianta?
Vrátíme se k původní ukázce jedniček a nul, kterou použijeme k vytvoření vlastního seedu. Zde již není zdiskreditovaný celý seed, ale kdo si vezme zdrojová data, může si ho sestavit celý (což už ale vyžaduje hlubší znalosti).
Takto vypadá převod „binárních čísel na slova“.
Uchování privátního klíče však na dva základní protichůdné požadavky:
1. Musíme ho mít uložen bezpečně tak, aby nás o něj někdo nemohl připravit.
2. Musíme ho ale mít možnost „obnovit“ – a tedy mít i pláb B, abychom ho definitivně neztratili.
Některé nástroje [python] pro práci s PK a podobně:
Je privátní klíč opravdu tak bezpečný?
Privátní klíč má délku 256 bitů, takže se generuje z množiny 2256 čísel. 2256 = 115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,936 = 1077 (deset a sedmdesát sedm nul - zaokrouhleno) Tolik privátních klíčů se dá náhodně podle daného popisu vygenerovat. Kolik to asi je? Můžeme si to nějak "představit"?
Na Internetu je to všechno dostupné: https://lbc.cryptoguru.org/dio/
(pointou je, že to je generovaná hříčka – a ne databáze, která by vám vyhledala zpětně PK 😀 ale dost lidí kvůli tomu Bitcoinu trochu nedůvěřuje).
Mám takovou analogii: představte si malé zrníčko písku, kterých je v krychlovém milimetru zhruba sto (aby se to dobře počítalo).
V kouli o průměru 1m to je už zhruba 108 zrníček. Což je zatím vyslovitelných sto miliónů. To je přibližně jedno stavební kolečko plné písku. Představte si, že vám je přiděleno jediné zrnko – jako váš privátní klíč. Kdyby mělo odlišnou barvu, asi ho po nějaké době v tom kolečku najdete. Dá to asi práci, ale najdete. Ale jdeme dál, ono jich je víc. Víc než v nějakém lomu? Nebo na nějaké mořské pláži? Víc než na všech plážích světa?
Těch zrníček je 1077 – což zabírá objem 1069 m3.
No a to je koule o průměru …. třetí odmocnina z 2.28 * 1068 je…. něco * 1022 m,
což je koule o průměru 1019 km, plná písku. Uf.
Planeta Neptun je od Slunce vzdálená 4 * 109 km. Musíme vzít v úvahu kouli zahrnující Oortův oblak Sluneční soustavy – plnou písku.
Objem Země je cca 1012 km³ což je (…12 [km] +3*3 [m] +8 [gs] = 29) 1029 zrnek písku.
Pro 1077 by bylo potřeba (77-29) 1048 planet velikosti Země!
Představte si tedy všechny planety viditelného vesmíru s pískem na povrchu. Tak toho písku je zhruba tak (respektive pořád o něco víc, ta planety by všechny mohly být celé z písku! I jejich Slunce. Všechno z písku!)
A tam hledejte své jedno zrnko!
All Bitcoin private keys is simply an integer between number 1 and 115792089237316195423570985008687907852837564279074904382605163141518161494337 or HEX: from 1 to 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141.
Je samostatný projekt, který se snaží co nejvíce přístupnou formou přiblížit celou škálu možností i úskalí moderních technologií.