Hlavní navigace

Jak jsem vyhrál Bitcoin

29. 10. 2013 7:45 (aktualizováno) | Ondřej Caletka

Že se dá vyhrát ledacos, o tom jsem se přesvědčil na nedávné konferenci OpenSource řešení v sítích v Karviné. Hlavní cenou tomboly byla rovná třetina bitcoinu. A při závěrečné losovačce padl los právě na mě. To mě donutilo aspoň na chvíli přestat tuhle alternativní měnu ignorovat.

[caption id=„attachment686“ align=„aligncenter“ width=„300“ caption=„Papírová peněženka na Bitcoiny“][/caption]

Sháním klienta. Zn. bezpečný

Protože jsem se o bitcoin nikdy nijak detailně nezajímal, začal jsem se shánět po nějakém bitcoin klientovi až teď. Předem jsem vyloučil originálního plnohodnotného klienta, nehodlám totiž na disku vést kompletní historii všech bitcoinových transakcí. Rovnou jsem vyloučil všechny klienty, kde privátní klíče drží třetí strana. Také ve mně nebudí důvěru webovské peněženky, kde sice práce s klíčem probíhá teoreticky bezpečně JavaScriptem uvnitř prohlížeče, není ale možné nijak auditovat, že JS kód který prohlížeč vykonává neobsahuje backdoory provozovatele webové služby.

Když jsem si takto pročistil seznam z oficiálních stránek, skončil jsem u klienta jménem Multibit. Ten je napsaný v Javě a funguje celkem dobře. Pokud tedy překousnete, že přestože jde o open source, návod na sestavení ze zdrojových kódů jsem na jeho webových stránkách hledal marně. Místo toho je vám vnucen binární jar instalátor, který prostřednictvím průvodce nainstaluje jiný jar do vašeho domácího adresáře.

Měna je svobodná, transakční poplatky ale platit musíte

Největší šok ale následoval, když jsem chtěl peníze z papírové peněženky převést do jiné peněženky (kdo ví, kolik lidí zná privátní klíč od peněženky, zvlášť, když jsem ho vystavil tady na blogu :) ). Chtěl jsem převést kompletní zůstatek, dostal jsem však jen chybovou zprávu, že v peněžence na takový převod není dostatek prostředků. Autor Multibitu totiž rozhodl, že odstraní možnost uživatele rozhodnout o výši transakčního poplatku a program sám ke každé transakci vloží transakční poplatek ve „spravedlivé výši“.

Je to zajímavý paradox. V běžné české nesvobodné měně má český smrtelník už několik let nabídku bankovních produktů, kde si může posílat peníze mezi účty bez poplatků, maximálně s nějakou FUP. Pak přejdete na svobodnou měnu a svobodný software vás nutí platit minimálně půl milibitcoinu za každou transakci. A komu se to nelíbí, ať si software forkne a upraví.

Electrum se server-klient architekturou

Vydal jsem se tedy hledat další lehké klienty. A zaujalo mě Electrum, napsané v Pythonu. Má server-klient architekturu, přičemž úplný paranoik si může pustit i vlastní server. Podle mého názoru ale ani v případě použití veřejně dostupných serverů není pro jejich operátory příliš snadné provádět jejich uživatelům něco hodně ošklivého.

Klient má také vestavěný zajímavý způsob generování peněženky. Podobně jako SuperGenPass, program namísto ukládání privátních klíčů k peněženkám pouze ukládá random seed, tedy jediné číslo, ze kterého při případném importu daný generátor vygeneruje stále stejnou sekvenci pseudonáhodných čísel, takže obnoví všechny peněženky (program jich používá asi osm) najednou. Aby bylo uložení seedu snadnější, jsou převedeny na dvanáct anglických slov, která je možno zapsat v libovolném pořadí.

Crackujeme peněženky s vanitygen

Peněženkou je v bitcoinu myšlena kombinace privátního a veřejného klíče a bývá zvykem s nimi v zájmu lepší anonymity nešetřit. Nevýhodou ale je, že veřejné označení konta tvoří poměrně neosobní alfanumerický řetězec. Chcete-li takové označení konta veřejně šířit, podobně jako já ve sloupci vpravo, může se hodit do něj nějakým způsobem vložit označení příjemce. K tomu slouží program vanitygen. Pracuje tak, že náhodně generuje privátní a veřejné klíče tak dlouho, dokud veřejný klíč neodpovídá zadanému vzoru. Máte-li tedy ohromně výkonný počítač a zároveň ohromné štěstí, můžete pomocí tohoto programu získat privátní klíč k libovolné peněžence. Ve skutečnosti však budete rádi, podaří-li se vám přes noc najít peněženku, jejíž veřejný klíč začíná na pět daných písmen.

$ ./vanitygen 1ahoj
Difficulty: 264104224
[1.52 Mkey/s][total 76950406][Prob 25.3%][50% in 1.2min]
[1.52 Mkey/s][total 183316512][Prob 50.0%][75% in 2.0min]
[1.52 Mkey/s][total 367237696][Prob 75.1%][80% in 38.1s]
[1.52 Mkey/s][total 426706256][Prob 80.1%][90% in 2.0min]
Pattern: 1ahoj
Address: 1ahojDFTAohyjFYYGHYfG94PXXHZxUroG
Privkey: 5KKWs5QWX5ZDSqx7vLgnaLvg5BZaPbtUXrtJ1NqYjmhwF3dCQNm

Program během zkoušení ukazuje průběh generování peněženek, včetně výpočtu pravděpodobnosti, že za dobu běhu programu došlo k nalezení peněženky podle zadaného vzoru. I když pravděpodobnost roste směrem ke 100 %, nejde o ukazatel průběhu. Máte-li štěstí, můžete žádanou peněženku najít při 2% pravděpodobnosti, při smůle naopak nemusíte peněženku najít ani při pravděpodobnosti 100 %.

Co s nimi?

Zbývá vyřešit, co s Bitcoiny dělat. V této oblasti přijímám tipy v komentářích níže. Zatím to vidím tak, že vzhledem k deflační tendenci bitcoinové měny se možná nejvíc vyplatí co nejdéle ji zadržovat :)