Przejdź do treści
Słownikpodstawybitcoinethereumproof-of-work

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ń.

Najczęstsze pytania

Nie wprost. Chodzi o próbę oszukania odbiorcy płatności przez stworzenie sprzecznych transakcji, zanim sieć jednoznacznie ustali historię.

Ma niski poziom pewności. Może zostać potwierdzona, zastąpiona, odrzucona albo utknąć w zależności od sieci i opłaty.

Żeby zmniejszyć ryzyko reorganizacji albo podwójnego wydania przed zaksięgowaniem depozytu użytkownika.

W praktyce bardzo mocno je ogranicza. Dokładny poziom ochrony zależy od mechanizmu finality, wartości transakcji i bezpieczeństwa sieci.