Jak używać
- Wybierz „Koduj”, aby utworzyć ciąg Base58Check, lub „Dekoduj”, aby go zweryfikować i odzyskać bajty.
- Aby kodować, ustaw „Wejście jako” na „Hex” i wprowadź bajt wersji, a po nim ładunek, np. 00 i 20-bajtowy HASH160.
- Pozostaw włączoną opcję „Suma kontrolna Base58Check”. Suma kontrolna jest dołączana przy kodowaniu i weryfikowana przy dekodowaniu.
- Aby dekodować, wklej ciąg i ustaw „Wyjście jako” na „Hex”. Otrzymasz bajt wersji i ładunek bez sumy kontrolnej.
Jak działa Base58Check
- Na początku znajduje się bajt wersji, który określa rodzaj danych, a po nim ładunek, np. 20-bajtowy skrót klucza publicznego.
- Z tych bajtów oblicza się skrót SHA-256, z wyniku ponownie skrót SHA-256, a pierwsze 4 bajty stanowią sumę kontrolną.
- Suma kontrolna zostaje dołączona na końcu, a całość jest kodowana w Base58. Każdy wiodący bajt
0x00zamienia się w1.
To narzędzie oblicza sumę kontrolną dokładnie z wprowadzonych bajtów. Nie dodaje bajtu wersji automatycznie, więc umieść go na początku danych wejściowych. Przy dekodowaniu ponownie oblicza sumę kontrolną ze wszystkich bajtów oprócz ostatnich 4. Jeśli sumy się zgadzają, otrzymasz bajt wersji i ładunek, a jeśli nie, pojawi się błąd sumy kontrolnej. Przypadkowa literówka przechodzi niezauważona średnio tylko raz na około cztery miliardy prób.
Najczęstsze bajty wersji
| Bajt wersji | Dane | Początek zakodowanego ciągu |
|---|---|---|
0x00 | Adres Bitcoin P2PKH (20-bajtowy HASH160) | 1 |
0x05 | Adres Bitcoin P2SH (20-bajtowy skrót skryptu) | 3 |
0x6F | Adres P2PKH w sieci testowej Bitcoin | m lub n |
0x80 | Klucz prywatny WIF (32 bajty plus 0x01 dla klucza skompresowanego) | 5 albo K / L dla klucza skompresowanego |
Adresy SegWit i Taproot zaczynające się od bc1 korzystają z Bech32, a nie z Base58Check, i nie można ich tutaj zdekodować. Adresy XRP Ledger używają tej samej sumy kontrolnej z alfabetem Ripple: wybierz Ripple w opcji „Alfabet”.
Przykład: od HASH160 do adresu
Znany adres powiązany z blokiem genezy Bitcoina to bajt wersji 00, po którym następuje 20-bajtowy HASH160. Po wprowadzeniu tych bajtów z opcją „Wejście jako” ustawioną na „Hex” i włączoną opcją „Suma kontrolna Base58Check” otrzymuje się dobrze znany adres:
Wejście (Hex) 00 62e907b15cbf27d5425399ebf6f0fb50ebb88f18
Wyjście 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
W kodzie pakiet base58 dla Pythona udostępnia funkcje b58encode_check() i b58decode_check(), a pakiet npm bs58check oferuje encode() i decode().
Specyfikacja
| Alfabet | 1-9 A-Z a-z bez 0 O I l |
|---|---|
| Rozmiar wyniku | Ok. 137% plus 4-bajtowa suma kontrolna |
| Dopełnienie | Brak |
| Standard | Bitcoin Base58Check |
| Rozróżnia wielkość liter | Tak |
Przykłady
| Wejście (UTF-8) | Wyjście |
|---|---|
Hello, World! | gTazoqFvnegwaKM8v1B33sR |
Base64.is | 6XgW4KVJr8DBmZEAeJ |
你好 | DrMzxHL43oWHbW |
Najczęściej zadawane pytania
Dlaczego dekodowanie kończy się błędem sumy kontrolnej?
Czy narzędzie samo dodaje bajt wersji?
00 dla adresu Bitcoin.Czy można zdekodować klucz prywatny WIF?
80, 32-bajtowy klucz oraz, w przypadku kluczy skompresowanych, końcowe 01. Dekodowanie odbywa się lokalnie w przeglądarce, ale mimo to z prawdziwymi kluczami prywatnymi obchodź się ostrożnie.Czy można dekodować adresy bc1?
Nie. Natywne adresy SegWit i Taproot używają Bech32 lub Bech32m, czyli innego kodowania z własną sumą kontrolną. W Bitcoinie Base58Check stosuje się tylko w starszych adresach zaczynających się od 1 lub 3 (m, n lub 2 w sieci testowej).