
Potwierdzenia i reorganizacje: jak ostateczne jest ostateczne?
Twoja transakcja została potwierdzona. Widziałeś ptaszek. Pieniądze są rozliczone — tyle że „rozliczone” okazuje się raczej widmem niż stanem, a to, gdzie na tym widmie się znajdujesz, zależy od łańcucha, od kwoty i od tego, ile kosztowałoby kogoś cofnięcie tego.
To jeden z niewielu zakątków mechaniki łańcuchów bloków, gdzie szczegóły zmieniają to, co naprawdę powinieneś zrobić, więc wart jest dwudziestu minut uwagi.
Co właściwie liczy potwierdzenie
Potwierdzenie nie jest niczyją pieczątką aprobaty. To pomiar głębokości.
Kiedy twoja transakcja trafia do bloku, ten blok stoi na pewnej wysokości łańcucha. Każdy wykopany nad nim blok zakopuje go o warstwę głębiej. Liczba potwierdzeń to po prostu to, ile bloków spiętrzyło się na twoim, wliczając jego własny.
SSP liczy to w sposób standardowy: tipHeight - blockheight + 1. To +1 nie jest błędem o jeden — transakcja siedząca w najnowszym bloku ma jedno potwierdzenie, nie zero. Zero potwierdzeń znaczy, że wciąż jest w mempoolu: rozgłoszona, lecz jeszcze nigdzie niewłączona.
Głębokość coś znaczy dlatego, że cofnięcie twojej transakcji wymaga zastąpienia bloku, który ją zawiera, oraz każdego bloku zbudowanego na nim. Każdy kolejny blok czyni tę pracę trudniejszą. W łańcuchu dowodu pracy nic nigdy nie jest niemożliwe do odwrócenia; robi się to po prostu coraz droższe, a przy pewnej głębokości koszt przewyższa wszystko, co ktokolwiek mógłby zyskać.
Reorganizacje są normalne, a nie atakiem
Oto część, która niepotrzebnie ludzi niepokoi: krótkie reorganizacje łańcucha zdarzają się rutynowo i niemal żadna nie jest złośliwa.
Dwaj kopiący po przeciwnych stronach świata mogą rozwiązać blok w odstępie sekund. Przez chwilę sieć naprawdę nie zgadza się co do tego, który blok jest czubkiem. Potem następny blok ląduje na jednym z nich, ta gałąź staje się dłuższa, a drugi blok osieroca. Każda transakcja, która była tylko w osieroconym bloku, wraca do mempoola i zostaje wykopana ponownie krótko potem.
To protokół działający dokładnie tak, jak zaprojektowano. I właśnie dlatego jedno potwierdzenie jest słabsze, niż wygląda — transakcja o głębokości jeden mieszka w bloku, który wciąż może przegrać rzut monetą.
Głębokie reorganizacje to inne zwierzę. Wymagają albo ogromnej mocy obliczeniowej, albo — czasem — czegoś dziwniejszego: błąd konsensusu Ravencoina wymusił przepisanie znacznie głębsze niż jakakolwiek zwykła reorganizacja, nie dlatego, że ktoś zaatakował, lecz dlatego, że węzły nie zgadzały się co do treści reguł. To rzadkie. To też przypomnienie, że „łańcuch nie może się zmienić” jest skrótem myślowym, a nie fizyką.
Skąd wzięło się sześć potwierdzeń
Konwencja sześciu potwierdzeń nie jest magiczną liczbą i nigdy nie miała być prawem powszechnym.
Bierze się z rachunku prawdopodobieństwa zawartego w samym dokumencie założycielskim Bitcoina: jeśli napastnik kontroluje pewien ułamek mocy obliczeniowej, jak prawdopodobne jest, że dogoni łańcuch z tyłu po danej liczbie bloków? Odpowiedź opada wykładniczo wraz z głębokością. Sześć bloków spycha prawdopodobieństwo powodzenia na poziom zaniedbywalny — dla napastnika dysponującego skromną mniejszością mocy w łańcuchu tak dużym jak Bitcoin.
Każdy element tego zdania kursywą ma znaczenie i właśnie tu ludzie błądzą. Sześć potwierdzeń w Bitcoinie to mniej więcej godzina najdroższych obliczeń na Ziemi. Sześć potwierdzeń w małym łańcuchu dowodu pracy może oznaczać moc, którą ktoś po prostu wynajmie na jedno popołudnie.
To nie jest hipoteza. Mniejsze łańcuchy dowodu pracy — wśród nich Ethereum Classic i Bitcoin Gold — doświadczyły prawdziwych ataków pięćdziesięciu jeden procent, z rzeczywistymi podwójnymi wydatkami wymierzonymi w giełdy. Odpowiedzią branży nie było porzucenie tych łańcuchów, lecz drastyczne podniesienie wymogu potwierdzeń, czasem w tysiące. Ta asymetria jest całą lekcją: głębokość potwierdzeń ma sens wyłącznie w odniesieniu do tego, ile bezpieczeństwa łańcuch faktycznie kupuje na blok.
Dowód stawki zmienia pytanie
W łańcuchu z jawną ostatecznością model różni się rodzajem, a nie tylko stopniem.
Walidatorzy Ethereum okresowo głosują za sfinalizowaniem punktów kontrolnych. Gdy punkt kontrolny zostanie sfinalizowany — co zajmuje mniej więcej dwie epoki, rzędu trzynastu minut — jego odwrócenie nie jest kwestią przeliczenia kogokolwiek. Wymaga, by bardzo duży ułamek całego zastawionego eteru zagłosował za sprzecznymi punktami kontrolnymi, co jest wykrywalne i prowadzi do zniszczenia tego zastawu. Gwarancja nie brzmi „cofnięcie tego byłoby drogie”, lecz „ktokolwiek to cofnie, w sposób dowodliwy traci ogromne pieniądze”.
To naprawdę mocniejsze stwierdzenie niż probabilistyczna głębokość i dlatego czekanie na ostateczność w Ethereum jest innym rodzajem czekania niż liczenie bloków w Bitcoinie. Solana kreśli podobne rozróżnienie między transakcją potwierdzoną optymistycznie a w pełni zakorzenioną.
Praktycznie: w łańcuchach dowodu pracy liczysz głębokość. W łańcuchach dowodu stawki chcesz wiedzieć, czy blok zawierający twoją transakcję został sfinalizowany, a to pytanie na tak lub nie, nie zaś bieżąca suma.
Asymetria, o której nikt nie wspomina
Potwierdzenia mają znaczenie, gdy odbierasz. Przy wysyłaniu mają go ledwie tyle co nic.
Jeśli komuś zapłaciłeś, cofnięcie twojej transakcji przez reorganizację jest drobną niedogodnością — wraca do mempoola, potwierdza się ponownie, a odbiorca czeka tylko trochę dłużej. Nic nie straciłeś.
Jeśli ktoś zapłacił tobie, a ty wydajesz towar, zwalniasz środki albo wysyłasz produkt na podstawie płytkiego potwierdzenia, reorganizacja oznacza, że oddałeś coś za płatność, która już nie istnieje. Wszystkie ataki podwójnego wydatku, które kiedykolwiek miały znaczenie, działały właśnie tak: brały na cel tych, którzy zbyt wcześnie zareagowali na przychodzące pieniądze.
Uczciwa zasada jest więc prosta. Gdy wydajesz, jedno potwierdzenie mówi ci, że transakcja jest prawdziwa i możesz przestać się martwić. Gdy przyjmujesz wartość od nieznajomego, wymagana głębokość powinna rosnąć wraz ze stawką i kurczyć twoje zaufanie dokładnie w tych łańcuchach, w których bloki są tanie w produkcji.
Co SSP ci pokazuje, a czego nie
Lista aktywności SSP daje ci znacznik zerojedynkowy: potwierdzona albo niepotwierdzona. To wybór celowy, bo dla przytłaczającej większości codziennych zastosowań zerojedynkowość jest całą odpowiedzią. Rozwinięcie wiersza transakcji daje bieżącą liczbę potwierdzeń i wysokość bloku, liczone względem aktualnego czubka łańcucha.
Teraz uczciwe ograniczenie: nic w SSP nie uzależnia niczego od głębokości potwierdzeń. Portfel nie ostrzeże cię, że trzy potwierdzenia to mało przy kwocie, którą właśnie dostałeś, i nie ma żadnego pojęcia „wystarczająco” — podaje liczbę i zostawia ocenę tobie. Żaden portfel naprawdę nie może inaczej, bo „wystarczająco” zależy od tego, co zamierzasz zrobić z pieniędzmi, a tego portfel nie może wiedzieć. Ale oznacza to, że interpretacja jest twoim zadaniem, a zielony ptaszek to nie to samo twierdzenie co „nieodwracalne”.
Warto też pamiętać, że liczba potwierdzeń, którą czytasz, pochodzi z tego węzła, z którym rozmawia twój portfel. Podczas dokładnie takiego zdarzenia, w którym głębokość liczy się najbardziej — spornego rozwidlenia, błędu konsensusu, rozłamu łańcucha — pojedyncze źródło jest najmniej godne zaufania.
Reguły kciuka warte zapamiętania
Zero potwierdzeń to nie płatność. To ogłoszenie zamiaru zapłaty. Przy drobnych, niskiego ryzyka kwotach twarzą w twarz może wystarczyć. Przy czymkolwiek innym to nie jest rozliczona transakcja.
Jedno potwierdzenie jest prawdziwe, ale płytkie. W sam raz do wydawania. Za mało, by przyjąć cokolwiek istotnego od kogoś, komu nie ufasz.
Sześć to konwencja w skali Bitcoina, nie stała powszechna. W łańcuchu, w którym moc obliczeniową tanio się wynajmuje, sześć potwierdzeń może być warte bardzo niewiele, a właściwa liczba mogłaby być o rzędy wielkości wyższa.
W łańcuchach dowodu stawki pytaj o ostateczność, zamiast liczyć. Sfinalizowany znaczy coś kategorycznie mocniejszego niż głęboki.
Skaluj głębokość do wartości. Trzydzieści sekund cierpliwości jest tanie. Nieodwracalny błąd nie jest.
Myśl leżąca u podstaw okazuje się cicho krzepiąca, gdy już zaskoczy. Nic w kryptowalutach nie jest ostateczne w taki sposób, w jaki ostateczny jest dowód matematyczny. Dostajesz zamiast tego koszt odwrócenia, który stromo rośnie z czasem, oraz możliwość samodzielnego rozstrzygnięcia, jak wysoki ten koszt musi być, zanim zaczniesz działać. To słabsza gwarancja, niż większość ludzi sądzi, że posiada — i znacznie uczciwsza niż cokolwiek, co bank powie ci o płatności, którą wciąż można cofnąć wiele miesięcy później.


