V čem spočívá problém dvojí útraty?
Problém dvojí útraty je potenciálním problémem v digitálních hotovostních systémech, kde jsou stejné prostředky vypláceny dvěma příjemcům ve stejnou dobu. Bez vhodných protiopatření protokol sám o sobě nemůže tento problém zcela vyřešit. Uživatelé totiž nemají jak ověřit, zda prostředky, které obdrží, byly vyplaceny jiným.
Ve světě digitální hotovosti je nutné zajistit, aby nebylo možné zkopírovat konkrétní jednotku měny. Pokud by Alice mohla přijmout 10 měnových jednotek, desetkrát je zkopírovat a vložit a poté sama mít 100 měnových jednotek, celý systém by se rozpadl. Stejně tak, pokud by mohla poslat stejných 10 měnových jednotek Bobovi a Carol ve stejnou dobu, systém by také nefungoval. Proto musí existovat mechanismy, které tomu zabrání, aby se zajistilo správné fungování digitálních měn.
Jak předejít problému s dvojí útratou?
Centralizovaný přístup
Centralizované přístupy se snáze implementují než decentralizovaná řešení, která obvykle vyžadují supervizora pro správu systému a kontrolu vydávání a vydávání měnových jednotek. eCash Davida Chauma řeší problém dvojího utrácení prostřednictvím centralizovaného přístupu.
Banky mohou používat slepé podpisy k vydávání digitálních aktiv podobných hotovosti uživatelům (což může umožnit anonymní peer-to-peer transakce). To je podrobně popsáno v dokumentu z roku 1982 „Techniky slepého podpisu pro nesledovatelné platby“ od kryptografa Davida Chauma.
V tomto případě, pokud chce uživatel Dan obdržet 100 $ v digitální hotovosti, musí to nejprve oznámit bance. Pokud je na jeho účtu zůstatek, vygeneruje se náhodné číslo (více, pokud je nominální hodnota menší). Předpokládejme, že se vygeneruje pět náhodných čísel, každé v hodnotě 20 USD. Aby zabránil bankám ve sledování konkrétních měnových jednotek, Dan zaměňuje situaci tím, že ke každému náhodnému číslu přidává oslepující faktor.
Tyto údaje pak předal bance, která mu z účtu odečetla zůstatek 100 USD a podepsala zprávu, čímž prokázala, že každá z pěti zpráv byla směnitelná za 20 USD. V tuto chvíli může Dan používat digitální hotovost vydanou bankou. Šel do Erininy restaurace na jídlo a utratil 40 dolarů.
Dan odstraňuje oslepující faktor a odhaluje nonce spojené s každou digitální hotovostní „bankovkou“, což je jedinečný identifikátor pro každou jednotku měny (přibližně ekvivalentní sériovému číslu). Prozradí dvě z náhodných čísel Erin, která si musí okamžitě vyměnit peníze s bankou, aby Danovi zabránila platit jiným obchodníkům. Banka ověří, zda je podpis platný, a pokud je správný, vloží na Erin účet 40 dolarů.
Použité „bankovky“ jsou následně zničeny, a pokud chce Erin využít zůstatek na svém účtu stejným způsobem, musí být vydány další bankovky.
Mechanismus Chaumian eCash je mimořádně cenný pro soukromé převody. Mechanismus eCash sám o sobě však nemá žádný odpor. Vzhledem k tomu, že banky jsou centralizované uzly, jakmile se systém pokazí, budou trpět všichni. Bankovky vydané bankou nemají samy o sobě žádnou hodnotu; jejich hodnota pochází výhradně z ochoty banky vyměnit bankovky za americké dolary. Zákazníci podléhají bance a musí spoléhat na pověst banky, aby mohli provozovat fondy. To je přesně ten problém, který mají kryptoměny řešit.
Decentralizovaný přístup
Vyhnout se problému dvojího utrácení v ekosystému bez mechanismů dohledu je ještě náročnější. Účastníci se stejnou pravomocí se musí vzájemně koordinovat podle stejného souboru pravidel, aby zabránili podvodům a motivovali všechny uživatele k poctivému jednání.
Největší inovací prezentovanou v bílé knize o bitcoinech je řešení problému dvojího utrácení. Satoshi Nakamoto navrhl bezprecedentní datovou strukturu nyní známou jako blockchain.
Blockchain je ve skutečnosti jen databáze s některými unikátními vlastnostmi. Účastníci sítě (nazývaní uzly) provozují specializovaný software, který jim umožňuje synchronizovat vlastní kopie databáze mezi sebou. Tímto způsobem může celá síť auditovat transakční historii sahající až do bloku geneze. Vzhledem k tomu, že blockchain je veřejně viditelný, bude snazší odhalit a zabránit podvodům, jako je identifikace pokusů o dvojité utrácení transakcí.
Když uživatel publikuje transakci, není okamžitě přidána do blockchainu a musí být nejprve vytěžena, než bude možné blok načíst. Příjemce platby tedy může potvrdit, že transakce je platná, až po zadání bloku do řetězce. V opačném případě bude příjemce riskovat ztrátu prostředků, pokud odesílatel zaplatí stejný token jinde.
Jakmile je transakce potvrzena, vlastnictví tokenu je přiřazeno novému uživateli a ověřeno celou sítí, takže tokeny již nelze utratit dvakrát. Z tohoto důvodu mnoho lidí doporučuje před přijetím platné platby počkat na více potvrzení. Každý následující blok výrazně zvyšuje množství práce potřebné k úpravě nebo přepsání řetězce (jako například v případě 51% útoku).
Vraťme se k situaci v restauraci. Dan se vrátil do restaurace a tentokrát si všiml nálepky na okně s nápisem „Tento obchod podporuje platby bitcoiny“. Nemohl zapomenout na své poslední jídlo a objednal si stejné jídlo znovu, stálo 0,005 bitcoinů.
Erin ukazuje Danovi veřejnou adresu, což je adresa pro přenos. Danovo oznámení o transakci je v podstatě podepsaná zpráva oznamující, že 0,005 bitcoinů, které vlastní, nyní vlastní Erin. Aniž bychom zacházeli do přílišných podrobností, každý, kdo uvidí Danovu podepsanou transakci, může potvrdit, že tokeny jsou skutečně jeho, a proto má Dan pravomoc je poslat.
Jak však již bylo zmíněno, transakce je platná až po načtení do bloku a potvrzení. Přijetí nepotvrzené transakce je jako předchozí obdržení 40 $ v eCash, pokud není okamžitě proplaceno prostřednictvím banky, odesílatel může utratit prostředky jinde. Erin by proto měla počkat alespoň 6 potvrzení bloků (přibližně jednu hodinu), než přijme platbu od Dana.
Problém dvojí útraty bitcoinu
Bitcoin je pečlivě navržen tak, aby zabránil útokům typu double-spend, alespoň pokud je protokol používán tak, jak bylo zamýšleno. To znamená, že pokud někdo čeká na transakci, aby dostal potvrzení o zablokování, odesílatel nebude moci transakci snadno vrátit zpět. Transakci lze zvrátit pouze „obrácením“ blockchainu, což vyžaduje obrovské množství hashovací síly.
Některé útoky typu double-spend se však specificky zaměřují na uživatele, kteří přijímají nepotvrzené transakce. Například u malých nákupů obchodníci nechtějí čekat, až bude transakce zahrnuta do bloku. Vytížené restaurace rychlého občerstvení nemusí být schopny čekat tak dlouho, jak bude síť trvat na zpracování každé transakce. Pokud má tedy obchodník povolené „okamžité“ platby, může se potýkat s problémem dvojího utrácení. Někdo si může objednat hamburger a zaplatit za něj, pak okamžitě poslat stejné prostředky zpět na svou vlastní adresu. Dokud je manipulační poplatek pozdější transakce vyšší, může být nejprve potvrzen, čímž se předchozí transakce stane neplatnou.
V současnosti existují tři běžné útoky s dvojitým utrácením:
51% útok: Jednomu subjektu nebo organizaci se podaří ovládat více než 50 % hash rate za účelem odstranění nebo úpravy pořadí transakcí. Tento typ útoku je extrémně nepravděpodobný na bitcoinové síti, ale na jiných sítích k němu došlo.
Závodní útok: Dvě konfliktní transakce jsou zveřejněny za sebou pomocí stejných prostředků, ale pouze jedna transakce je potvrzena. Cílem útočníka je zneplatnit další platbu ověřením transakce v jeho prospěch. Například zasílání finančních prostředků na adresu, kterou ovládá. Rasový útok obvykle znamená, že příjemce přijme nepotvrzenou transakci jako platbu.
Finney útočí: Útočník předem vytěží transakci a vloží ji do bloku, ale okamžitě ji nezveřejní do sítě. Místo toho zaplatil stejný token do jiné transakce před zveřejněním dříve vytěženého bloku, čímž platbu zneplatnil. Nezbytnými podmínkami pro Fenneyho útok je, že události probíhají v určitém pořadí a úspěch závisí také na tom, zda příjemce nepotvrzenou transakci přijme.
Jak vidíme, obchodníci mohou výrazně snížit své riziko a vyhnout se tomu, aby se stali obětí dvojího utrácení tím, že jednoduše trpělivě čekají na potvrzení blokování.
Shrnout
Uživatelé mohou použít útoky typu double-spend k narušení elektronických hotovostních systémů typu peer-to-peer a použít stejné prostředky vícekrát k hledání nespravedlivých zisků. V minulosti, protože se tento problém musel dobře řešit, vývoj tohoto oboru stagnoval.
Naštěstí se používání nevidomých podpisů stalo poutavým řešením v centralizovaných finančních řešeních. Následně vývoj mechanismu proof-of-work a technologie blockchain dal vzniknout Bitcoinu, silné formě decentralizované měny, která zase poskytla inspiraci pro tisíce kryptoměnových projektů.

