Jak używać
- Wklej ciąg Base58 w polu „Wejście”. Spacje i podziały wierszy są ignorowane.
- Odczytaj zdekodowane bajty w zapisie szesnastkowym w polu „Wyjście”.
- Skopiuj wynik przyciskiem „Kopiuj” lub kliknij „Zamień wejście z wyjściem”, aby zamienić hex z powrotem na Base58.
Jak Base58 zamienia się w hex
Base58 odczytuje cały ciąg jako jedną dużą liczbę zapisaną 58-znakowym alfabetem Bitcoin, który pomija 0, O, I i l. Konwersja na hex zapisuje tę samą liczbę w systemie szesnastkowym, po dwie cyfry na bajt, więc nic nie zostaje dodane ani utracone.
Bajty zerowe na początku danych nie mają wartości liczbowej, dlatego Base58 zapisuje każdy z nich jako wiodącą 1, czyli pierwszy znak swojego alfabetu. Dekoder zamienia każdą wiodącą 1 z powrotem na bajt 00. Na przykład 115Q dekoduje się do 0000ff, a adres System Program w sieci Solana, czyli trzydzieści dwa znaki 1 z rzędu, dekoduje się do 32 bajtów zerowych. Konwersja odbywa się lokalnie w przeglądarce.
Przykłady: Bitcoin, Solana i IPFS
W poniższym zapisie hex dodano spacje, aby pokazać poszczególne części:
Adres Bitcoin (P2PKH, blok genezy)
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
00 62e907b15cbf27d5425399ebf6f0fb50ebb88f18 c29b7d93
wersja | hash160 (20 bajtów) | suma kontrolna (4 bajty)
Klucz publiczny Solana (program SPL Token)
TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
06ddf6e1d765a193d9cbe146ceeb79ac1cb485ed5f5b37913a8cf5857eff00a9
32 bajty, bez bajtu wersji, bez sumy kontrolnej
IPFS CIDv0
QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG
12 20 9d6c2be50f706953479ab9df2ce3edca90b68053c00b3004b7f0accbe1e8eedf
sha2-256 | długość 32 | skrót
Starsze adresy Bitcoin zaczynają się od 1, ponieważ ich bajt wersji to 00. Adresy P2SH zaczynają się od 3 i dekodują się do wersji 05.
Sumy kontrolne Base58Check zostają w bajtach
Adresy Bitcoin i klucze prywatne WIF używają Base58Check: przed kodowaniem dołącza się cztery bajty sumy kontrolnej, pobrane z podwójnego skrótu SHA-256 danych. Ta strona używa zwykłego Base58, więc suma kontrolna jest dekodowana jak wszystkie inne dane i pojawia się jako ostatnie 8 cyfr hex. Hash160 starszego adresu to 40 cyfr hex między wiodącym 00 a sumą kontrolną.
Aby potwierdzić, że adres nie jest uszkodzony, i otrzymać dane bez sumy kontrolnej, zdekoduj go na stronie Base58Check. Klucze Solana i skróty IPFS nie mają sumy kontrolnej, więc w ich przypadku właściwym wyborem jest zwykły Base58.
Base58 na hex w kodzie
# Python (pip install base58)
import base58
base58.b58decode('115Q').hex() # '0000ff'
// JavaScript (npm install bs58)
import bs58 from 'bs58';
Buffer.from(bs58.decode('115Q')).toString('hex'); // '0000ff'
Najczęściej zadawane pytania
Dlaczego adres Bitcoin dekoduje się do 25 bajtów, a nie do 20?
Starszy adres zawiera 1-bajtową wersję, 20-bajtowy hash160 klucza publicznego i 4-bajtową sumę kontrolną. Zwykły Base58 zwraca wszystkie trzy części, więc wynik ma 50 cyfr hex. Hash160 to wszystko między pierwszym bajtem a czterema ostatnimi.
Dlaczego każda wiodąca jedynka zamienia się w 00?
W Base58 znak 1 oznacza wartość zero. Wiodące bajty zerowe zniknęłyby, gdyby dane traktować jak zwykłą liczbę, dlatego każdy z nich zapisuje się jako 1 i dekoduje z powrotem do bajtu 00.
Dlaczego pojawia się błąd nieprawidłowego znaku?
Jak długi jest klucz publiczny Solana?
Ma dokładnie 32 bajty, czyli 64 cyfry hex. W Base58 to zwykle 43 lub 44 znaki. Klucze zaczynające się od bajtów zerowych mogą być krótsze, co widać na przykładzie adresu System Program.