Przejdź do treści

Plastyczność transakcji

Plastyczność transakcji to podatność protokołu kryptowalutowego, która pozwala na legalną modyfikację unikalnego identyfikatora transakcji przed jej ostatecznym zatwierdzeniem w bloku, bez zmiany samej treści i logiki finansowej.

Materiał edukacyjny przygotowany z pomocą AI i automatycznej kontroli jakości. Redakcja dodatkowo sprawdza wybrane materiały. Opisuje również ograniczenia i ryzyka; nie stanowi indywidualnej rekomendacji.

Wprowadzenie

Wyobraź sobie tradycyjny przelew bankowy, w którym wysyłasz komuś pieniądze. Zazwyczaj przelew ma swój unikalny numer potwierdzenia, dzięki któremu obie strony wiedzą, że operacja doszła do skutku. W niektórych starszych sieciach kryptowalutowych istniała jednak specyficzna słabość. Ktoś, kto posiadał odpowiednią wiedzę techniczną, mógł zmodyfikować sposób zapisu samej transakcji w taki sposób, że zmieniał się jej unikalny identyfikator, czyli tak zwany hash, zanim transakcja została trwale zapisana w blockchainie.

Co ważne, zmiana ta nie dotyczyła kwoty ani adresów odbiorcy i nadawcy. Pieniądze trafiały dokładnie tam, gdzie powinny, ale transakcja otrzymywała zupełnie nowy numerek. Dla przeciętnego użytkownika może brzmieć to jak drobny szczegół techniczny, jednak w świecie systemów finansowych opartych na kryptografii, gdzie programy automatycznie śledzą identyfikatory operacji, taka zmiana mogła powodować poważne zamieszanie.

Zamieszanie to wynikało głównie z faktu, że zewnętrzne aplikacje, takie jak giełdy kryptowalut czy portfele online, mogły uznać oryginalną transakcję zazagubioną lub niezrealizowaną, podczas gdy w rzeczywistości została ona przetworzona pod nowym identyfikatorem. Tworzyło to pole do różnego rodzaju nieporozumień, a w skrajnych przypadkach do prób oszustw polegających na dwukrotnym domaganiu się wypłaty środków.

Szczegółowy opis

Plastyczność transakcji, w literaturze angielskiej znana jako transaction malleability, wynika bezpośrednio ze struktury danych oraz mechanizmów podpisu cyfrowego stosowanych w niektórych sieciach blockchain, takich jak wczesny Bitcoin. Sygnatura cyfrowa oparta na algorytmie takim jak ECDSA zabezpiecza zawartość transakcji, jednak sama matematyczna struktura podpisu może dopuszczać pewne warianty zapisu, które wciąż pozostają kryptograficznie ważne dla klucza publicznego nadawcy.

Każda transakcja w sieci Bitcoin zawiera dane wejściowe i wyjściowe oraz podpisy kryptograficzne. Hash transakcji, który służy jako jej identyfikator, jest obliczany na podstawie wszystkich tych danych, w tym podpisów. Jeśli napastnik lub dowolny węzeł w sieci przekaże zmodyfikowaną wersję podpisu, która wciąż jest poprawna, zmienia się suma kontrolna całej transakcji. Kiedy górnik włączy tę zmodyfikowaną wersję do bloku, oryginalny identyfikator przestaje być powiązany z potwierdzoną transakcją w łańcuchu.

Problem ten dotyczył w dużej mierze protokołów wyższego warstwy, które polegały na śledzeniu konkretnych identyfikatorów transakcji przed ich potwierdzeniem, takich jak dawne systemy mikropłatności czy wczesne implementacje sieci błyskawicznych. Dopiero wprowadzenie kompleksowych aktualizacji protokołu, takich jak Segregated Witness w sieci Bitcoin, pozwoliło na odseparowanie danych podpisów od samej struktury transakcji, co drastycznie ograniczyło lub całkowicie wyeliminowało ten problem dla zmodyfikowanych typów transakcji, choć wciąż może on występować w innych, mniej zaawansowanych projektach blockchainowych.

Przykłady

Klasycznym przykładem wykorzystania plastyczności transakcji były incydenty na niektórych historycznych giełdach kryptowalutowych, które miały miejsce w ubiegłej dekadzie. Użytkownik zlecał wypłatę środków ze swojego konta giełdowego na zewnętrzny portfel. Giełda generowała transakcję i wysyłała ją do sieci blockchain.

Następnie złośliwy użytkownik lub osoba trzecia modyfikowała identyfikator tej transakcji za pomocą narzędzi sieciowych, zanim górnicy zdążyli ją zatwierdzić. Zmodyfikowana transakcja trafiała do bloku z nowym hashem. System automatyczny giełdy, poszukujący pierwotnego identyfikatora, uznawał, że wypłata nie powiodła się lub zaginęła, ponieważ nie widział jej w historii z pierwotnym numerem. W efekcie system mógł automatycznie ponowić wypłatę środków.

Innym przykładem były trudności w budowaniu skomplikowanych umów inteligentnych oraz protokołów płatności pozablokowych, gdzie jedna transakcja zależała od wyjściowego identyfikatora drugiej transakcji. Jeśli pierwsza transakcja uległa plastycznej modyfikacji przed potwierdzeniem, cała sekwencja powiązanych operacji mogła zostać zablokowana lub wymagać ręcznej interwencji programowej.

Zalety i ograniczenia

Z punktu widzenia samej teorii kryptograficznej, plastyczność transakcji nie jest zazwyczaj uznawana za zaletę w kontekście systemów płatniczych, ponieważ wprowadza niepotrzebną niepewność i komplikuje architekturę aplikacji finansowych. Trudno wskazać jej pozytywne zastosowania użytkowe w standardowym obrocie cyfrowymi aktywami.

Ograniczenia wynikające z tego zjawiska są natomiast bardzo wyraźne. Przede wszystkim stwarza ono ryzyko operacyjne dla giełd, serwisów handlowych oraz dostawców portfeli, którzy muszą wdrażać skomplikowane mechanizmy monitorowania mempoola, aby uniknąć podwójnych wypłat. Wprowadza to również barierę dla rozwoju zaawansowanych rozwiązań skalowalności opartych na transakcjach warstwy drugiej, które wymagają pełnej przewidywalności identyfikatorów.

Warto zaznaczyć istotną niepewność dotyczącą skali występowania tego problemu we współczesnych kryptowalutach: podczas gdy główne sieci przeprowadziły głębokie reformy protokołów usuwające tę słabość, wiele mniejszych lub alternatywnych projektów blockchain nadal może być podatnych na plastyczność, jeśli ich twórcy nie zaimplementowali odpowiednich zabezpieczeń kryptograficznych i strukturalnych.