Przejdź do głównej zawartości

Co to jest portfel oprogramowania?

U
Napisane przez UKey Wallet

Portfel programowy wykorzystuje liczbę losową do wygenerowania głównego klucza prywatnego.

Następnie, za pomocą deterministycznego i nieodwracalnego algorytmu, może wyprowadzić nieograniczoną liczbę podrzędnych kluczy prywatnych z głównego klucza prywatnego.

Dlaczego potrzebujemy deterministycznego i nieodwracalnego algorytmu?
Ponieważ deterministyczny oznacza, że ​​wszystkie podrzędne klucze prywatne można zawsze wygenerować z tego samego głównego klucza prywatnego, natomiast nieodwracalny oznacza, że ​​głównego klucza prywatnego nie można zrekonstruować z żadnego podrzędnego klucza prywatnego.

Dlatego nazywa się go portfelem hierarchiczno-deterministycznym (HD). Struktura wyprowadzania kluczy prywatnych przypomina drzewo: klucz nadrzędny może wyprowadzić wiele kluczy podrzędnych, każdy klucz podrzędny może wygenerować wiele kluczy wnuków, a proces ten może trwać w nieskończoność.

Kiedy portfel HD jest tworzony po raz pierwszy lub podczas tworzenia kopii zapasowej portfela, generowana jest fraza mnemoniczna. Wyrażenie mnemoniczne to ciąg angielskich słów. Ta sekwencja jest używana do generowania nasiona, które następnie służy do wygenerowania wszystkich kluczy prywatnych w portfelu. Innymi słowy, fraza mnemoniczna służy jako kopia zapasowa portfela, ponieważ można jej użyć do przywrócenia portfela. Ziarno z kolei odpowiada pierwotnej liczbie losowej znajdującej się za deterministycznym portfelem.

Jedną z głównych zalet portfela HD jest to, że do wygenerowania dowolnej liczby podrzędnych kluczy publicznych wymagany jest tylko główny klucz publiczny. Innymi słowy, nowe adresy publiczne można utworzyć z głównego klucza publicznego bez konieczności dostępu do kluczy prywatnych, niezależnie od tego, czy jest to główny klucz prywatny, czy podrzędny klucz prywatny. Jednak wszystkie te wygenerowane adresy nadal mogą ostatecznie być kontrolowane przez główny klucz prywatny.

Oczywiście taki projekt wiąże się również z ryzykiem. Jeśli fraza mnemoniczna zostanie ujawniona, jest to zasadniczo równoznaczne z ujawnieniem wszystkich kluczy prywatnych. Kiedy to nastąpi, bezpieczeństwo zasobów cyfrowych w portfelu zostaje skutecznie utracone.

Dlaczego potrzebnych jest tak wiele kluczy prywatnych?

Powód, dla którego użytkownicy potrzebują tak wielu kluczy prywatnych, można zrozumieć poprzez mechanizm zmiany w transakcjach Bitcoin.

Transakcja Bitcoin to struktura danych zawierająca wejścia i wyjścia. Zawiera także niezbędne informacje skryptowe, które przekazują wartość ze źródła (wejście) do miejsca docelowego (wyjście).

Aby zrozumieć wejścia i wyjścia Bitcoina, ważne jest, aby znać koncepcję UTXO (Niewydane dane wyjściowe transakcji). UTXO jest podstawową jednostką transakcji Bitcoin i reprezentuje niewydane dane wyjściowe transakcji. Pojedynczy bitcoin jest w rzeczywistości rozdzielony na wiele transakcji i wiele bloków w formie UTXO. W rzeczywistości nie ma scentralizowanego rejestru przechowującego proste saldo konta; zamiast tego istnieją tylko zdecentralizowane UTXO zablokowane dla ich odpowiednich właścicieli.

UTXO może reprezentować dowolną wartość, ale raz utworzony staje się niepodzielny w taki sam sposób, w jaki fizyczna moneta nie może być podzielona na pół. Jeśli wartość UTXO jest większa niż kwota potrzebna do transakcji, nadal należy wydać całe UTXO, a nadwyżka zostanie zwrócona jako reszta.

Załóżmy na przykład, że masz UTXO o wartości 20 jednostek i chcesz zapłacić 1 jednostkę. Transakcja musi zużyć pełne 20 jednostek UTXO i utworzyć dwa wyjścia: jedno wyjście wysyła 1 jednostkę do odbiorcy, a drugie wysyła 19 jednostek z powrotem do portfela jako resztę. W tym sensie większość transakcji Bitcoin generuje zmianę.

Prowadzi to do kolejnego pytania: czy zmianę należy odesłać na pierwotny adres, czy na nowo wygenerowany adres?

Kiedy Satoshi Nakamoto projektował Bitcoin, zastosowano mechanizm zmiany adresu, co oznacza, że ​​często tworzony jest nowy adres w celu otrzymania zmiany z każdej transakcji. Zaletą tego projektu jest to, że pomaga chronić prywatność użytkowników i zmniejsza pewne zagrożenia bezpieczeństwa.

W prawdziwym życiu można to porównać do otwarcia kilku rachunków bankowych pod różnymi nazwiskami i tożsamościami w różnych bankach. Nawet jeśli ktoś może obserwować przepływ pieniędzy na każdym koncie, znacznie trudniej jest mu prześledzić wszystko aż do prawdziwego właściciela zasobów cyfrowych. Jest to część tego, co zapewnia Bitcoinowi względną anonimowość.

Dlatego użytkownicy portfela potrzebują tak wielu kluczy prywatnych. Ponieważ klucze publiczne i klucze prywatne zawsze występują w parach, a każda transakcja może generować nowy adres zmiany, przechowywanie i tworzenie kopii zapasowych kluczy prywatnych odpowiadających wszystkim tym adresom stałoby się w przeciwnym razie poważnym wyzwaniem technicznym. Portfel HD rozwiązuje ten problem, umożliwiając pojedynczemu rootowi generowanie dowolnej liczby podrzędnych kluczy publicznych i podrzędnych kluczy prywatnych, co znacznie poprawia użyteczność portfeli cyfrowych.

Czy to odpowiedziało na twoje pytanie?