Base58Check (The Legacy Standard)
Base58Check (The Legacy Standard)
Base58Check was the first address encoding standard created for Bitcoin. It was specifically designed to be easy for humans to read and type while providing a robust defense against transcription errors.
1. Why Base58?
Standard Base64 encoding includes characters that look identical in many fonts. To prevent user error, Satoshi created Base58 by removing:
-
0 (Number Zero)
-
O (Capital O)
-
I (Capital I)
-
l (Lowercase L)
-
+ and / (Non-alphanumeric characters)
The result is a set of 58 characters that are distinct and easy to tell apart even on small screens or printed paper.
2. The "Check" in Base58Check
An address is not just a base58 string. It includes a mathematical Checksum.
-
Payload: The version byte + the HASH160.
-
Double SHA256: Hash the payload twice.
-
Truncate: Take the first 4 bytes of that hash.
-
Append: Attach those 4 bytes to the end of the payload.
-
Encode: Convert the whole thing to Base58.
3. Typo Protection
Because of those 4 checksum bytes, if you change a single character in the address, the math will no longer "Check Out."
-
A wallet will recognize that the checksum doesn't match the payload.
-
It will refuse to send the transaction, saving the user from losing funds due to a typo.
4. Version Prefixes
The first byte of the payload determines the starting character of the address.
-
0x00: Results in an address starting with 1 (P2PKH).
-
0x05: Results in an address starting with 3 (P2SH).
| Component | Size (Bytes) | Description |
|---|---|---|
| Version | 1 | Identifies the network and type. |
| Payload | 20 | The Public Key Hash (HASH160). |
| Checksum | 4 | Error detection code. |
| Total | 25 | Raw data before encoding. |
In the next section, we will look at the modern Bech32 standard.
TeachMeBitcoin is an ad-free, open-source educational repository curated by a passionate team of Bitcoin researchers and educators for public benefit. If you found our articles helpful, please consider supporting our hosting and ongoing content updates with a clean donation: