
Funkcje skrótu: cicha maszyneria pod wszystkim w kryptowalutach
Jeśli rozłożyć łańcuch bloków na najważniejsze części, znajdziemy dwa rodzaje kryptografii wykonujące niemal całą pracę. Podpisy cyfrowe rozstrzygają, kto może wydawać. Funkcje skrótu trzymają w całości wszystko inne — bloki, adresy, kopanie, identyfikatory transakcji, a nawet sposób, w jaki portfel dekoduje to, co zaraz podpiszesz.
Funkcje skrótu rzadko się tłumaczy, bo rzadko się je zauważa. Warto poświęcić im dziesięć minut, bo gdy się je zrozumie, zaskakująco wiele w kryptowalutach przestaje wyglądać na magię.
Co robi funkcja skrótu
Funkcja skrótu przyjmuje dowolne dane — słowo, plik, cały blok transakcji — i wytwarza odcisk o stałym rozmiarze. SHA-256, której używa Bitcoin, zawsze daje 256 bitów, zwykle zapisywanych jako 64 znaki szesnastkowe, niezależnie od tego, czy podasz jej jedną literę, czy gigabajt.
Użyteczną czynią ją trzy właściwości:
Deterministyczna. Te same dane zawsze dają ten sam wynik. Każdy, w dowolnym miejscu, może go przeliczyć i sprawdzić.
Jednokierunkowa. Mając odcisk, nie da się w praktyce cofnąć do danych wejściowych. Jedyna droga to zgadywać dane, aż któreś pasują, a przy dobrej funkcji to beznadziejne.
Odporna na kolizje. Nie da się w praktyce znaleźć dwóch różnych danych o tym samym odcisku. Zmień jeden znak, a wynik zmieni się całkowicie i nieprzewidywalnie.
To wszystko, czym jest skrót: krótkim, sprawdzalnym i niemożliwym do podrobienia odciskiem czegoś większego.
Gdzie spotykasz skróty, nie zauważając tego
Identyfikatory transakcji. Txid to po prostu skrót transakcji. Dlatego jest unikalny i dlatego to on trafia do przeglądarki bloków — wskazuje dokładnie jedną transakcję i nikt nie wytworzy innej o tym samym identyfikatorze.
Sam łańcuch. Każdy blok zawiera skrót bloku poprzedniego. Zmień cokolwiek w starym bloku, a jego skrót się zmieni, co zerwie powiązanie z każdym kolejnym blokiem. Ten łańcuch odcisków sprawia, że każda ingerencja w historię staje się widoczna.
Kopanie. Dowód pracy to loteria skrótów: kopiący raz po raz liczą skrót nagłówków bloków, za każdym razem zmieniając pewną liczbę, aż trafią wynik poniżej celu. Ponieważ skróty są nieprzewidywalne, nie ma skrótu drogi — tylko więcej prób, i dlatego dowód pracy kosztuje prawdziwą energię, a ten koszt kupuje bezpieczeństwo.
Adresy. Większość adresów to skróty czegoś. Klasyczny adres Bitcoina to skrót klucza publicznego. Adresy Bitcoina w SSP to P2WSH: skrót SHA-256 skryptu świadka opisującego regułę wydawania 2-z-2. Przed wydaniem w łańcuchu widnieje ten odcisk, a nie same klucze.
Skróty w portfelu
Skrót to nie tylko pojęcie na poziomie łańcucha. Pojawia się w oprogramowaniu, którym podpisujesz.
Gdy SSP Key dekoduje transakcję Ethereum, zanim ją zatwierdzisz, rozpoznaje, co robi wywołanie, za pomocą selektorów funkcji — pierwszych czterech bajtów skrótu Keccak-256 sygnatury funkcji. transfer(address,uint256) daje wartość zaczynającą się od a9059cbb; approve(address,uint256) — od 095ea7b3. Gdy dekoder zobaczy te cztery bajty na początku transakcji, wie, która funkcja jest wywoływana, i może pokazać ci prostym językiem, że wysyłasz tokeny albo udzielasz zgody.
To ładna ilustracja tego, do czego służą skróty: zwarty, jednoznaczny odcisk czegoś dłuższego. To też przypomnienie o ich granicach, bo cztery bajty to tak mało, że dwie różne funkcje mogą dzielić selektor. To jeden z powodów, dla których dekoder celowo zawodzi w stronę zamknięcia — wszystko, co nieoczekiwane, wraca do surowych danych zamiast do pewnego siebie domysłu.
Czego skróty nie potrafią
Nie ukrywają małych danych. Skrót jest jednokierunkowy, ale jeśli dane pochodzą z małego zbioru możliwości, napastnik może po prostu policzyć skrót każdej i porównać. Dlatego zahaszowany PIN czy krótkie hasło chronią bardzo niewiele i dlatego frazy seed to długie losowe słowa, a nie coś łatwego do zapamiętania.
Nie dowodzą niczego o znaczeniu. Skrót dowodzi, że dwie rzeczy są identyczne. Nie mówi nic o tym, czy któraś jest uczciwa. Idealnie zweryfikowany skrót złośliwej transakcji to wciąż złośliwa transakcja.
To nie jest szyfrowanie. Nie da się „odszyfrować” skrótu, by odzyskać oryginał. Coś, co twierdzi, że odwraca skrót, zgaduje.
Dlaczego to cię dotyczy
Rzadko policzysz skrót ręcznie. Ale zrozumienie ich wyjaśnia kilka rzeczy, które inaczej wyglądają jak reguły do wkucia:
Dlaczego txid dowodzi, że płatność istnieje. Dlaczego nie możesz edytować potwierdzonej transakcji. Dlaczego kopanie zużywa energię. Dlaczego niewydany adres ujawnia odcisk, a nie twoje klucze. Dlaczego długi, losowy seed jest bezpieczny, a krótki i sprytny nie.
Funkcje skrótu to ta część kryptowalut, która po prostu działa, cicho, miliardy razy dziennie. Wiedza, co gwarantują — a czego nie — to jeden z najtańszych sposobów, by zrozumieć system, któremu powierzasz pieniądze.


