Double spend
Próba użycia tych samych cyfrowych środków w dwóch sprzecznych transakcjach, z których tylko jedna może zostać zaakceptowana przez sieć.
Czym jest podwójne wydanie
Double spend oznacza podwójne wydanie. Nadawca próbuje stworzyć dwie transakcje, które konkurują o te same środki.
W świecie cyfrowym dane da się kopiować. Bez wspólnej historii i reguł konsensusu nie byłoby jasne, która wersja wydania ma być uznana za prawdziwą.
Blockchain rozwiązuje ten problem przez kanoniczną historię. Gdy sieć uzna jedną transakcję za poprawną, sprzeczna transakcja zostaje odrzucona albo wypada z historii.
Gdzie pojawia się ryzyko
- Transakcja pending
- Transakcja jest widoczna, ale nie została jeszcze uwzględniona w bloku.
- Pierwsze potwierdzenie
- Transakcja trafiła do bloku, ale krótka reorganizacja nadal jest możliwa.
- Kolejne potwierdzenia
- Każdy kolejny blok zwiększa koszt cofnięcia historii.
- Atak 51%
- Przy większości mocy konsensusu atakujący może próbować zbudować konkurencyjną historię.
- Finality
- Moment, w którym cofnięcie transakcji staje się praktycznie lub ekonomicznie skrajnie trudne. Zobacz: finality.
Jak Bitcoin ogranicza podwójne wydanie
W Bitcoinie każda transakcja wydaje konkretne UTXO, czyli niewydane wyjścia wcześniejszych transakcji. To samo UTXO nie może zostać wydane dwa razy w zaakceptowanym łańcuchu.
Jeśli dwie transakcje próbują wydać to samo UTXO, sieć ostatecznie zaakceptuje jedną z nich. Druga będzie sprzeczna z kanoniczną historią.
Dlatego odbiorcy czekają na potwierdzenia. Im głębiej transakcja jest w łańcuchu, tym trudniej i drożej zbudować alternatywną historię.
Jak wygląda to w sieciach kontowych
W Ethereum nie ma modelu UTXO. Konto ma saldo i nonce, czyli licznik transakcji.
Dwie transakcje z tym samym nonce konkurują ze sobą. W kanonicznej historii może zostać wykonana tylko jedna wersja dla danego nonce.
Mechanika jest inna niż w Bitcoinie, ale cel pozostaje ten sam: sieć ma uzgodnić jedną spójną historię sald i transakcji.
Najczęstsze błędne założenia
- Podwójne wydanie nie oznacza zwykłego używania salda wiele razy w czasie.
- Widoczność transakcji w portfelu nie daje jeszcze pełnej pewności rozliczenia.
- Jedno potwierdzenie ma inne znaczenie w Bitcoinie, Ethereum i mniejszych sieciach.
- Małe płatności mogą akceptować mniejsze ryzyko, a duże transfery wymagają większej pewności.
- Ataki reorganizacyjne są dużo łatwiejsze na słabszych sieciach niż na Bitcoinie czy Ethereum.
Potwierdzenia istnieją właśnie po to
Czekanie na potwierdzenia zmniejsza ryzyko, że transakcja zostanie wyparta przez konkurencyjną historię. Im większa kwota, tym większe znaczenie ma finality albo liczba potwierdzeń.
