Så använder du verktyget
- Välj Koda för att skapa en Base58Check-sträng, eller Avkoda för att verifiera en och få tillbaka dess byte.
- För att koda väljer du Hex under Indata som och anger versionsbyten följd av nyttolasten, till exempel 00 och en HASH160 på 20 byte.
- Låt Base58Check-kontrollsumma vara påslaget. Kontrollsumman läggs till vid kodning och verifieras vid avkodning.
- För att avkoda klistrar du in strängen och väljer Hex under Utdata som. Du får versionsbyten och nyttolasten utan kontrollsumman.
Så fungerar Base58Check
- Börja med en versionsbyte som anger vad datan är, följd av nyttolasten, till exempel en hash av en publik nyckel på 20 byte.
- Hasha de här bytena med SHA-256, hasha resultatet med SHA-256 en gång till och behåll de första 4 bytena som kontrollsumma.
- Lägg till kontrollsumman sist och koda alltihop med Base58. Varje inledande
0x00-byte blir en1.
Verktyget beräknar kontrollsumman över exakt de byte du anger. Det lägger inte till någon versionsbyte åt dig, så ta med den i början av indatan. Vid avkodning beräknas kontrollsumman på nytt över allt utom de sista 4 bytena. Om de stämmer överens får du versionsbyten och nyttolasten, annars får du ett kontrollsummefel. Ett slumpmässigt skrivfel slinker bara igenom ungefär en gång på fyra miljarder försök.
Vanliga versionsbyte
| Versionsbyte | Data | Den kodade strängen börjar med |
|---|---|---|
0x00 | Bitcoin-adress av typen P2PKH (HASH160 på 20 byte) | 1 |
0x05 | Bitcoin-adress av typen P2SH (skripthash på 20 byte) | 3 |
0x6F | P2PKH-adress på Bitcoins testnät | m eller n |
0x80 | Privat nyckel i WIF-format (32 byte, plus 0x01 för en komprimerad nyckel) | 5, eller K / L om den är komprimerad |
SegWit- och Taproot-adresser som börjar med bc1 använder Bech32, inte Base58Check, och kan inte avkodas här. Adresser i XRP Ledger använder samma kontrollsumma med Ripple-alfabetet: välj Ripple under Alfabet.
Exempel: från HASH160 till adress
Den välkända adressen som förknippas med Bitcoins genesisblock består av versionsbyten 00 följd av en HASH160 på 20 byte. Med Hex som indata och Base58Check-kontrollsumma påslaget ger den den välbekanta adressen:
Indata (Hex) 00 62e907b15cbf27d5425399ebf6f0fb50ebb88f18
Utdata 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
I programkod har Python-paketet base58 funktionerna b58encode_check() och b58decode_check(), och npm-paketet bs58check har encode() och decode().
Specifikation
| Alfabet | 1-9 A-Z a-z utom 0 O I l |
|---|---|
| Utdatastorlek | Cirka 137 % plus en kontrollsumma på 4 byte |
| Utfyllnad | Ingen |
| Standard | Bitcoin Base58Check |
| Skiftlägeskänslig | Ja |
Exempel
| Indata (UTF-8) | Utdata |
|---|---|
Hello, World! | gTazoqFvnegwaKM8v1B33sR |
Base64.is | 6XgW4KVJr8DBmZEAeJ |
你好 | DrMzxHL43oWHbW |
Vanliga frågor
Varför misslyckas avkodningen med ett kontrollsummefel?
Lägger verktyget till versionsbyten åt mig?
00 för en Bitcoin-adress.Kan jag avkoda en privat nyckel i WIF-format?
80, nyckeln på 32 byte och, för komprimerade nycklar, en avslutande 01. Avkodningen sker lokalt i din webbläsare, men var ändå försiktig med riktiga privata nycklar.Kan jag avkoda bc1-adresser?
Nej. Native SegWit- och Taproot-adresser använder Bech32 eller Bech32m, en annan kodning med en egen kontrollsumma. I Bitcoin används Base58Check bara för äldre adresser som börjar med 1 eller 3 (m, n eller 2 på testnätet).