Jak Blocknet chroni prywatność płatności

· 5 min czytania

Ten wpis wychodzi poza podsumowanie prywatności z artykułu Czym jest Blocknet? i omawia każdą warstwę prywatności w transakcji Blocknet: co ukrywa, jak działa i co oznacza, gdy następnym razem wyślesz lub odbierzesz BNT.

Jak Blocknet chroni prywatność płatności?

Krótka odpowiedź

Blocknet ukrywa nadawcę za pomocą podpisów pierścieniowych CLSAG obejmujących 16 wyjść, odbiorcę za pomocą jednorazowych adresów stealth, a kwotę za pomocą zobowiązań Pedersena i dowodów zakresu Bulletproofs. Przekazywanie Dandelion++ ukrywa, gdzie transakcja weszła do sieci, a każde wyjście zawiera zaszyfrowane 128-bajtowe memo. Wszystko to jest obowiązkowe, bez trybu jawnego.

Blocknet korzysta z tej samej sprawdzonej rodziny kryptografii co Monero: podpisów pierścieniowych, adresów stealth i dowodów zakresu Bulletproofs, zbudowanych na grupie Ristretto nad krzywą Curve25519. Do tego dodaje płacenie po nazwie i zaszyfrowane memo. Każda warstwa chroni inną część płatności, a razem zostawiają osobie czytającej łańcuch bardzo niewiele punktów zaczepienia.

Podpisy pierścieniowe ukrywają, kto zapłacił

Gdy wydajesz monety, Twój portfel składa podpis za grupę 16 wyjść: to, które należy do Ciebie, i 15 innych wybranych z łańcucha jako wabiki. Ten podpis to podpis pierścieniowy CLSAG. Każdy może sprawdzić, że podpisał jeden z członków pierścienia, a podpis nie ujawnia, który.

Konsensus wymusza rozmiar pierścienia. Każde wejście musi mieć dokładnie 16 członków pierścienia, z których każdy jest prawdziwym wyjściem już obecnym w łańcuchu, a sieć odrzuca wszystko inne. Ponieważ każde wejście w sieci ma ten sam rozmiar, rozmiar pierścienia nie może wyróżnić transakcji ani portfela, który ją zbudował. Kod demona ustala ten rozmiar na stałe, „aby zapobiec wyciekowi informacji ze zmiennych rozmiarów pierścieni”.

Aby te same monety nie zostały wydane dwa razy, każde wejście zawiera też obraz klucza (key image). Jest on unikalny dla prawdziwego wydawanego wyjścia, ale nie ujawnia, który to członek pierścienia. Jeśli obraz klucza pojawi się drugi raz, sieć odrzuca transakcję jako podwójne wydanie.

Adresy stealth ukrywają, kto otrzymał płatność

Adres Blocknet zawiera dwa klucze publiczne: klucz wydawania (spend key) i klucz podglądu (view key). Gdy ktoś Ci płaci, jego portfel łączy Twoje klucze ze świeżą liczbą losową, tworząc jednorazowy adres używany tylko dla tego wyjścia. Adres, który udostępniłeś, nigdy nie pojawia się w łańcuchu.

Twój portfel używa prywatnego klucza podglądu, aby skanować nowe transakcje i wyłapywać należące do Ciebie wyjścia, a klucza wydawania, aby później je wydać. Dziesięć płatności na ten sam adres trafia na dziesięć niepowiązanych jednorazowych adresów, więc obserwator nie może zsumować, ile otrzymał adres, ani stwierdzić, że dwie płatności trafiły do tej samej osoby.

To samo dotyczy nazw Blocknet ID. Krótka nazwa, taka jak @name, jest z założenia publiczna, bo nadawca wyszukuje ją na blocknet.id, aby Ci zapłacić. Płatności na nią i tak trafiają na nowe jednorazowe adresy, więc nazwa nie mówi nic o tym, ile otrzymałeś.

Jak Blocknet ukrywa kwoty transakcji?

