Kodare och avkodare för Base58Check

Lägg till en kontrollsumma på 4 byte från dubbel SHA-256 och koda till Base58, eller avkoda en Base58Check-sträng, verifiera kontrollsumman och läs ut versionsbyten och nyttolasten.

Körs helt i din webbläsare. Inget laddas upp.

Så använder du verktyget

  1. Välj Koda för att skapa en Base58Check-sträng, eller Avkoda för att verifiera en och få tillbaka dess byte.
  2. 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.
  3. Låt Base58Check-kontrollsumma vara påslaget. Kontrollsumman läggs till vid kodning och verifieras vid avkodning.
  4. 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

  1. 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.
  2. 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.
  3. Lägg till kontrollsumman sist och koda alltihop med Base58. Varje inledande 0x00-byte blir en 1.

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

VersionsbyteDataDen kodade strängen börjar med
0x00Bitcoin-adress av typen P2PKH (HASH160 på 20 byte)1
0x05Bitcoin-adress av typen P2SH (skripthash på 20 byte)3
0x6FP2PKH-adress på Bitcoins testnätm eller n
0x80Privat 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

Alfabet1-9 A-Z a-z utom 0 O I l
UtdatastorlekCirka 137 % plus en kontrollsumma på 4 byte
UtfyllnadIngen
StandardBitcoin Base58Check
SkiftlägeskänsligJa

Exempel

Indata (UTF-8)Utdata
Hello, World!gTazoqFvnegwaKM8v1B33sR
Base64.is6XgW4KVJr8DBmZEAeJ
你好DrMzxHL43oWHbW

Vanliga frågor

Varför misslyckas avkodningen med ett kontrollsummefel?
Antingen har ett tecken skrivits fel, fel alfabet är valt eller så är strängen vanlig Base58 utan kontrollsumma. Vanliga Base58-strängar, som Solana-adresser och IPFS-CID:er, ska avkodas på sidan Base58.
Lägger verktyget till versionsbyten åt mig?
Nej. Kontrollsumman beräknas över de byte du anger, så versionsbyten måste vara en del av indatan. Välj Hex under Indata som och skriv den först, till exempel 00 för en Bitcoin-adress.
Kan jag avkoda en privat nyckel i WIF-format?
Ja. Klistra in den på fliken Avkoda och välj Hex som utdata. Du får 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).