Co je dvojí utrácení?
Dvojité utrácení je potenciální problém v digitálním peněžním systému, kde lze stejné prostředky utratit dvakrát ve stejném časovém intervalu. Bez adekvátních protiopatření je protokol, který tento problém neřeší, vůči tomuto typu činnosti zranitelný – uživatelé si jednoduše nemohou být jisti, že jejich prostředky nebyly vynaloženy jinde.
V kryptoprostoru je nanejvýš důležité omezit duplikaci určitých jednotek. Pokud by Alice mohla přijmout 10 jednotek a pak je 10krát zkopírovat a vložit, aby získala 100 jednotek, celý systém by také nefungoval, pokud by bylo Borisovi a Katyi zasláno stejných 10 jednotek současně. Aby tedy digitální peníze fungovaly, musí být vytvořeny mechanismy, které takové možnosti omezí.
Jak můžete zabránit dvojímu utrácení?
Centralizovaný přístup
Centralizovaný typ systému je mnohem snazší implementovat, na rozdíl od decentralizovaných alternativ. V zásadě se jedná o přítomnost jednoho subjektu nebo organizace, která spravuje systém a kontroluje vydávání a distribuci nových jednotek. Dobrým příkladem centralizovaného řešení problému dvojích výdajů je eCash Davida Chauma.
K vydání digitálního aktiva, které uživatelům napodobuje hotovost (schopné anonymní a peer-to-peer výměny), může banka použít slepé podpisy – jak popsal kryptograf David Chaum ve svém dokumentu z roku 1982 „Blind Signatures for Untraceable Payments“.
Pokud chce například uživatel (říkejme mu Denis) dostat 100 dolarů v digitální měně, musí o tom nejprve informovat banku. Pokud je na účtu zůstatek, vygeneruje jedno náhodné číslo nebo několik čísel pro menší nominální hodnoty. Řekněme, že vytvoří pět čísel, z nichž každému je přiřazena hodnota 20 $. Aby banka zabránila sledování měnových jednotek, Denis skryje náhodná čísla přidáním oslepujícího faktoru ke každému z nich.
Poté předá informace bance, která z jeho účtu strhne 100 USD a poté podepíše zprávy potvrzující, že každá z pěti informací je směnitelná za 20 USD. Nyní může Denis utratit finanční prostředky vydané bankou. Jde do Iriny restaurace a koupí jídlo, které stojí 40 dolarů.
Denis může odstranit oslepující faktor a použít náhodné číslo spojené s digitální měnou na šeku, které bude sloužit jako jedinečný identifikátor pro každou položku (podobně jako sériové číslo). Dva z nich prozradí Irině, která je nyní musí okamžitě aktivovat v bance, aby Denis nemohl utratit stejné peníze jinde. Banka zkontroluje podpisy, a pokud vše půjde dobře, připíše na Irinin účet 40 USD.
Po aktivaci jsou použité šeky spáleny, a pokud chce Erin svůj nový zůstatek znovu utratit, bude muset získat nové šeky stejným způsobem.
Chaumův eCash může být vhodný pro soukromé finanční transakce, ale tento přístup není příliš spolehlivý, protože banka je ústředním bodem selhání. Vydaný šek sám o sobě nestojí za nic, protože jeho hodnota je určena výhradně ochotou banky vyměnit šek za dolary. Zákazníci jsou zároveň vydáni na milost a nemilost banky a musí se na ni spolehnout, že budou moci utrácet peníze, což je přesně ten problém, který si kryptoměna klade za cíl napravit.
Decentralizovaný přístup
Zajistit, aby finanční prostředky nemohly být v ekosystému utraceny dvakrát bez dozorčího orgánu třetí strany, je náročnější. V tomto případě by se stejně silní účastníci museli dohodnout na určitých pravidlech, aby se zabránilo podvodům a motivovali všechny uživatele k čestnému jednání.
Největší novinkou prezentovanou v bitcoinovém whitepaperu bylo řešení problému dvojího utrácení. Ačkoli to není jako takové zmíněno, Satoshiho navrhovaná datová struktura je nyní široce známá jako blockchain.
Blockchain je databáze se sadou jedinečných vlastností. Účastníci sítě (nazývaní uzly) používají specializovaný software k synchronizaci kopie databáze s ostatními účastníky. Díky tomu mohou všichni účastníci sítě kontrolovat historii každé transakce, počínaje blokem genesis. Zveřejněním blockchainu lze snadno odhalit podvodné aktivity, jako jsou transakce s dvojitým utrácením, a zabránit jim.
Když uživatel odešle transakci, není okamžitě přidána do blockchainu: nejprve musí být zahrnuta do bloku prostřednictvím těžby. Příjemce bude převod považovat za platný až po přidání bloku s transakcí do řetězce. V opačném případě riskuje příjemce, že neobdrží slíbené prostředky, protože odesílatel by mohl stejné mince utratit jinde.
Jakmile je transakce potvrzena, nelze mince utratit dvakrát, protože vlastnictví je převedeno na nového uživatele a celá síť to může ověřit. Z tohoto důvodu mnozí doporučují před přijetím platby počkat, až obdržíte několik potvrzení. Každý následující blok zvyšuje množství úsilí potřebného ke změně nebo přepsání řetězce (jako při 51% útoku).
Vezměme si znovu příklad restaurace. Denis se vrací do restaurace a všimne si reklamy, že toto zařízení přijímá platby za služby v bitcoinech. Jídlo, které měl minule, mu chutnalo, a tak si je objednává znovu. Bude to stát 0,005 BTC.
Irina poskytne svou veřejnou adresu, na kterou by měl poslat peníze. Denis odvysílá transakci, což je v podstatě podepsaná zpráva, že Denisových 0,005 BTC je nyní převedeno na Irinu. Každý, komu je předložena Denisova podepsaná transakce, si může ověřit, že byl skutečně vlastníkem mincí a měl tedy právo je poslat.
Jak jsme již řekli, transakce je platná pouze v případě, že je zahrnuta v potvrzeném bloku. Přijímání nepotvrzených transakcí je podobné jako přijímání 40 USD v eCash z předchozího příkladu bez včasného proplacení šeku v bance, což odesílateli umožňuje utratit stejnou částku jinde. Irina by proto měla počkat na nejméně šest potvrzení o blokování (asi jednu hodinu), než přijme Denisovu platbu.
Dvojité výdaje na bitcoinové síti
Mechanismus bitcoinu zabraňuje útokům typu double-spending, alespoň pokud protokol funguje správně. To znamená, že pokud někdo čeká na potvrzení transakcí v bloku, nebude pro odesílatele snadné je zvrátit. Abychom toho dosáhli, musí být blockchain obrácen, ale to bude vyžadovat obrovské množství hashovací síly.
Existuje však několik útoků s dvojitou útratou, které se zaměřují na nepotvrzené transakce. Například při nákupu za nízkou cenu nemusí prodávající chtít čekat na zahrnutí transakcí do bloku. Rychlé občerstvení přetížené objednávkami také nebude moci správně fungovat při tak dlouhé době zpracování každého nákupu. Pokud tedy firma spoléhá na okamžité platby, stává se zranitelnou vůči dvojímu utrácení. Někdo si mohl objednat hamburger, zaplatit za něj a pak rovnou poslat tytéž prostředky na svou adresu. Nová transakce s vyšším poplatkem bude pravděpodobně nejdříve potvrzena a následně přerušena validace předchozí.
Existují tři oblíbené způsoby implementace dvojitých výdajů:
K 51% útoku dochází, když se nějaké entitě nebo organizaci podaří převzít kontrolu nad více než 50 % celého hashrate sítě, což umožňuje eliminovat transakce nebo změnit jejich pořadí. Takový útok je v případě bitcoinu nepravděpodobný, ale může nastat ve vztahu k jiným blockchainovým sítím.
K rasovému útoku dochází, když jsou současně vysílány dvě konfliktní transakce za použití stejných prostředků, ale je potvrzena pouze jedna z nich. Cílem útočníka je zneplatnit validaci potvrzením pouze transakce, kterou chce (například zasláním stejných prostředků na jeho adresu). Podmínkou takového útoku je povolení prodávajícího zaplatit za zboží prostřednictvím nepotvrzených transakcí.
K útokům Finney dochází, když útočník svou transakcí předem vytěží blok, aniž by jej okamžitě vyslal do sítě. Místo toho utratí coiny znovu, ale v rámci jiné transakce, a teprve poté odvysílá předchozí blok, čímž zruší převod prodejci. Finneyho útoky vyžadují specifický sled událostí a závisí také na ochotě příjemce přijmout nepotvrzené transakce.
Jak vidíme, prodejce, který čeká na potvrzení blokace, má výrazně nižší riziko, že se stane obětí dvojího utrácení.
souhrn
Dvojité utrácení vám umožňuje používat systém digitálních peněz k finančnímu zisku tím, že utratíte stejnou částku více než jednou. Nedostatek adekvátních řešení tohoto problému brání dalšímu pokroku v této oblasti.
Naštěstí příchod slepých podpisů vyřešil mnoho problémů centralizovaných finančních systémů. A vytvoření mechanismů Proof of Work a technologie blockchain dalo vzniknout bitcoinu, silné formě decentralizovaných peněz, která inspirovala mnoho uživatelů k vytvoření tisíců dalších projektů v oblasti kryptoměn.