Kwoty są zapisywane jako zobowiązania Pedersena (Pedersen commitments). Zobowiązanie utrwala liczbę, nie pokazując jej, a zobowiązania można do siebie dodawać. Dzięki temu każdy węzeł może sprawdzić, że wejścia transakcji są równe jej wyjściom plus opłata, nie poznając żadnej z kwot.

Samo zobowiązanie mogłoby ukrywać kwotę ujemną, co tworzyłoby monety z niczego. Dlatego każde wyjście ma dowód zakresu Bulletproofs potwierdzający, że jego kwota mieści się w 64-bitowym zakresie zaczynającym się od zera. Dowód przekonuje każdy węzeł, że kwota jest prawidłowa, i nie ujawnia o niej nic więcej.

Odbiorca nadal widzi prawdziwą wartość. Jego portfel odzyskuje ją za pomocą tego samego wspólnego sekretu, którego używa do znalezienia wyjścia, więc kwotę widzą dwie osoby biorące udział w płatności i nikt więcej.

Dandelion++ ukrywa, skąd wyszła transakcja

Gdyby węzeł ogłaszał własną transakcję wszystkim swoim sąsiadom naraz, ktoś obserwujący wiele węzłów mógłby zgadnąć, skąd pochodzi, sprawdzając, kto usłyszał o niej pierwszy. Blocknet przekazuje transakcje za pomocą Dandelion++, aby temu zapobiec.

Nowa transakcja najpierw wędruje wzdłuż „łodygi” (stem), przekazywana od jednego węzła do dokładnie jednego kolejnego. Na każdym przeskoku jest 90% szans, że pójdzie dalej łodygą; w przeciwnym razie „rozkwita” (fluff) i od tego miejsca rozchodzi się po całej sieci. Zanim większość węzłów zobaczy transakcję, wygląda ona tak, jakby pochodziła z węzła, który może być wiele przeskoków od Twojego. Trasy łodyg są przetasowywane co 10 minut.

Kto może odczytać memo w Blocknet?

Każde wyjście zawiera 128-bajtowe zaszyfrowane memo z miejscem na maksymalnie 124 bajty tekstu. Jest szyfrowane tym samym sekretem, który nadawca i odbiorca dzielą dla tego wyjścia, więc tylko Wy dwoje możecie je przeczytać. Użyj go na numer faktury, numer zamówienia albo krótką notatkę dla osoby, której płacisz. Poradnik o zaszyfrowanym memo pokazuje, jak je dodać i gdzie znaleźć otrzymane memo.

Memo ma zawsze ten sam rozmiar, niezależnie od tego, czy napiszesz pełną notatkę, czy nic. Gdy memo jest krótkie lub puste, portfel wypełnia resztę losowym dopełnieniem przed zaszyfrowaniem, więc wyjście z notatką wygląda dokładnie tak samo jak wyjście bez niej. Memo nigdy się nie wyróżnia i nikt inny nie potrafi nawet stwierdzić, które płatności zawierają wiadomość.

Czy prywatność w Blocknet jest opcjonalna?

Krótka odpowiedź

Nie. Prywatność w Blocknet jest obowiązkowa. Format transakcji nie ma trybu jawnego, a konsensus wymaga, aby każde wejście miało pierścień złożony z dokładnie 16 członków, więc każda płatność używa pierścieni, adresów stealth, ukrytych kwot i zaszyfrowanego memo. Ponieważ nikt nie może z tego zrezygnować, prywatne płatności wyglądają jak każda inna płatność w łańcuchu.

Gdy prywatność jest ustawieniem, osoby, które ją włączają, tworzą małą grupę, łatwiejszą do wyłowienia. W Blocknet każda transakcja jest budowana tak samo, więc każda wtapia się we wszystkie pozostałe, a Ty nigdy nie musisz pamiętać o ochronie płatności.

Co to oznacza, gdy komuś płacisz

Gdy wysyłasz BNT na adres lub @name, Twój portfel wykonuje za Ciebie każdy krok, bez niczego do włączania:

  1. Wybiera z łańcucha 15 wabików i podpisuje Twoje wejście pierścieniem 16.
  2. Tworzy nowy jednorazowy adres dla odbiorcy.
  3. Tworzy zobowiązanie do kwoty i dołącza dowód zakresu.
  4. Szyfruje Twoje memo albo losowe dopełnienie, jeśli zostawisz memo puste.
  5. Przekazuje transakcję do Dandelion++.

