Come si usa
- Incolla i byte esadecimali nel campo di input. Sono accettati spazi, due punti e il prefisso 0x.
- Leggi nell’output il risultato in Base58.
- Copialo, oppure premi Scambia input e output per riconvertire il Base58 in esadecimale.
Come l’esadecimale diventa Base58
Le cifre esadecimali vengono prima trasformate in byte, due cifre per byte, quindi l’input deve avere un numero pari di cifre. I byte vengono poi letti come un unico numero big-endian e riscritti in base 58 con l’alfabeto Bitcoin. Ogni byte 00 iniziale viene scritto come 1, ed è per questo che 0000ff diventa 115Q mentre ff da solo diventa 5Q.
Base58 richiede circa 1,37 caratteri per byte, quindi 64 cifre esadecimali (32 byte) si riducono a 43 o 44 caratteri. L’alfabeto non contiene 0, O, I, l, + né /, quindi il risultato è facile da leggere ad alta voce, si seleziona con un doppio clic e si inserisce negli URL. Tutto viene calcolato nel tuo browser.
Costruire identificatori Solana e IPFS
- Solana: un indirizzo è la chiave pubblica Ed25519 di 32 byte in Base58, senza prefisso e senza checksum. Incolla la chiave esadecimale di 64 cifre per ottenere l’indirizzo.
- IPFS CIDv0: un CIDv0 è un multihash sha2-256 in Base58. Metti
1220davanti al digest di 64 cifre e ottieni una stringa di 46 caratteri che inizia conQm. Il digest deve essere quello calcolato da IPFS per il blocco codificato, che non coincide con lo SHA-256 del file originale.
1220 9d6c2be50f706953479ab9df2ce3edca90b68053c00b3004b7f0accbe1e8eedf
QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG
Gli indirizzi Bitcoin richiedono un checksum
Un hash160 da solo non è un indirizzo. Un indirizzo Bitcoin legacy è il Base58Check del byte di versione 00 seguito dall’hash160 di 20 byte, e Base58Check aggiunge un checksum di 4 byte ricavato da un doppio SHA-256 prima della codifica. Codificando 00 e l’hash160 con Base58 semplice si ottiene una stringa più corta senza checksum, che i wallet rifiutano.
Usa invece la pagina Base58Check: imposta l’input su esadecimale, inserisci 00 seguito dall’hash160 e il checksum viene aggiunto automaticamente. Se il tuo esadecimale termina già con il checksum corretto, questa pagina produce lo stesso indirizzo.
0062e907b15cbf27d5425399ebf6f0fb50ebb88f18 (Base58Check)
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
Da esadecimale a Base58 nel codice
# Python (installa con pip install base58)
import base58
base58.b58encode(bytes.fromhex('0000ff')) # b'115Q'
// JavaScript (installa con npm install bs58)
import bs58 from 'bs58';
bs58.encode(Buffer.from('0000ff', 'hex')); // '115Q'
Domande frequenti
Come si trasforma un hash160 in un indirizzo Bitcoin?
Perché il risultato inizia con diversi caratteri 1?
Il tuo esadecimale inizia con lo stesso numero di byte 00. Base58 li conserva come 1 iniziali, in modo che vengano ripristinati quando la stringa viene decodificata.
Perché il mio input esadecimale viene rifiutato?
L’esadecimale richiede un numero pari di cifre e solo i caratteri 0-9 e a-f, in maiuscolo o in minuscolo. Spazi, due punti e il prefisso 0x vengono rimossi automaticamente; qualsiasi altra cosa, come una lettera g di troppo o una cifra mancante, è un errore.