Wstęp
Często uważa się, że kluczowe znaczenie dla funkcjonowania łańcucha bloków ma przejrzystość systemu. Oznacza to, że każdy węzeł w sieci może przechowywać kopię i sprawdzać, czy nie zostały złamane żadne zasady. W przypadku wielu rozproszonych rejestrów każdy może załadować eksplorator bloków online, który umożliwia przeszukiwanie bloków, transakcji i adresów.
Jeśli chodzi o prywatność, nie jest to idealne rozwiązanie. W systemie takim jak Bitcoin każdą transakcję można powiązać z poprzednią. Monety nie są technicznie zamienne, co oznacza, że każdą z nich można powiązać z konkretnymi transakcjami. Nikt nie może zabronić Ci wysyłania bitcoinów, ale może odmówić przyjęcia Twojej transakcji, jeśli monety te przeszły wcześniej przez adres znajdujący się na czarnej liście.
W najgorszym przypadku brak zamienności może mieć głęboki wpływ na same fundamenty systemu. Czyste monety mogą być droższe, podczas gdy starsze byłyby mniej wartościowe, biorąc pod uwagę ich historię.
Prywatność w Bitcoinie jest często przeceniana. Można śledzić nie tylko monety, ale także użytkowników. Lubią pseudonimowość (zamiast imion widoczne są adresy publiczne), ale nie jest to pozbawione wad. Wyrafinowane techniki analizy mogą z coraz większą dokładnością łączyć adresy w celu deanonimizacji podmiotów sieciowych.
Jednym z proponowanych ulepszeń, które sprawią, że transakcje będą naprawdę prywatne, są transakcje poufne.
Czym są transakcje poufne?
Transakcje poufne (CT) zostały po raz pierwszy omówione przez dyrektora generalnego Blockstream Adama w 2013 roku, a później zostały rozwinięte przez programistę Bitcoin Gregory'ego Maxwella. Maxwell nakreślił problemy wspomniane w pierwszej części (zamienność i słaba pseudonimowość) – i zaproponował rozwiązanie. Przekazane kwoty mogłyby być chronione przed szerszą siecią, tak aby tylko strony transakcji wiedziały, ile zostało wysłane.

W normalnych okolicznościach (w przypadku transakcji widocznych publicznie) węzeł może łatwo sprawdzić, czy otrzymana kwota nie przekracza kwoty wysłanej. Jeśli Alicja chce wysłać Bobowi 0,3 BTC, bierze niewydaną część produkcji (nazwijmy to 1 BTC) i dzieli ją na dwie części: 0,3 do wysłania Bobowi i 0,69 do odesłania do niej (reszta przepada jako opłata eksploatacyjna).
Jest to prosta algebra dla innych węzłów: 1 przekracza 0,3 + 0,69, wszystkie podpisy są poprawne, a dane wejściowe Alicji nie zostały jeszcze wydane gdzie indziej, więc transakcja musi być ważna. Kiedy jednak kwoty są zaślepione, sprawy nie są takie trywialne. Jak w ogóle zacząć oceniać, czy nieznana kwota jest równa lub przekracza sumę dwóch innych nieznanych kwot?
Przegląd stosowanej kryptografii
Aby ukryć dane, wymagane jest szyfrowanie. Jednak tradycyjne metody przypominają umieszczanie dokumentów w sejfie: po zamknięciu w środku stają się bezużyteczne, dopóki nie zostaną usunięte. Aby Transakcje Poufne mogły działać, potrzebujemy cyfrowego sejfu, którego zawartość nie jest ujawniana, ale którego właściwości może zweryfikować osoba z zewnątrz.
Odpowiedź leży w szyfrowaniu homomorficznym, w schemacie zwanym zaangażowaniem Pedersena. Ten rodzaj szyfrowania umożliwia osobie z zewnątrz wykonywanie operacji na zaszyfrowanych danych (których nie może zobaczyć) w różnych celach.
Zwykłego skrótu można użyć do zatwierdzenia danych, które chcesz później ujawnić. Załóżmy, że chcesz ogłosić w mediach społecznościowych konkurs, w którym każdy, kto odgadnie Twoją ulubioną giełdę, wygra nagrodę w wysokości 0,01 BTC. Uczestnicy mogą być sceptyczni, ponieważ wystarczy spojrzeć na odpowiedzi po zakończeniu konkursu i wybrać giełdę, o której nie wspomniano.
Jedyne, co możesz zrobić, to udostępnić swoim obserwującym hash: ciąg pozornie losowych liczb i znaków, który jest odwzorowywany na określone dane wejściowe. Przekazujesz swoją wymianę przez funkcję, aby uzyskać określony wynik. Zilustrujemy to za pomocą algorytmu SHA256:
f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191Patrząc na to, nie masz pojęcia, jakie było wejście. Nie można też odwrócić funkcji, aby ją uzyskać. Jeśli jednak wiesz, że dane wejściowe brzmiały „Binance”, możesz łatwo sprawdzić, czy jego skrót odpowiada haszowi wymienionemu powyżej. W ten sposób Twoi obserwatorzy mają pewność, że nie zmienisz swojej odpowiedzi pod koniec konkursu – dałoby to zupełnie inny wynik.
Jednak realistycznie rzecz biorąc, nie jest to zbyt bezpieczne. Chociaż Twoi obserwatorzy nie mogą odtworzyć algorytmu, mogą stworzyć listę możliwych wymian, mieszając każdą z nich, aż znajdą dopasowanie. Możemy zmniejszyć prawdopodobieństwo takiej sytuacji, dodając losowe dane zwane czynnikiem oślepiającym do danych, które będziemy szyfrować.
Jeśli wpiszemy „Binance to moja ulubiona giełda. Kocham ją bardziej niż jakąkolwiek inną giełdę 2#43Wr”, przeciwnikowi znacznie trudniej będzie zgadnąć (a w przypadku 0,01 BTC jest z pewnością mało prawdopodobne, aby ktokolwiek w ogóle próbował tego dokonać).
Zobowiązanie Pedersena pozwala nam dodać dane wejściowe leżące u podstaw zobowiązań. Jak ilustruje Maxwell:

