Šta je napad dvostrukog trošenja?
Napad dvostrukog trošenja je pokušaj da se isti novčići potroše dva puta tako što se mreža navede da prihvati jednu uplatu, a zatim ona neprimetno zameni drugom. Zamislite da platite patike, izađete iz prodavnice, a onda vratite račun unazad tako da vam se novac vrati. Reč je o igri tajminga i konsenzusa, a ne o magiji.
„To ne može da se desi ako se uplata jednom prikaže.“ Netačno. Dok se ne skupi dovoljno potvrda, napad dvostrukog trošenja i dalje može da preokrene situaciju. To što je transakcija prva viđena ne znači da je konačna.
Kako funkcioniše napad dvostrukog trošenja
Zamislite napadača koji plaća trgovcu, a istovremeno u tajnosti priprema konfliktnu uplatu kojom iste novčiće šalje sebi. Ako njegova verzija pobedi u trci za prihvatanje, trgovac ne dobija ništa.
- Priprema: Napadač kreira dve transakcije kojima troši iste novčiće.
- Slanje: Jedna se šalje trgovcu, koji vidi da je emitovana i možda prikaže „uplata primljena“.
- Takmičenje: Napadač šalje drugu transakciju kako bi nadmašila prvu i bila uključena u blok.
- Potvrđivanje: Rudari dodaju blokove koristeći proof of work (PoW), a lanac koji najbrže raste deluje kao istina.
- Reorganizacija: Ako napadačeva verzija dobije više potvrda, ranija transakcija može biti izbačena iz lanca, čime se trgovcu poništava uplata.
Da, ovde ključnu ulogu imaju tajming i podsticaji.
Zašto je napad dvostrukog trošenja važan
Pa šta ako neko pokuša ovakav napad? Važno vam je jer se time proverava model poverenja otvorenog novca.
- Prednost: Ako znate kako funkcioniše, lakše ćete odabrati bezbedna pravila za broj potvrda i izbeći trenutno kajanje.
- Šira slika: Otvoreni sistemi počivaju na podsticajima; veći hashrate i pošteno učešće otežavaju napade u decentralizovanoj mreži.
- Relevantnost: Na ovo možete naići kod kripto uplata, na berzama i u svim aplikacijama koje prihvataju novčiće pre nego što dobiju dovoljan broj potvrda.
Kod velikih uplata sačekajte više potvrda. Kod manjih koristite promišljena pravila za upravljanje rizikom, kao što su ograničenja, provera reputacije ili kanali za plaćanje. Bićete zahvalni sebi u budućnosti.
Ključne karakteristike napada dvostrukog trošenja
Evo po čemu se razlikuje od uobičajenih neuspešnih uplata:
- Tajming: Napad cilja kratak period pre nego što transakcija dobije dovoljno potvrda.
- Reorganizacija: Računa na reorganizaciju lanca u korist napadačeve verzije.
- Podsticaji: Iskorišćava podsticaje rudara i mreže kako bi nadmašio poštenu transakciju.
- Opseg: Krajnji cilj je klasično dvostruko trošenje iste količine novčića.
Varijante
U razgovorima o kriptu i diskusijama među programerima pomenuće se nekoliko varijanti:
- Trka: Brzo nadmetanje dve transakcije koje se emituju, često nazvano napad trkom.
- Finney: Rudar unapred iskopa blok sa konfliktnom transakcijom, zatim obavi uplatu žrtvi pre nego što objavi blok. Ovaj napad poznat je kao Finneyjev napad.
- Većinski: Uz dovoljno hashratea, napadač može da prepravi nedavnu istoriju — reč je o klasičnom napadu 51%.
Nula potvrda znači da transakcija nije konačna. Ako odmah prihvatite uplatu, birate brzinu umesto bezbednosti. Ta odluka je na vama.
Primer
Prevarant kupi laptop u prodavnici, prodavac prihvati tek emitovanu transakciju, a nekoliko minuta kasnije lanac daje prednost napadačevoj konfliktnoj transakciji, pa trgovac ostaje bez novčića i laptopa.
Zanimljivost
Satoshi je na forumima govorio o ranim trikovima za dvostruko trošenje i isticao da strpljenje i potvrde nadmašuju većinu amaterskih pokušaja, mnogo pre nego što se pojavila bilo kakva napredna tehnologija. Star savet, ali i dalje dobar.
Zaključak
Ukratko: napad dvostrukog trošenja je igra tajminga u kojoj se iskorišćava konsenzus, a najbolja odbrana su disciplinovano čekanje potvrda i malo ulične pameti.