Osoba czytająca łańcuch widzi wejścia, z których każde wskazuje na 16 możliwych wyjść, wyjścia wysłane na jednorazowe adresy, których nikt wcześniej nie widział, zobowiązania zamiast kwot i pole memo z bajtami wyglądającymi na losowe. Osoba, której zapłaciłeś, widzi płatność, kwotę i Twoją notatkę we własnym portfelu.

Jeśli chcesz zdobyć swoje pierwsze BNT, możesz je wykopać na własnym komputerze. Poradnik kopania pomoże Ci w kilka minut uruchomić seine na bntpool.com, a kopać możesz prosto na swój adres lub swoje @name.

Co przyniesie aktualizacja Faraday

Według blocknetcrypto.com Blocknet planuje aktualizację sieci o nazwie Faraday, której aktywacja jest zaplanowana na około 2027-02-16. Strona wymienia dwie zmiany, które jeszcze wzmocnią prywatność:

Strona podaje też, że Faraday nie przyniesie nowej monety ani ponownego startu, a Twoja historia zostanie zachowana. Projektowanie, testy i przegląd pod kątem ataków są w toku, a daty są planowane, a nie ostateczne, więc śledź blocknetcrypto.com, aby być na bieżąco.

Najczęściej zadawane pytania

Czy Blocknet jest domyślnie prywatny?

Tak. Każda transakcja Blocknet używa podpisu pierścieniowego obejmującego 16 wyjść, jednorazowego adresu stealth dla każdego odbiorcy, kwot ukrytych za pomocą dowodów zakresu Bulletproofs i 128-bajtowego zaszyfrowanego memo w każdym wyjściu. Format transakcji nie ma trybu jawnego, więc nie ma czego włączać i żadna płatność nie może ominąć tych zabezpieczeń.

Jakiego rozmiaru pierścienia używa Blocknet?

Każde wejście w transakcji Blocknet jest podpisane pierścieniem CLSAG obejmującym dokładnie 16 wyjść: prawdziwe i 15 wabików (decoys) wziętych z łańcucha. Konsensus odrzuca każdy inny rozmiar, a każdy członek pierścienia musi być prawdziwym wyjściem, które już jest w łańcuchu. Ponieważ każde wejście ma ten sam rozmiar, rozmiar pierścienia nigdy nie wyróżni żadnego portfela.

Kto może odczytać memo w Blocknet?

Tylko nadawca i odbiorca. Każde memo jest szyfrowane sekretem, który oba portfele dzielą dla danego wyjścia, i zawsze zajmuje w łańcuchu dokładnie 128 bajtów, z miejscem na maksymalnie 124 bajty tekstu. Krótkie lub puste memo jest wypełniane losowym dopełnieniem, więc nikt inny nie potrafi stwierdzić, które płatności zawierają notatkę.

Czy inni mogą zobaczyć, ile otrzymał mój adres Blocknet?

Nie. Każda płatność na Twój adres trafia na nowy jednorazowy adres stealth, więc płatności nie da się pogrupować pod adresem, który udostępniłeś. Kwoty są zapisywane jako zobowiązania Pedersena z dowodami zakresu, więc łańcuch nigdy nie pokazuje, ile zawiera każde wyjście. Tylko Twój portfel, za pomocą Twojego prywatnego klucza podglądu, znajduje i sumuje Twoje płatności.

Czy Blocknet używa tej samej kryptografii co Monero?

Blocknet korzysta z tej samej sprawdzonej rodziny kryptografii co Monero: podpisów pierścieniowych CLSAG z pierścieniem 16, jednorazowych adresów stealth, zobowiązań Pedersena z dowodami zakresu Bulletproofs i przekazywania transakcji Dandelion++. Do tego dodaje płacenie po nazwie dzięki krótkim nazwom Blocknet ID oraz zaszyfrowane 128-bajtowe memo w każdym wyjściu.