Spis Treści
Jak już możecie wiedzieć,
Bitcoin egzekwuje prawa do własności poprzez coś, co nazywamy Elliptic Curve Digital Signature Algorithm (lub w skrócie ECDSA). Jest to algorytm, który pozwala Ci wziąć pewną określoną liczbę (np.
klucz prywatny) i uzyskać z niej klucz publiczny.
Cała magia polega na tym, że bardzo proste jest uzyskanie klucza publicznego z klucza prywatnego, jednakże odwrotna czynność jest niemożliwa. Twój klucz prywatny to osobista przepustka do sieci Bitcoin. To dzięki niemu możesz wygenerować swój
adres, na który otrzymasz później
bitcoiny oraz prześlesz je dalej.
W tym artykule przyjrzymy się algorytmowi podpisu Schnorra, czyli alternatywie do ECDSA, która może wprowadzić kilka interesujących zmian w świecie Bitcoina.
Podpisy cyfrowe działają bardzo podobnie jak ich papierowi przodkowie, ale są o wiele bezpieczniejsze. Mając czas i mogąc włożyć w to odpowiednią ilość pracy, każdy jest dziś w stanie podrobić fizyczny podpis. Tego samego jednak nie możesz zrobić z solidnym, cyfrowym schematem podpisu, nawet gdybyś miał tysiące lat do dyspozycji.
Istnieje wiele zastosowań dla podpisów cyfrowych. Bardzo popularnym jest udowadnianie światu, że to właśnie Ty jesteś autorem danej wiadomości. Tak jak już wspomnieliśmy, jesteś w stanie wygenerować klucz publiczny z klucza prywatnego (gigantycznej liczby, którą powinieneś trzymać w sekrecie). Proces ten polega na przeprowadzeniu sporej ilości działań matematycznych na krzywej secp256k1. Gdy już masz swój klucz publiczny, na jego podstawie możesz wygenerować swój publiczny adres.
Pamiętaj, że w pełni bezpieczne jest pokazywanie swojego klucza publicznego dowolnej osobie. Możesz dodać go na swoją stronę lub do opisu na Twitterze, dzięki czemu inni będą mogli Ciebie zweryfikować (choć warto dodać, że nie jest to zalecana praktyka - zawsze używaj jednego adresu kryptowalut tylko raz). W ten sam sposób możesz bez obaw udostępniać swój publiczny adres, by inni mogli przesyłać Tobie kryptowaluty.
Twój klucz prywatny pozwala Ci stworzyć cyfrowy podpis. Poprzez napisanie wiadomości i przeprowadzenie operacji na niej przy użyciu klucza prywatnego, tworzysz podpisaną wiadomość. Każdy może potem sprawdzić, czy faktycznie należy ona do Ciebie, poprzez porównanie jej z Twoim kluczem publicznym.
Jak wiąże się to z Bitcoinem? Otóż za każdym razem, gdy dokonujesz transakcji
Bitcoinem, wysyłasz cyfrową wiadomość o treści
Wysyłam te monety, które wcześniej zostały wysłane do mnie. Potem, gdy ta wiadomość trafia do innych
węzłów sieci, mogą one sprawdzić, czy Twój podpis ECDSA pasuje do wiadomości. Jeżeli tak nie jest, węzły i walidatorzy po prostu odrzucą wiadomość.
Podpisy Schnorra są innym rodzajem technologii. Działają one bardzo podobnie do Elliptic Curve Digital Signature Algorithm, z którego obecnie korzystamy, ale posiadają dużo wyróżniających je zalet. Podpisy Schnorra są starsze niż ECDSA, przez co wielu zastanawia się, dlaczego od samego początku nie korzystamy z nich w BTC.
Jednym z możliwych wyjaśnień jest to, że Claus P. Schnorr – twórca schematu – opatentował swój pomysł. Patent wygasł na początku 2008 roku, na kilka miesięcy, zanim pojawiło się Whitepaper Bitcoina, ale schemat dalej nie był znormalizowany. Z tej racji
Satoshi Nakamoto zdecydował się na powszechnie akceptowane (i będące w formacie
open-source) ECDSA.
Podpisy Schnorra są dosyć proste w porównaniu z innymi schematami. W rezultacie są też bezpieczniejsze od swoich alternatyw. Na pierwszy rzut oka może to nie oznaczać zbyt wiele dla Ciebie, jednak mają one jeszcze jedną potężną właściwość: liniowość.
Mówiąc wprost, sprawia to, że te schematy są szczególnie atrakcyjne dla poszczególnych aktywności – zwłaszcza dla
wielopodpisowych transakcji. Być może wiesz, że Bitcoin już teraz wspiera multisig, jednak nie robi tego w najschludniejszy sposób.
Gdy tworzysz adres wielopodpisowy, osoba wysyłająca Tobie fundusze nie musi znać warunków, jakie ustawiłeś w kwestii ich wydania. Nie muszą nawet wiedzieć, że wysyłają je na adres multisig – jedynym znakiem szczególnym takiego adresu jest to, że zaczyna się od liczby “3”.
Odkrywa on swoją naturę dopiero, gdy chcesz przenieść fundusze. Załóżmy, że użyłeś konfiguracji trzy z trzech wraz z Alice i Bobem. By wydać, powiedzmy 5 BTC, każdy z waszej trójki musi podać swój klucz publiczny i poprawny podpis. Gdy przenosisz fundusze z adresu, cała sieć może się dowiedzieć, co się stało, patrząc na
blockchain.
Z punktu widzenia prywatności, nie jest to najlepsze rozwiązanie. Co więcej, gdy chcemy stworzyć większy multisig (powiedzmy osiem z dziesięciu), zajmujemy zdecydowanie więcej miejsca na blockchainie. Może się to okazać kosztowne i doprowadzić do dłużących się transakcji – pamiętaj, że im więcej bajtów w Twojej transakcji, tym więcej musisz za nią zapłacić.
Podpisy Schnorra są uważane za rozwiązanie dla problemów z prywatnością i
skalowalnością. Otóż pozwalają one na coś, co nazywamy
agregacją podpisów, czyli łączenie wielu podpisów w jeden wspólny. Wynikający z tego “podpis nadrzędny” miałby tę samą długość, jak podpis pojedynczego użytkownika, co prowadzi nas do znaczącej oszczędności pamięci.
Co więcej, połączone podpisy utrudniają obserwatorom stwierdzenie, kto podpisał (a kto nie) transakcję. W schemacie m z m (w którym to wszyscy uczestnicy muszą podpisać transakcję), niemożliwe jest rozróżnienie, czy transakcję zawiera pojedyncza osoba, czy grupa osób korzystających z multisig.
Zasadniczo podpisy Schnorra umożliwiają budowanie bloków gotowych na dalszy rozwój. Gdy już zostaną zaimplementowane, można je wykorzystać w celu udoskonalenia technologii kryptowalutowych, takich jak
atomic swaps i
Lightning Network.
Nie jesteśmy pewni. Jak z większością aktualizacji protokołu Bitcoina, może minąć nieco czasu, zanim szersza społeczność użytkowników Bitcoina zaakceptuje implementację podpisów Schnorra. Deweloperzy Bitcoin Core, a dokładniej Pieter Wuille, Jonas Nick i Tim Ruffing, zaproponowali już BIP
(Bitcoin Improvement Proposal) w tej sprawie, ale jeszcze długa droga przed nami, zanim zostanie on ukończony.
Blockstream opublikował już poprawną implementację podpisów Schnorra –
MuSig. Pozwala ona na agregacje kluczy i podpisów, dzięki czemu mogłaby posłużyć jako fundament schematu podpisów Schnorra dla Bitcoina.
Podpisy Schnorra można połączyć z kodem w postaci
soft fork'u, dzięki czemu nie trzeba będzie dzielić sieci. Zamiast tego byłaby to aktualizacja “do której można się zapisać”. Niemniej jednak wizja implementacji podpisów Schnorra w najbliższej przyszłości jest bardzo optymistyczna – prawdopodobnie zajmie to jeszcze kilka lat, zanim konsensus zostanie osiągnięty.
Podpisy Schnorra to jeden z najbardziej oczekiwanych kamieni milowych na mapie rozwoju Bitcoina. Dzięki jednej aktualizacji uda się zwiększyć prywatność i
skalowalność. Co ciekawe, dzięki nim może zrobić się rozwój na dalszy rozwój
inteligentnych kontraktów Bitcoina i innych zaawansowanych struktur, takich jak
Taproot.