Zo gebruik je het
- Plak de Base58-string in het invoerveld. Spaties en regelafbrekingen worden genegeerd.
- Lees de gedecodeerde bytes als hexadecimaal af in de uitvoer.
- Kopieer de hex, of klik op Invoer en uitvoer omwisselen om hex weer om te zetten naar Base58.
Hoe Base58 hex wordt
Base58 leest de hele string als één groot getal, geschreven met het Bitcoin-alfabet van 58 tekens, waarin 0, O, I en l ontbreken. Bij het omzetten naar hex wordt hetzelfde getal in grondtal 16 geschreven, twee hexcijfers per byte, zodat er niets bijkomt of verloren gaat.
Nulbytes aan het begin van de gegevens hebben geen getalswaarde, dus Base58 legt elk ervan vast als een voorloop-1, het eerste teken van het alfabet. De decoder zet elke voorloop-1 weer om in een 00-byte. Zo decodeert 115Q naar 0000ff, en het adres van het Solana System Program, tweeëndertig keer het teken 1 achter elkaar, decodeert naar 32 nulbytes. De conversie gebeurt lokaal in je browser.
Voorbeelden voor Bitcoin, Solana en IPFS
In de hex hieronder zijn spaties toegevoegd om de onderdelen zichtbaar te maken:
Bitcoin-adres (P2PKH, genesisblok)
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
00 62e907b15cbf27d5425399ebf6f0fb50ebb88f18 c29b7d93
versie | hash160 (20 bytes) | controlesom (4 bytes)
Publieke Solana-sleutel (SPL Token-programma)
TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
06ddf6e1d765a193d9cbe146ceeb79ac1cb485ed5f5b37913a8cf5857eff00a9
32 bytes, geen versiebyte, geen controlesom
IPFS CIDv0
QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG
12 20 9d6c2be50f706953479ab9df2ce3edca90b68053c00b3004b7f0accbe1e8eedf
sha2-256 | lengte 32 | digest
Legacy Bitcoin-adressen beginnen met 1 omdat hun versiebyte 00 is. P2SH-adressen beginnen met 3 en decoderen naar versie 05.
Base58Check-controlesommen blijven in de bytes
Bitcoin-adressen en WIF-privésleutels gebruiken Base58Check: vóór het coderen worden vier controlesombytes toegevoegd, afkomstig van een dubbele SHA-256 van de payload. Deze pagina gebruikt gewone Base58, dus de controlesom wordt gedecodeerd zoals alle andere gegevens en verschijnt als de laatste 8 hexcijfers. De hash160 van een legacy-adres bestaat uit de 40 hexcijfers tussen de voorloop-00 en de controlesom.
Om te controleren of een adres intact is en de payload zonder controlesom te krijgen, decodeer je het op de pagina Base58Check. Solana-sleutels en IPFS-hashes hebben geen controlesom, dus daarvoor is gewone Base58 de juiste keuze.
Base58 naar hex in code
# Python (pip install base58)
import base58
base58.b58decode('115Q').hex() # '0000ff'
// JavaScript (installeren met npm install bs58)
import bs58 from 'bs58';
Buffer.from(bs58.decode('115Q')).toString('hex'); // '0000ff'
Veelgestelde vragen
Waarom decodeert een Bitcoin-adres naar 25 bytes in plaats van 20?
Een legacy-adres bevat een versie van 1 byte, de hash160 van 20 bytes van de publieke sleutel en een controlesom van 4 bytes. Gewone Base58 geeft alle drie terug, dus je krijgt 50 hexcijfers. De hash160 is alles tussen de eerste byte en de laatste vier.
Waarom wordt elke 1 aan het begin een 00?
In Base58 staat het teken 1 voor de waarde nul. Voorloopnulbytes zouden verdwijnen als de gegevens als gewoon getal werden behandeld, dus elke voorloopnulbyte wordt als een 1 geschreven en bij het decoderen weer een 00-byte.
Waarom krijg ik een foutmelding over een ongeldig teken?
Hoe lang is een publieke Solana-sleutel?
Precies 32 bytes, oftewel 64 hexcijfers. In Base58 zijn dat meestal 43 of 44 tekens. Sleutels die met nulbytes beginnen, kunnen korter zijn, zoals het adres van het System Program laat zien.