Slik bruker du verktøyet
- Velg Kode for å lage en Base58Check-streng, eller Dekode for å verifisere en og hente ut bytene.
- For å kode setter du inndata til Hex og skriver inn versjonsbyten etterfulgt av nyttelasten, for eksempel 00 og en HASH160 på 20 byte.
- La Base58Check-kontrollsum være slått på. Kontrollsummen legges til ved koding og verifiseres ved dekoding.
- For å dekode limer du inn strengen og setter utdata til Hex. Du får versjonsbyten og nyttelasten uten kontrollsummen.
Slik fungerer Base58Check
- Begynn med en versjonsbyte som angir hva dataene er, etterfulgt av nyttelasten, for eksempel en hash av en offentlig nøkkel på 20 byte.
- Hash disse bytene med SHA-256, hash resultatet med SHA-256 én gang til, og behold de første 4 bytene som kontrollsum.
- Legg til kontrollsummen og kod alt med Base58. Hver innledende
0x00-byte blir til1.
Dette verktøyet beregner kontrollsummen over nøyaktig de bytene du skriver inn. Det legger ikke til noen versjonsbyte for deg, så den må stå først i inndataene. Ved dekoding beregnes kontrollsummen på nytt over alt unntatt de siste 4 bytene. Stemmer de overens, får du versjonsbyten og nyttelasten; hvis ikke får du en kontrollsumfeil. En tilfeldig skrivefeil slipper gjennom bare omtrent én gang av fire milliarder forsøk.
Vanlige versjonsbyter
| Versjonsbyte | Data | Kodet streng begynner med |
|---|---|---|
0x00 | Bitcoin P2PKH-adresse (HASH160 på 20 byte) | 1 |
0x05 | Bitcoin P2SH-adresse (skripthash på 20 byte) | 3 |
0x6F | Bitcoin P2PKH-adresse på testnett | m eller n |
0x80 | Privat WIF-nøkkel (32 byte, pluss 0x01 for en komprimert nøkkel) | 5, eller K / L hvis komprimert |
SegWit- og Taproot-adresser som begynner med bc1, bruker Bech32, ikke Base58Check, og kan ikke dekodes her. Adresser i XRP Ledger bruker samme kontrollsum med Ripple-alfabetet: Velg Ripple under Alfabet.
Eksempel: fra HASH160 til adresse
Den velkjente adressen som er knyttet til genesis-blokken i Bitcoin, er versjonsbyte 00 etterfulgt av en HASH160 på 20 byte. Skrevet inn som Hex-inndata med Base58Check-kontrollsum slått på gir den den kjente adressen:
Inndata (Hex) 00 62e907b15cbf27d5425399ebf6f0fb50ebb88f18
Utdata 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
I kode har Python-pakken base58 funksjonene b58encode_check() og b58decode_check(), og npm-pakken bs58check tilbyr encode() og decode().
Spesifikasjon
| Alfabet | 1-9 A-Z a-z uten 0 O I l |
|---|---|
| Utdatastørrelse | Omtrent 137 % pluss en kontrollsum på 4 byte |
| Utfylling | Ingen |
| Standard | Bitcoin Base58Check |
| Skiller store og små bokstaver | Ja |
Eksempler
| Inndata (UTF-8) | Utdata |
|---|---|
Hello, World! | gTazoqFvnegwaKM8v1B33sR |
Base64.is | 6XgW4KVJr8DBmZEAeJ |
你好 | DrMzxHL43oWHbW |
Ofte stilte spørsmål
Hvorfor feiler dekodingen med en kontrollsumfeil?
Legger verktøyet til versjonsbyten for meg?
00 for en Bitcoin-adresse.Kan jeg dekode en privat WIF-nøkkel?
80, nøkkelen på 32 byte og, for komprimerte nøkler, en avsluttende 01. Dekodingen skjer lokalt i nettleseren, men vær likevel forsiktig med ekte private nøkler.Kan jeg dekode bc1-adresser?
Nei. Native SegWit- og Taproot-adresser bruker Bech32 eller Bech32m, en annen koding med sin egen kontrollsum. I Bitcoin brukes Base58Check bare for eldre adresser som begynner med 1 eller 3 (m, n eller 2 på testnett).