|
|
Opublikowano 2025-10-17 09:01:55
|
|
|
|

Base58, Base58Check, Bech32 i Bech32m to powszechnie stosowane formaty kodowania w technologii blockchain, przede wszystkim mające na celu poprawę czytelności, redukcję błędów i zapewnienie integralności danych. Te cztery kody mają swoje zalety w zapewnianiu bezpieczeństwa, kompatybilności i możliwości korekcji błędów, i są ważnymi filarami nowoczesnych systemów adresowych blockchain.
Base58
"Base58" to metoda kodowania wynaleziona przez Satoshiego Nakamoto, zaadaptowana z dobrze znanej metody kodowania "Base64". Zestaw znaków Base64 obejmuje: wszystkie cyfry oraz wielkie i małe litery, a także dwa symbole ("+" i "/"); Łącznie 64 postacie. Satoshi Nakamoto usunął cyfrę 0, wielkie litery I i O, małą literę l oraz symbol, i powstał Base58.
Zestaw znaków: 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
Base58Check
W porównaniu do Base58, kodowanie Base58Check wymaga tylko jednego obliczania sumy kontrolnej więcej. Jak pokazano poniżej:
Base58Check rozwiązuje problemy podatności na błędy, trudności do rozpoznania i niezweryfikowanych w tradycyjnych metodach kodowania, oferując bezpieczną, zwartą, przyjazną dla człowieka i wykrywającą błędy metodę reprezentacji kluczowych danych w blockchainie (takich jak adresy i klucze prywatne). Chociaż obecnie stopniowo zastępowany przez bardziej zaawansowane Bech32/Bech32m (dla adresów SegVit), odegrał kluczową rolę we wczesnym ekosystemie Bitcoina.
Bech32
"Bech32" to metoda kodowania zdefiniowana przez BIP 0173, autorstwa Pietera Wuille'a i Grega Maxwella. Jednak to kodowanie ma również swoje początki: "Bech" odnosi się do "BCH", cyklicznego algorytmu kodowania korekcji błędów wynalezionego przez trzech matematyków odpowiednio w 1959 i 1960 roku (nazwa BCH pochodzi od nazwisk tych trzech matematyków). "32" oznacza, że zestaw znaków metody kodowania składa się tylko z 32 znaków: małych liter i cyfr, z wyłączeniem liczb "1", liter "b", "i" i "o".
Na początku BIP 0173 autorzy wskazują na niepożądane aspekty Base58:
- Base58 używa zarówno dużych, jak i małych liter angielskich, co sprawia, że jego dane są pobierane do kodów QR nie w trybie mniejszego "alfabetu numerycznego", lecz tylko w trybie większych "danych bajtowych".
- Użycie zarówno ogłoski, jak i etui utrudnia przepisywanie, pisanie i czytanie na klawiaturze telefonu.
- Suma kontrolna wymagała dwóch kolejnych operacji SHA256, które były wolne i nie miały możliwości zlokalizowania niewłaściwego miejsca.
- Większość lokalizowalnych metod kodowania błędów działa tylko wtedy, gdy rozmiar zestawu znaków jest potęgą pierwszą, a 58 nie jest potęgą pierwszą.
- Base58 jest bardziej skomplikowany w dekodowaniu i wolniejszy w dekodowaniu.
W efekcie nowe podejście Bech32 wykorzystuje jedynie małe litery i cyfry; W razie potrzeby, na przykład przy rysowaniu kodu QR, wszystkie te litery można zastąpić wielkimi literami, aby uzyskać bardziej zwięzły odwzor. Mniejsze kody QR, ponieważ adresy Bech32 są pojedyncze, można zakodować jako kody QR w trybie alfanumerycznym. Oznacza to, że możesz stworzyć bardziej kompaktowy kod QR, ponieważ Base58 wymaga wielkich i małych liter (co oznacza, że nie możesz używać trybu alfanumerycznego), podczas gdy Bech32 nie. Jak pokazano poniżej:
Jak widać, mimo adresu Bech32Zawiera więcej znaków, ale możliwość używania wzorców alfanumerycznych oznacza, że kody QR zużywają mniej danych。
Jednocześnie Bech32 ma zdolność lokalizowania błędów: nie tylko wykrywa błąd kopiowania, ale także wskazuje, które bity zostały błędnie skopiowane (ta zdolność wykrywania błędów jest znacznie lepsza niż w Base58).
W rzeczywistości algorytm BCH posiada także funkcję "korekcji błędów": może nie tylko wskazać, które bity skopiowałeś nieprawidłowo, ale także jakie znaki powinny to być. Jednak autorzy BIP 0173 dostrzegli jego wewnętrzne zagrożenia: z jednej strony wzmocnienie korekcji błędów osłabia zdolność do wykrywania błędów; Z drugiej strony, jeśli użytkownik zbyt mocno ufa możliwościom korekcji błędów oprogramowania, oprogramowanie może skorygować błędne dane wprowadzone przez użytkownika do "poprawnego, ale bezużytecznego" fragmentu danych – choć jest on prawidłowy jako dane zakodowane BCH; Jednak możliwe, że przywrócony skrypt Bitcoin nie jest pod kontrolą odbiorcy ani nawet nikogo innego. To jest niezwykle niebezpieczne. Dlatego BIP 0173 ostrzega: "Oprócz przypominania użytkownikom, które bity mogły zostać błędnie skopiowane, oprogramowanie nie powinno wdrażać funkcji korekcji błędów (udzielania sugestii poprawek)." ”
Ponadto Bech32 podąża za wzorcem znanym z kodowania Base58:
1. Dane Bech32 zaczynają się od akapitu "dane z znaczeniem (hrp)", podobnie jak prefiks w Base58, który może wskazywać, o jakiego rodzaju dane chodzi. HRP może używać znacznie więcej niż 32 znaków; Bech32 używa również liczby "1" jako separatora, aby oddzielić HRP od danych, które faktycznie mają być dekodowane. Oprócz Bitcoina, istnieje wiele innych projektów, które również przyjęły Bech32; HRP służy do odróżnienia danych od różnych elementów. Oto lista zarejestrowanych HRP, która jest bardzo interesująca (ale tylko ciekawa). 2. Bech32 zaprojektował także sumę kontrolną zajmującą ostatnie 6 znaków zakodowanych danych.
Bech32m
"Bech32m" to metoda kodowania zdefiniowana przez BIP 0350. Łącze:Logowanie do linku jest widoczne.Zostało zaproponowane, ponieważ deweloperzy odkryli lukę w kodowaniu Bech32:
Gdy ostatni znak to "p", wstawianie lub usuwanie dowolnej liczby "q" przed tym znakiem nie powoduje błędu sumy kontrolnej (dane nadal będą uznawane za poprawne), wtedyMechanizm sumy kontrolnej całkowicie traci swoją funkcjęSkończyć.
Jeśli nie dodasz standaryzowanego skryptu Bitcoin, problem można łatwo rozwiązać: zarówno adres P2WPKH, jak i adres P2WSH mają określoną długość, wystarczy dodać sprawdzanie długości. Jednak biorąc pod uwagę, że w przyszłości będziemy dodawać nowe standaryzowane skrypty, długość adresu może się zmienić, więc konieczne jest rozwiązanie tego problemu.
Bech32m rozwiązuje ten problem, zmieniając parametr w generatorze sum kontrolnych Bech32.
Obecnie Bech32m jest używany wyłącznie do kodowania adresów skryptów "P2TR" dodanych wraz z aktualizacją "Taproot". Może być używany w kodowaniu adresowym innych standaryzowanych skryptów w przyszłości.
Odniesienie:
Logowanie do linku jest widoczne.
Logowanie do linku jest widoczne.
Logowanie do linku jest widoczne. |
Poprzedni:tiktok, Douyin przechwytuje pakiet i zabija skrypt Frida, który może zlokalizować lokalizację łatki pliku SONastępny:Wprowadzenie do typów adresów Bitcoin: Legacy, zagnieżdżony SegWit, Natywny SegWit i Taproot
|