C(BF1 + D1) + C(BF2 + D2) = C(BF1 + BF2, D1 + D2)
Gdzie BF to czynnik zaślepiający, a D to dane
Stąd jest jeszcze kilka kroków związanych z kryptografią krzywych eliptycznych i dowodem zasięgu, ale podstawowa idea jest taka, że użytkownik ma zobowiązanie Pedersena dotyczące swojego adresu. Podczas wysyłania środków tworzone są dwa dodatkowe zobowiązania (jedno na adres zmiany, który ma zostać zwrócony użytkownikowi, drugie na adres docelowy).
Nikt nie wie, ile jest wysyłane, ale może sprawdzić, czy zobowiązania dotyczące zmiany i miejsca docelowego (lewa strona równania Maxwella) sumują się do adresu początkowego (prawa strona równania). Jeśli wynik jest prawidłowy, transakcja użytkownika jest ważna, ponieważ można udowodnić, że dane wejściowe są równe wynikom.
Co mogą osiągnąć Poufne Transakcje?
Gdyby transakcje poufne zostały wdrożone w Bitcoinie, cieszylibyśmy się znacznie bardziej prywatnym systemem. Zarówno dane wejściowe, jak i wyjściowe zostałyby zamaskowane w szerszej sieci, a wpisy w księdze zostałyby zaciemnione, ale węzły nadal mogłyby zweryfikować ich autentyczność. Dzięki tak ogromnemu zwiększeniu prywatności bitcoiny mogą w rzeczywistości stać się zamienne, ponieważ analiza łańcucha nie ujawnia już historii danej jednostki.
Jeśli chodzi o to, czy transakcje poufne zostaną zintegrowane z protokołem, w chwili obecnej nie wydaje się to prawdopodobne. Dzięki tej dodatkowej funkcjonalności transakcje są znacznie większe niż standardowe – biorąc pod uwagę ograniczoną przestrzeń blokową, zwiększyłoby to tylko popyt. Wymagałoby to również zgody większości uczestników na zmianę kodeksu, co tradycyjnie okazywało się trudne.
Zamykanie myśli
Transakcje poufne doczekały się kilku iteracji w innych kryptowalutach i łańcuchach bocznych Bitcoin. Na przykład Monero używa ich w połączeniu z konstrukcjami zwanymi podpisami pierścieniowymi, aby osiągnąć anonimowość i zamienność. Łańcuch boczny Liquid implementuje je w celu zapewnienia większej prywatności, a MimbleWimble rozszerza je do tych samych celów.
Ze względu na korzyści, jakie przynoszą, transakcje poufne wiążą się z kompromisem w postaci większego zasięgu. Kryptowaluty często borykają się ze skalowalnością i przepustowością w warstwie bazowej, a większe rozmiary transakcji nie są atrakcyjne dla wszystkich. To powiedziawszy, zwolennicy prywatności uważają, że ukrywanie kwot transakcji i uczestników jest niezbędne, aby naprawdę pozwolić kryptowalutom służyć jako zmienne pieniądze.

