Zo gebruik je het
- Kies Coderen om een Base58Check-string te maken, of Decoderen om er een te controleren en de bytes terug te halen.
- Zet bij het coderen Invoer als op Hex en voer de versiebyte in, gevolgd door de payload, bijvoorbeeld 00 en een HASH160 van 20 bytes.
- Laat de optie Base58Check-controlesom aan staan. De controlesom wordt bij het coderen toegevoegd en bij het decoderen gecontroleerd.
- Plak bij het decoderen de string en zet Uitvoer als op Hex. Je krijgt de versiebyte en de payload, zonder de controlesom.
Zo werkt Base58Check
- Begin met een versiebyte die aangeeft wat voor gegevens het zijn, gevolgd door de payload, bijvoorbeeld een hash van een publieke sleutel van 20 bytes.
- Hash deze bytes met SHA-256, hash het resultaat nog een keer met SHA-256 en bewaar de eerste 4 bytes als controlesom.
- Voeg de controlesom toe en codeer alles met Base58. Elke voorloopbyte
0x00wordt een1.
Deze tool berekent de controlesom over precies de bytes die je invoert. Er wordt geen versiebyte voor je toegevoegd, dus zet die zelf aan het begin van je invoer. Bij het decoderen wordt de controlesom opnieuw berekend over alles behalve de laatste 4 bytes. Komen ze overeen, dan krijg je de versiebyte en de payload; zo niet, dan krijg je een controlesomfout. Een willekeurige typefout glipt er maar ongeveer één keer op de vier miljard pogingen doorheen.
Veelgebruikte versiebytes
| Versiebyte | Gegevens | Gecodeerde string begint met |
|---|---|---|
0x00 | Bitcoin-P2PKH-adres (HASH160 van 20 bytes) | 1 |
0x05 | Bitcoin-P2SH-adres (scripthash van 20 bytes) | 3 |
0x6F | P2PKH-adres op het Bitcoin-testnet | m of n |
0x80 | WIF-privésleutel (32 bytes, plus 0x01 voor een gecomprimeerde sleutel) | 5, of K / L bij compressie |
SegWit- en Taproot-adressen die met bc1 beginnen, gebruiken Bech32 en geen Base58Check, en kunnen hier niet worden gedecodeerd. Adressen op de XRP Ledger gebruiken dezelfde controlesom met het Ripple-alfabet: kies Ripple bij de optie Alfabet.
Voorbeeld: van HASH160 naar adres
Het bekende adres dat bij het genesisblok van Bitcoin hoort, bestaat uit versiebyte 00 gevolgd door een HASH160 van 20 bytes. Als je dit als Hex-invoer opgeeft met Base58Check aan, krijg je het vertrouwde adres:
Invoer (Hex) 00 62e907b15cbf27d5425399ebf6f0fb50ebb88f18
Uitvoer 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
In code biedt het Python-pakket base58 de functies b58encode_check() en b58decode_check(), en het npm-pakket bs58check heeft encode() en decode().
Specificatie
| Alfabet | 1-9 A-Z a-z zonder 0 O I l |
|---|---|
| Uitvoergrootte | Ongeveer 137% plus een controlesom van 4 bytes |
| Opvulling | Geen |
| Standaard | Bitcoin Base58Check |
| Hoofdlettergevoelig | Ja |
Voorbeelden
| Invoer (UTF-8) | Uitvoer |
|---|---|
Hello, World! | gTazoqFvnegwaKM8v1B33sR |
Base64.is | 6XgW4KVJr8DBmZEAeJ |
你好 | DrMzxHL43oWHbW |
Veelgestelde vragen
Waarom mislukt het decoderen met een controlesomfout?
Voegt de tool de versiebyte voor me toe?
00 voor een Bitcoin-adres.Kan ik een WIF-privésleutel decoderen?
80, de sleutel van 32 bytes en bij gecomprimeerde sleutels een afsluitende 01. Het decoderen gebeurt lokaal in je browser, maar ga toch voorzichtig om met echte privésleutels.Kan ik bc1-adressen decoderen?
Nee. Native SegWit- en Taproot-adressen gebruiken Bech32 of Bech32m, een andere codering met een eigen controlesom. Binnen Bitcoin wordt Base58Check alleen gebruikt voor legacy-adressen die met 1 of 3 beginnen (m, n of 2 op het testnet).